Icinga

Installation und Benutzung der Icinga API

  1. Software

    Klonen Sie von icinga-api.git, um einen neuen Branch zu bekommen

     # git clone git://git.icinga.org/icinga-api.git

    oder laden Sie die Software von https://git.icinga.org/index?p=icinga-api.git;a=snapshot;h=refs/heads/master;sf=tgz.

  2. Die Installation

    Entpacken Sie die Software und verschieben Sie das Verzeichnis in die Icinga-Sourcecode-Struktur

     # tar xzvf icinga-api-(version).tar.gz
     # mv icinga-api/* /usr/src/icinga-core/module/icinga-api

    Rekompilieren Sie den Code (ggf. müssen Sie erneut ./configure ausführen).

     # make all
     # make install
    [Anmerkung] Anmerkung

    Falls Sie noch kein Icinga haben, dann folgen Sie den Anweisungen in der "quickstart-idoutils" Dokumentation.

  3. Konfiguration

    Die Konfiguration besteht aus einem assoziativen Array.

     $idoConfig = array (
        'type'         => '<Type of database>',
        'host'         => '<Database hostname>', 
        'database'     => '<Databasename>',
        'user'         => '<Username>',
        'password'     => '<password>',
        'persistent'   => <true | false>,
        'table_prefix' => '<table prefix>', 
     );

    Beispiel:

     $idoConfig = array (
        'type'         => 'mysql',
        'host'         => 'localhost',
        'database'     => 'ido',
        'user'         => 'idouser',
        'password'     => 'idopassword',
        'persistent'   => true,
        'table_prefix' => 'icinga_',
     );
  4. Datenermittlung

    Host-Namen und zugehörige Zustände

    Erzeugen Sie eine Instant der Klasse IcingaApi:

     $api = IcingaApi::getConnection(IcingaApi::CONNECTION_IDO, $idoConfig);

    Erzeugen Sie die Suchkriterien:

     $apiRes = $api->createSearch()
     ->setSearchTarget(IcingaApi::TARGET_HOST)
     ->setResultColumns(array(’HOST_NAME’, ‘HOST_CURRENT_STATE’))
     ->fetch();

    Mit Hilfe von setSearchFilter() können Sie Filter benutzen, um die Suche einzuschränken:

     $apiRes = $api->createSearch()
     ->setSearchTarget(IcingaApi::TARGET_HOST)
     ->setResultColumns(array(’HOST_NAME’, ‘HOST_CURRENT_STATE’))
     ->setSearchFilter(HOST_NAME, ‘Switch%’, IcingaApi::MATCH_LIKE)
     ->fetch();
  5. Verarbeiten der Ergebnisse

     foreach($apiRes as $apiHandle){
        echo ‘Host ‘.$apiHandle->HOST_NAME.’ has state ‘.$apiHandle->HOST_CURRENT_STATE.’<br />’;
     }

    Ausgabe ohne 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

    Ausgabe mit 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
  6. Kompletter Code ohne die Nutzung von Filtern

     <?
     // 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 />';
     }
     ?>

    Für nähere Informationen werfen Sie bitte einen Blick in das git repository.