Ersetzen von NRPE mit Hilfe von Nag(ix)SC¶
Statt eine "statische" XML-Datei auf einen Web-Server zu legen, kann man diese auch "on demand" generieren lassen - und somit eine Alternative zu NRPE schaffen.
Beteiligte Rechner¶
- Der zu überwachende Server ("server")
- Der Nagios-Server ("nagios")
Vorgehensweise¶
Auf dem zu überwachenden Server¶
- Download der Software
- Anlegen einer (oder mehrerer) conf-Dateien
- Konfiguration des HTTP-Servers
- Starten des HTTP-Servers
Download der Software¶
1 root@server:~ % cd /usr/local
2 root@server:/usr/local % wget -O /tmp/nagixsc.tar.gz http://github.com/wAmpIre/nagixsc/tarball/master
3 [...]
4 root@server:/usr/local % tar xzf /tmp/nagixsc.tar.gz
5 root@server:/usr/local % mv wAmpIre-nagixsc-* nagixsc
Anlegen einer (oder mehrerer) conf-Dateien¶
1 root@server:/usr/local % cd nagixsc
2 root@server:/usr/local/nagixsc % mkdir -p etc/conf
In dem hier angelegten Verzeichnis liegen später die "conf"-Dateien, die die auszuführenden Plugins enthält. Für einen Test-Setup kann man mit mitgelieferten Dateien (nagixsc_debian.conf und nagixsc_usrlocal.conf) verwenden:
1 root@server:/usr/local/nagixsc % cp sample-configs/conf/nagixsc* etc/conf/
Konfiguration des HTTP-Servers¶
Für den HTTP-Server nagixsc_conf2http liegt ebenfalls eine Beispielkonfigurationsdatei im Verzeichnis sample-configs/, sie heisst conf2http.cfg und auch sie sollte man nach "etc/conf2http.cfg" kopieren:
1 [server]
2 ip: 0.0.0.0
3 port: 15666
4 ssl: false
5 sslcert: server.pem
6
7 conf_dir: /usr/local/nagixsc/etc/conf
8
9 [users]
10 ; echo -n "Password" | md5sum -
11 nagixsc: 019b0966d98fb71d1a4bc4ca0c81d5cc ; PW: nagixsc
Im Abschnitt "[server]" werden folgende Netzwerk-Einstellungen festgelegt:
ip: Auf welcher IP der Server hören soll,0.0.0.0bedeutet alle IPs bzw. Netzwerkkartenport: Port-Nummer für den Server, hier15666ssl: Mittruewird die HTTP-Verbindung SSL-verschlüsseltsslcert: Pfad zum SSL-Key und -Zertifikat
Dazu kommt noch "conf_dir", mit dem man den - am Besten absoluten - Pfad zu den "conf"-Dateien festlegt. Für einen produktiven Server sollte man hier z.B. das oben angelegte "/usr/local/nagixsc/etc/conf"-Verzeichnis angeben.
Der Abschnitt "[users]" enthält einen oder mehrere Benutzer, die sich authentifizieren können. Um keine Klartext-Passwörter speichern zu müssen, wird ein MD5-Hash des Passworts gespeichert. Diesen kann man ganz einfach an einer Shell berechnen (Achtung! "HISTSIZE=0" speichert keine Shell-History mehr!)
1 root@server:... % HISTSIZE=0
2 root@server:... % echo -n "nagixsc" | md5sum -
3 019b0966d98fb71d1a4bc4ca0c81d5cc -
FIXME ACLs
Starten des HTTP-Servers¶
Zum Testen bietet sich das Starten als normaler Prozess an:
1 root@server:/usr/local/nagixsc % ./nagixsc_conf2http.py -c etc/conf2http.cfg
Bei jedem Zugriff gibt der Server eine Zeile aus, sodass man sehr schnell sieht, ob und von wo zugegriffen wurde.
Funktioniert alles, kann man später den HTTP-Server zusätzlich mit dem Schalter "-d" starten. Der Prozess schiebt sich dann als Daemon in den Hintergrund:
1 root@server:/usr/local/nagixsc % ./nagixsc_conf2http.py -c etc/conf2http.cfg -d
FIXME Init.d-Scripts
Auf dem Nagios¶
- Download der Software
- Testen der HTTP-Verbindung
- Zusammensetzung der URLs
- Konfiguration des Nagios
Download der Software¶
1 root@nagios:~ % cd /usr/local
2 root@nagios:/usr/local % wget -O /tmp/nagixsc.tar.gz http://github.com/wAmpIre/nagixsc/tarball/master
3 [...]
4 root@nagios:/usr/local % tar xzf /tmp/nagixsc.tar.gz
5 root@nagios:/usr/local % mv wAmpIre-nagixsc-* nagixsc
Testen der HTTP-Verbindung¶
1 root@nagios:/usr/local % cd nagixsc
2 root@nagios:/usr/local/nagixsc % ./nagixsc_xml2nagios.py -u http://SERVER:15666/nagixsc_debian/ -l nagixsc -a nagixsc -O passive -p /dev/stdout
Aufruf-Parameter:
-u URL: URL zum XML-File, hier vom Server beim Zugriff erzeugt-l USER: HTTP-User zur Anmeldung-a PASSWORT: HTTP-Passwort zur Anmeldung-O MODE: Ausgabe der Ergebnissepassive: Schreibt in das External Command File/Pipe, keine Ausgaben am Bildschirm (z.B. für Aufruf durchcron)passive_check: Schreibt in das External Command File/Pipe, Ausgabe wie Nagios-Plugincheckresult: Schreibt Check Result Files, keine Ausgabe am Bildschrim (z.B. für Aufruf durchcron)checkresult_check: Schreibt Check Result Files, Ausgabe wie Nagios-Pluginactive: Wird nur ein Service-Check im XML zurückgegeben, beendet sich das Tool mit den im XML angegebenen Output und Returncode
-p PIPE: Pfad zum External Command File (passiveundpassive_check)-r RESULTDIR: Pfad zum Check Result Spool Directory (checkresultundcheckresult_check)
Dies liefert die Ausgabe:
[1276636413] PROCESS_HOST_CHECK_RESULT;host1;0;OK - 127.0.0.1 responds to ICMP. Packet 1, rta 0.057ms|pkt=1;;0;5 rta=0.057;1000.000;1000.000;;
[1276636413] PROCESS_SERVICE_CHECK_RESULT;host1;Disk_Root;0;DISK OK - free space: / 6926 MB (49% inode=71%);| /=7156MB;12674;13378;0;14083
[1276636413] PROCESS_SERVICE_CHECK_RESULT;host1;Disk_Home;0;DISK OK - free space: /home 23547 MB (50% inode=96%);| /home=22910MB;42241;44588;0;46935
[1276636413] PROCESS_SERVICE_CHECK_RESULT;host1;Load;0;OK - load average: 0.21, 0.32, 0.33|load1=0.210;5.000;10.000;0; load5=0.320;5.000;10.000;0; load15=0.330;5.000;10.000;0;
[1276636413] PROCESS_SERVICE_CHECK_RESULT;host2.foo.bar;Procs_Total;0;PROCS OK: 182 processes
[1276636413] PROCESS_SERVICE_CHECK_RESULT;host2.foo.bar;Swap;0;SWAP OK - 95% free (1806 MB out of 1906 MB) |swap=1806MB;953;476;0;1906
[1276636413] PROCESS_SERVICE_CHECK_RESULT;host2.foo.bar;Users;1;USERS WARNING - 12 users currently logged in |users=12;10;15;0
Man erkennt den Host-Check für "host1" und je 3 Service-Checks für "host1" und "host2.foo.bar".
Zusammensetzung der URLs¶
Die URL besteht mindestens aus folgenden Teilen:- Das Protokoll
httpoderhttps - Die IP oder der Name des Servers
- Der Port, auf dem der Server läuft
- Der Name der "conf"-Dateien
- Der Host- bzw. Abschnittsname (z. B. "
host1") =>http://SERVER:15666/nagixsc_debian/host1 - Eine Service-Description (z. B. "
Disk_Root") =>http://SERVER:15666/nagixsc_debian/host1/Disk_Root
Ruft man obigen Befehl mit den beiden, längeren URLs auf, bekommt man folgende Ausgaben:
[1276636413] PROCESS_HOST_CHECK_RESULT;host1;0;OK - 127.0.0.1 responds to ICMP. Packet 1, rta 0.057ms|pkt=1;;0;5 rta=0.057;1000.000;1000.000;;
[1276636413] PROCESS_SERVICE_CHECK_RESULT;host1;Disk_Root;0;DISK OK - free space: / 6926 MB (49% inode=71%);| /=7156MB;12674;13378;0;14083
[1276636413] PROCESS_SERVICE_CHECK_RESULT;host1;Disk_Home;0;DISK OK - free space: /home 23547 MB (50% inode=96%);| /home=22910MB;42241;44588;0;46935
[1276636413] PROCESS_SERVICE_CHECK_RESULT;host1;Load;0;OK - load average: 0.21, 0.32, 0.33|load1=0.210;5.000;10.000;0; load5=0.320;5.000;10.000;0; load15=0.330;5.000;10.000;0;
... und ...
[1276636413] PROCESS_SERVICE_CHECK_RESULT;host1;Disk_Root;0;DISK OK - free space: / 6926 MB (49% inode=71%);| /=7156MB;12674;13378;0;14083
Konfiguration des Nagios¶
Natürlich müssen auch bei diesem Weg die Hosts und Services im Nagios gepflegt bzw. eingerichtet werden. Um dafür ein Grundgerüst zu bekommen, kann man die XML-Datei und das Tool "nagixsc_xml2cfg" nutzen:
1 root@nagios:/usr/local/nagixsc/ % ./nagixsc_xml2cfg.py -u http://SERVER:15666/nagixsc_debian/ -l nagixsc -a nagixsc
2 define host {
3 [...]
4 root@nagios:/usr/local/nagixsc/ % ./nagixsc_xml2cfg.py -u http://SERVER:15666/nagixsc_debian/ -l nagixsc -a nagixsc >/tmp/nagios-objects.cfg