
Software
Take your clone from the icinga-api.git to get a fresh branch
# git clone git://git.icinga.org/icinga-api.git
or download the software using https://git.icinga.org/index?p=icinga-api.git;a=snapshot;h=refs/heads/master;sf=tgz.
The installation
Unpack the software and move it to the Icinga source code tree
# tar xzvf icinga-api-(version).tar.gz # mv icinga-api/* /usr/src/icinga-core/module/icinga-api
Recompile the code (you may have to rerun ./configure again).
# make all # make install
![]() |
Note |
|---|---|
|
If you don't have Icinga yet please follow the instructions given in the "quickstart-idoutils" documentation. |
Configuration
Configuration is simply done by using an associative array.
$idoConfig = array (
'type' => '<Type of database>',
'host' => '<Database hostname>',
'database' => '<Databasename>',
'user' => '<Username>',
'password' => '<password>',
'persistent' => <true | false>,
'table_prefix' => '<table prefix>',
);
Example:
$idoConfig = array (
'type' => 'mysql',
'host' => 'localhost',
'database' => 'ido',
'user' => 'idouser',
'password' => 'idopassword',
'persistent' => true,
'table_prefix' => 'icinga_',
);
Fetching data
hostnames and corresponding states
Create an instance of class IcingaApi:
$api = IcingaApi::getConnection(IcingaApi::CONNECTION_IDO, $idoConfig);
Create your search:
$apiRes = $api->createSearch() ->setSearchTarget(IcingaApi::TARGET_HOST) ->setResultColumns(array(’HOST_NAME’, ‘HOST_CURRENT_STATE’)) ->fetch();
By using setSearchFilter() you can define filters to narrow down the result set:
$apiRes = $api->createSearch() ->setSearchTarget(IcingaApi::TARGET_HOST) ->setResultColumns(array(’HOST_NAME’, ‘HOST_CURRENT_STATE’)) ->setSearchFilter(HOST_NAME, ‘Switch%’, IcingaApi::MATCH_LIKE) ->fetch();
Processing results
foreach($apiRes as $apiHandle){
echo ‘Host ‘.$apiHandle->HOST_NAME.’ has state ‘.$apiHandle->HOST_CURRENT_STATE.’<br />’;
}
Output without filter:
Host localhost has state 0 Host MySql has state 0 Host router-01 has state 0 Host windows100 has state 0 Host Apache_01 has state 0
Output with filter:
Host switch70 has the current state 0 Host switch71 has the current state 0 Host switch72 has the current state 0 Host switch73 has the current state 0 Host switch74 has the current state 0 Host switch75 has the current state 0 Host switch76 has the current state 0 Host switch77 has the current state 0
Complete code without use of filters
<?
// Path to icinga api file
$apiFile = ‘icinga-api/IcingaApi.php’;
// Database connection
$idoConfig = array (
'type' => 'mysql',
'host' => 'localhost',
'database' => 'ido',
'user' => 'idouser',
'password' => 'idopassword',
'persistent' => true,
'table_prefix' => 'icinga_',
);
// Include required files
require_once($apiFile);
// Instance the class
$api = IcingaApi::getConnection(IcingaApi::CONNECTION_IDO, $idoConfig);
// Create search
$apiRes = $api->createSearch()
->setSearchTarget(IcingaApi::TARGET_HOST)
->setResultColumns(array('HOST_NAME', 'HOST_CURRENT_STATE'))
->fetch();
// Create output
foreach($apiRes as $apiHandle){
echo 'Host '.$apiHandle->HOST_NAME.' has the current state '.$apiHandle->HOST_CURRENT_STATE.'<br />';
}
?>
Please have a look at the git repository for further information.
© 2009-2010 Icinga Development Team, http://www.icinga.org