Icinga

6.8. Integration von PNP4Nagios in das Icinga-Web Frontend

6.8.1. Installieren von PNP4Nagios
6.8.2. Template-Extensions
6.8.3. Erstellen Sie die Konfiguration, um die PNP4Nagios Host-Seiten in das Icinga-Web zu integrieren
6.8.4. Integrieren von PNP4Nagios in Icinga-Web-Serviceansichten
6.8.5. Löschen des Cache

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.32. PNP4Nagios integriert in Icinga-Web

PNP4Nagios integriert in Icinga-Web


6.8.1. 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
        XML_ENC = ISO-8859-1   # falls Sie Probleme mit Umlauten haben

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

    Stellen Sie sicher, dass Sie bestehende Pfade benutzen, legen Sie sie an, falls notwendig, und/oder passen Sie die Angaben an Ihre Distribution an.

    Bitte überprüfen Sie, dass die command-Definitionen für "process-host-perfdata-file" und "process-service-perfdata-file" (wahrscheinlich in etc/objects/commands.cfg) auf das gleiche Zielverzeichnis zeigen, das in perfdata_spool_dir angegeben wurde.

6.8.2. Template-Extensions

Seit Version 1.5 können die Grid-Templates unberührt bleiben, weil wir XML-Extensions integriert haben, um Grid-Template mit einfachen Schnipseln anzupassen. Die PNP-Integration wurde mit diesen Extensions upgrade-sicher gemacht.

Ausschnitt aus INSTALL in contrib/PNP_Integration/

#> cat contrib/PNP_Integration/INSTALL
    ************************
    * INSTALLATION
    ************************

    * To install this addon, simply copy both xml files under templateExtensions
    * to your icinga-webs app/modules/Cronks/data/xml/extensions folder
    * and clear the app/cache/CronkTemplates folder
    * To remove it, just delete the extension files and clear the cache folder again

Install Script

 $> cd etc/contrib/PNP_Integration
 $> sh install.sh
[Anmerkung] Anmerkung

Bitte beachten Sie, dass Sie das Addon nach einem Icinga-Web-Upgrade erneut installieren müssen.

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

[Anmerkung] Anmerkung

Die folgenden Zeilen beschreiben die manuelle Integration für Version 1.4 und früher

  1. Erstellen einer neuen Host-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/local/icinga-web/app/modules/Cronks/data/xml/grid/icinga-host-template.xml \
        /usr/local/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">
                        <!-- function 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:

    <cronk name="gridMyHostView">
        <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 host status in a grid including perfdata link</ae:parameter>
        <ae:parameter name="name">MyHostStatus</ae:parameter>
        <ae:parameter name="image">cronks.Stats</ae:parameter>
        <ae:parameter name="categories">data</ae:parameter>
        <ae:parameter name="ae:parameter">
            <ae:parameter name="template">icinga-my-host-template</ae:parameter>
        </ae:parameter>
    </cronk>

6.8.4. Integrieren von PNP4Nagios in Icinga-Web-Serviceansichten

[Anmerkung] Anmerkung

Die folgenden Zeilen beschreiben die manuelle Integration für Version 1.4 und früher

  1. Erstellen einer neuen Service-Grid-Ansicht

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

    #> cp /usr/local/icinga-web/app/modules/Cronks/data/xml/grid/icinga-service-template.xml \
        /usr/local/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">
                        <!-- function 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 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:

    <cronk 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="image">cronks.Stats2</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>
    </cronk>
  3. Verwenden der neuen Grid-Ansicht als Standard-Service-Ansicht

    Bitte sichern Sie zuerst Ihre originale 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!

6.8.5. Löschen des Cache

[Anmerkung] Anmerkung

Bitte denken Sie daran, dass Sie nach dem Editieren von *.xml-Dateien den Cache bereinigen müssen!

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

oder /path/to/clearcache.sh

#> /usr/local/icinga-web/bin/clearcache.sh

Das war es auch schon, Sie sind fertig!