Icinga

Integration von PNP4Nagios in das Icinga Web Frontend

Mit Hilfe dieser Anleitung können Sie PNP4Nagios in das Icinga Web Frontend integrieren. Wenn Sie PNP4Nagios in das Icinga Classic UI integrieren möchten lesen Sie bitte die PNP4Nagios Dokumentation.

Abbildung 6.25. PNP4Nagios integriert in Icinga Web

PNP4Nagios integriert in Icinga Web


Installieren von PNP4Nagios

  1. Installieren Sie PNP4Nagios wie in der PNP4Nagios Dokumentation beschrieben.

  2. Passen Sie die PNP4Nagios Konfiguration auf Ihre Icinga Konfiguration an. Wahrscheinlich müssen Sie hier ändern:

    #> vi npcd.cfg
        user = icinga
        group = icinga
        log_file = /var/log/icinga/npcd.log
        perfdata_spool_dir = /var/icinga/spool/
        perfdata_file = /var/icinga/perfdata.dump

    #> vi process_perfdata.cfg
    LOG_FILE = /var/log/icinga/perfdata.log

    #> vi config.php 
    $conf['nagios_base'] = "/icinga/cgi-bin";

Erstellen Sie die Konfiguration um die PNP4Nagios Host-Seiten in das Icinga Web zu integrieren

  1. Erstellen einer neuen Grid Ansicht:

    Bitte erstellen Sie eine Kopie von icinga-host-template.xml in app/modules/Cronks/data/xml/grid unter Ihrem icinga-web Installationspfad:

    #> cp /usr/share/icinga-web/app/modules/Cronks/data/xml/grid/icinga-host-template.xml /usr/share/icinga-web/app/modules/Cronks/data/xml/grid/icinga-my-host-template.xml

    In der neuen Datei legen wir eine zusätzliche Feld- (field) Definition an:

    <field name="pnp4nagios_host_link">
                <!-- datasource maps a data field from api call -->
                <datasource>
                    <parameter name="field">HOST_NAME</parameter>
                </datasource>
    
                <display>
                    <parameter name="visible">true</parameter>
                    <parameter name="label">Perfdata</parameter>
                    <parameter name="width">55</parameter>
    
                    <parameter name="Ext.grid.Column">
                            <parameter name="menuDisabled">true</parameter>
                            <parameter name="fixed">true</parameter>
                    </parameter>
    
                    <parameter name="jsFunc">
                           <!-- fnuction to display column with icon in host status grid view -->
                            <parameter>
                                    <parameter name="namespace">Cronk.grid.ColumnRenderer</parameter>
                                    <parameter name="function">columnImage</parameter>
                                    <parameter name="type">renderer</parameter>
    
                                    <parameter name="arguments">
                                                            <parameter name="image">images/icons/application_view_gallery.png</parameter>
                                                            <parameter name="css">x-icinga-grid-link</parameter>
                                                            <parameter name="attr">
                                                                    <parameter name="qtip">Show host perfdata for this host</parameter>
                                                            </parameter>
                                    </parameter>
                            </parameter>
    
                            <!-- create cell click event for the previously defined column -->
                            <parameter>
                                    <parameter name="namespace">Cronk.grid.IcingaColumnRenderer</parameter>
                                    <parameter name="function">iFrameCronk</parameter>
                                    <parameter name="type">cellclick</parameter>
                                    <parameter name="arguments">
                                            <parameter name="title">Host perfdata for {host_name}</parameter>
                                            <parameter name="url"><![CDATA[/pnp4nagios/index.php/graph?host={host_name}&srv=_HOST_]]></parameter>
                                            <parameter name="activateOnClick">true</parameter>
                                    </parameter>
                            </parameter>
                    </parameter>
               </display>
    
                <filter>
                   <parameter name="enabled">false</parameter>
                </filter>
    
                <order>
                    <parameter name="enabled">false</parameter>
               </order>
            </field>
  2. Anlegen einer neuen Grid-Ansicht im "Data" Cronk-Container

    Editieren von cronks.xml im Unterverzeichnis app/modules/Cronks/config/ unter Icinga Web und hinzufügen von:

    <ae:parameter name="gridMyServiceView">
        <ae:parameter name="module">Cronks</ae:parameter>
        <ae:parameter name="action">System.ViewProc</ae:parameter>
        <ae:parameter name="hide">false</ae:parameter>
        <ae:parameter name="description">Viewing service status in a grid including perfdata link</ae:parameter>
        <ae:parameter name="name">MyServiceStatus</ae:parameter>
        <ae:parameter name="categories">data</ae:parameter>
        <ae:parameter name="ae:parameter">
            <ae:parameter name="template">icinga-my-service-template</ae:parameter>
        </ae:parameter>
    </ae:parameter>

Integrieren von PNP4Nagios in Icinga Web Serviceansichten

  1. Erstellen einer neuen Grid- Ansicht

    Kopieren Sie das Standardtemplate "icinga-service-template.xml" von app/modules/Cronks/data/xml/grid in Ihren Icinga Web- Installationspfad:

    #> cp /usr/share/icinga-web/app/modules/Cronks/data/xml/grid/icinga-my-service-template.xml /usr/share/icinga-web/app/modules/Cronks/data/xml/grid/icinga-my-service-template.xml

    In der neuen Datei legen wir eine zusätzliche Feld- (field) Definition an::

    <field name="pnp4nagios_service_link">
                <!-- datasource maps a data field from api call -->
                <datasource>
                    <parameter name="field">SERVICE_NAME</parameter>
                </datasource>
    
                <display>
                    <parameter name="visible">true</parameter>
                    <parameter name="label">Perfdata</parameter>
                    <parameter name="width">55</parameter>
    
                    <parameter name="Ext.grid.Column">
                            <parameter name="menuDisabled">true</parameter>
                            <parameter name="fixed">true</parameter>
                    </parameter>
    
                    <parameter name="jsFunc">
                            <!-- fnuction to display column with icon in host status grid view -->
                            <parameter>
                                    <parameter name="namespace">Cronk.grid.ColumnRenderer</parameter>
                                    <parameter name="function">columnImage</parameter>
                                    <parameter name="type">renderer</parameter>
    
                                    <parameter name="arguments">
                                                            <parameter name="image">images/icons/application_view_gallery.png</parameter>
                                                            <parameter name="css">x-icinga-grid-link</parameter>
                                                            <parameter name="attr">
                                                                    <parameter name="qtip">Show host perfdata for this service</parameter>
                                                            </parameter>
                                    </parameter>
                            </parameter>
    
                            <!-- create cell click event for the previously defined column -->
                            <parameter>
                                    <parameter name="namespace">Cronk.grid.IcingaColumnRenderer</parameter>
                                    <parameter name="function">iFrameCronk</parameter>
                                    <parameter name="type">cellclick</parameter>
                                    <parameter name="arguments">
                                            <parameter name="title">Service perfdata for {service_name} on {host_name}</parameter>
                                            <parameter name="url"><![CDATA[/pnp4nagios/index.php/graph?host={host_name}&srv={service_name}]]></parameter>
                                            <parameter name="activateOnClick">true</parameter>
                                    </parameter>
                            </parameter>
                    </parameter>
                </display>
    
                <filter>
                    <parameter name="enabled">false</parameter>
                </filter>
    
                <order>
                    <parameter name="enabled">false</parameter>
                </order>
            </field>
  2. Anlegen einer neuen Grid-Ansicht im "Data" Cronk-Container

    Editieren von cronks.xml im Unterverzeichnis app/modules/Cronks/config/ unter Icinga Web und hinzufügen von:

    <ae:parameter name="gridMyServiceView">
        <ae:parameter name="module">Cronks</ae:parameter>
        <ae:parameter name="action">System.ViewProc</ae:parameter>
        <ae:parameter name="hide">false</ae:parameter>
        <ae:parameter name="description">Viewing service status in a grid including perfdata link</ae:parameter>
        <ae:parameter name="name">MyServiceStatus</ae:parameter>
        <ae:parameter name="categories">data</ae:parameter>
        <ae:parameter name="ae:parameter">
            <ae:parameter name="template">icinga-my-service-template</ae:parameter>
        </ae:parameter>
    </ae:parameter>
  3. Verwenden der neuen Grid-Ansicht als Standard- Serviceansicht

    Bitte sichern Sie zuerst Ihre orginale Ansicht:

    ># cp data/xml/grid/icinga-service-template.xml data/xml/grid/icinga-service-template.bak

    dann

    ># cp data/xml/grid/icinga-my-service-template.xml data/xml/grid/icinga-service-template.xml

    Leeren Sie den Cache wie unten beschrieben. Die Performancegraphen sind nun in Ihren "serviceStatus"- Cronk integriert!

[Anmerkung] Anmerkung

Bitte denken Sie daran, wenn Sie eine *.xml-Datei editieren, müssen Sie danach den Cache bereinigen!

rm -f app/cache/config/*.php

oder

/icinga-web/bin/clearcache.sh

Das war es auch schon, Sie sind fertig!