Icinga Web 2 und pnp4nagios
- PNP: Installation und Konfiguration
- rrdcached: Konfiguration
- Icinga2
- pnp4nagios und Icinga Web 2
- Was nicht geht
Ich möchte pnp4nagios installieren und hübsche bunte Bildchen malen lassen; allerdings nutze ich nicht Nagios, sondern Icinga2 mit Icinga Web 2, das ich wie hier beschrieben aufgesetzt habe. Wie sich alles miteinander verbinden lässt: das möchte ich euch hier vorstellen.
PNP: Installation und Konfiguration
$ apt-get install --no-install-recommends pnp4nagios rrdcached
rrdcached: Konfiguration
Unser rrdcached
soll Daten in /var/cache/rrdcached
ablegen können; also legst du dieses Verzeichnis an und vergibst in dem Zuge die benötigten Rechte:
$ usermod -G nagios www-data
$ mkdir -p /var/cache/rrdcached
$ chown nagios /var/cache/rrdcached
Anschließend die OPTS
in /etc/default/rrdcached
anpassen:
## file: "/etc/default/rrdcached"
- OPTS=""
+ OPTS="-w 1800 -z 1800 -j /var/cache/rrdcached -s nagios -m 0660 -l unix:/var/run/rrdcached.sock"
Nun kann der Dienst durchgestartet werden und steht zur Nutzung bereit.
$ service rrdcached restart
Restarting RRDtool data caching daemon: rrdcached.
apache.conf
Die /etc/pnp4nagios/apache.conf
habe ich dahingehend modifiziert, als dass ich die Authentifizierung gegen eine htpasswd
erstmal ganz rausgenommen habe; wie ich das im produktiven Einsatz löse werde ich noch entscheiden.
npcd.cfg
Konfiguriert ist das Ganze ja auf eine Nagios-Installation, deshalb würde die Software an der falschen Stelle nach Performance-Daten suchen. Diesen Pfad korrigierst du in /etc/pnp4nagios/npcd.cfg
:
## file: "/etc/pnp4nagios/npcd.cfg"
- perfdata_spool_dir = /var/spool/pnp4nagios/npcd/
+ perfdata_spool_dir = /var/spool/icinga2/perfdata
npcd
Damit der Dienst npcd
, der sich die Performance-Daten abgreift, überhaupt grundsätzlich gestartet wird, muss in /etc/default/npcd
Das RUN
-Flag entsprechend gesetzt werden:
## file: "/etc/default/npcd"
- RUN="no"
+ RUN="yes"
config.php
Auch /etc/pnp4nagios/config.php
muss unseren Belangen angepasst werden:
- $conf['nagios_base'] = "/cgi-bin/nagios3";
- $conf['RRD_DAEMON_OPTS'] = '';
+ ## $conf['nagios_base'] = "/cgi-bin/nagios3";
+ $conf['RRD_DAEMON_OPTS'] = 'unix:/var/run/rrdcached.sock';
Ebenso darfst du nicht vergessen, in /etc/pnp4nagios/process_perfdata.cfg
den korrekten Socket für rrdcached
anzugeben:
## file: "/etc/pnp4nagios/process_perfdata.cfg"
- RRD_DAEMON_OPTS =
+ RRD_DAEMON_OPTS = unix:/var/run/rrdcached.sock
Icinga2
Damit in /var/spool/icinga2/perfdata
überhaupt Daten abgelegt weden, muss das Feature perfdata
in Icinga2 aktiviert werden:
$ icinga2 feature enable perfdata
Enabling feature perfdata. Make sure to restart Icinga 2 for these changes to take effect.
Jetzt ist der Zeitpunkt gekommen, Icinga2 um die PNP-Funktionalität zu erweitern; dafür gibt es sicher viele Möglichkeiten und ich zeige hier mal eine davon:
## file: "/etc/icinga2/conf.d/templates.conf"
/*********************************************************************
* GENERAL PNP TEMPLATES
*/
template Host "pnp-host" {
action_url = "/pnp4nagios/graph?host=$HOSTNAME$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=_HOST_"
}
template Service "pnp-service" {
action_url = "/pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=$SERVICEDESC$"
}
...
Diese Erweiterung habe ich an den Anfang der templates.conf
gesetzt; generic-host
und generic-service
sind dann die nächsten, die in diesem File definiert werden, und sie werden um jeweils eine Zeile erweitert – am Rest der Template-Definition ändert sich nichts:
...
template Host "generic-host" {
max_check_attempts = 5
...
import "pnp-host"
}
template Service "generic-service" {
max_check_attempts = 5
...
import "pnp-service"
}
...
$ service icinga2 restart
Es lässt sich nun beobachten, wie sich im perfdata
-Verzeichnis langsam Daten sammeln. Nun kann auch der npcd
gestartet werden – es kann ggf. hilfreich sein, in /etc/pnp4nagios/npcd.cnf
das log_level = 0
beispielsweise auf 1
oder gar 2
(das ist dann aber wirklich sehr gesprächig!) zu ändern, so kannst du in /var/log/syslog
beobachten, was der Dienst so anstellt.
$ service npcd start
Sobald npcd
läuft, leert sich das perfdata
-Verzeichnis; in der jetzigen Grundkonfiguration zieht sich der Dienst alle 15 Sekunden neu eintreffende Performance-Daten und bearbeitet sie. Soweit, so gut. Ehe wir nun daran gehen, das Ganze in Icinga Web 2 zu integrieren überprüfen wir, ob alles funktioniert: der Aufruf von http://DEINEDOMAIN/pnp4nagios/
muss zur Übersichtsseite von pnp4nagios
führen. Sollte hier allem zum Trotz ein 404er geworfen werden kann es helfen, den Symlink pnp4nagios.conf
(er zeigt auf /etc/pnp4nagios/apache.conf
), der per Default nach /etc/apache2/conf.d
gelegt wird, nach /etc/apache2/conf-enabled
zu verschieben und den Webserver durchzustarten. Wenn das Webinterface wie gewünscht funktioniert, machen wir uns an die Integration.
pnp4nagios und Icinga Web 2
$ cd /usr/share/icingaweb2/modules
$ git clone https://github.com/Icinga/icingaweb2-module-pnp4nagios.git pnp4nagios
Cloning into 'pnp4nagios'...
remote: Counting objects: 127, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 127 (delta 0), reused 0 (delta 0), pack-reused 121
Receiving objects: 100% (127/127), 22.15 KiB | 0 bytes/s, done.
Resolving deltas: 100% (37/37), done.
Checking connectivity... done.
Über das Webinterface („Configuration → Modules → pnp4nagios“) wird das Modul aktiviert, und fortan sind die Graphen über Icinga Web 2 einsehbar.
Zuguterletzt modifizieren wir noch , so dass die PNG-Graphen auch in nagvis
ohne Umwege angezeigt werden. Ich habe mir hierzu die default.hover.html
in /var/lib/nagvis/userfiles/templates
geschnappt und vor dem abschließenden table um eine weitere kleine Tabelle erweitert:
<table>
<tbody><tr><th><label>Performance Data</label></th></tr>
<!-- BEGIN service -->
<tr><td><img src="/pnp4nagios/image?host=[obj_name]&srv=[service_description]&view=0"></td></tr>
<!-- END service -->
<!-- BEGIN host -->
<tr><td><img src="/pnp4nagios/image?host=[obj_name]&srv=_HOST_&view=0"></td></tr>
<!-- END host -->
</tbody></table>
Was nicht geht
Das Ding heißt pnp4nagios
, nicht pnp4icingaweb2
; die nagios_base
, die in /etc/pnp4nagios/config.php
hinterlegt wird, soll den Pfad zu den CGI-Dateien enthalten – die es unter Icinga Web 2 aber in der althergebrachten Form überhaupt nicht mehr gibt. Konkret sind das schonmal die nebenstehenden beiden Buttons, die so nicht funktionieren können. Da ich die aber auch nicht benötige, habe ich sie in aus der Datei graph_content.php
in /usr/share/pnp4nagios/html/application/views
einfach herausgeschmissen – was für dich am sinnvollsten ist, musst du selbst herausfinden :-)
Hintergrundbild: Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten