====== NRPE ====== * Mit nrpe (Nagios Remote Plugin Executor) ist es möglich, Plugins auf entfernten Rechnern auszuführen. * Soll zum Beispiel der verfügbare Speicherplatz auf einem entfernten Rechner überprüft werden, wird das Plugin check_nrpe (Client) auf dem Nagios-Rechner ausgeführt. check_nrpe sendet nun einen String an den zu überwachenden Rechner. Der dort (auf Port 5666) hörende NRPE-Dienst (Server) vergleicht den ankommenden String mit den in seiner Konfigurationsdatei hinterlegten. Jedem dieser Strings ist ein Kommando zugeordnet. Findet er den vom Nagios Gesendeten in seiner Konfiguration, führt er das zugehörige Kommando aus und schickt das Ergebnis (Exitcode und Ausgabe) an check_nrpe der Nagiosmaschine zurück. check_nrpe wiederum reicht das Ergebnis an Nagios weiter, wo es, wie die Ergebnisse anderer Plugins auch dargestellt wird. Via NRPE lassen sich nicht nur Checks aussführen, sondern jegliches Kommando. Aus diesem Grund besteht die Möglichkeit, die komplette Kommunikation (check_nrp <--> NRPE-Dienst) verschlüsselt ablaufen zu lassen. Weiterhin können nur die in der Konfigurationsdatei des NRPE-Dienstes festgelegten Kommandos ausgeführt werden. Diese Datei wird beim Starten des NRPE-Dienstes eingelesen, weswegen Änderungen in dieser Datei logischerweise einen Neustart des Dienstes nach sich ziehen. ===== NRPE-Client (Plugin check_nrpe) ===== * Aktuelle Version (hier: nrpe-2.0.tar.gz)herunterladen: http://sourceforge.net/project/showfiles.php?group_id=26589&package_id=40241 * Konfigurieren mit ./configure * Kompilieren mit make * Die ausführbare Datei check_nrpe befindet sich danach im Verzeichniss src/ * Diese Datei nach /usr/local/nagios/libexec/ kopieren. * Die zwei wichtigen Dateien services.cfg und checkcommands.cfg sollten den eigenen Vorstellungen entsprechend angepasst werden. * Beispiel checkcommands.cfg: define command{ command_name nt_check_disk_c command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c nt_check_disk_c } * Beispiel services.cfg: define service{ host_name fileserver1 service_description Speicherplatz Partition C check_command nt_check_disk_c max_check_attempts 3 normal_check_interval 1 retry_check_interval 1 check_period 24x7 notification_interval 10 notification_period 24x7 notification_options w,c,u,r contact_groups Nagios_Admin } ===== NRPE-Server ===== ==== Windows ==== * Den aktuellen nrpe-Dienst (hier: nrpe_nt.0.8-bin.zip) herunterladen: http://www.miwi-dv.com/nrpent/ * Zusätzlich die Standard-Plugins herunterladen: http://www.nagiosexchange.org/cgi-bin/page.cgi?g=Detailed%2F2131.html;d=1 * Entpacken des nrpe-Dienst in C:\NRPE\ * Im Verzeichniss bin\ taucht die wichtige Konfigurationsdatei nrpe.cfg auf. * Entpacken der Standard-Plugins in C:\NRPE\bin\ * Jetzt befinden sich die 5 Plugins in diesem Verzeichnis: - diskspace_nrpe_nt.exe - cpuload_nrpe_nt.exe - memload_nrpe_nt.exe - service_nrpe_nt.exe - eventlog_nrpe_nt.exe * Zum installieren des nrpe-Dienstes in der Kommandozeile (cmd) nrpe_nt –i ausführen. * Zum Starten des Dienstes net start nrpe_nt ausführen (oder über die Dienste-Verwaltung von Windows starten) * Folgendes beachten bei der Konfiguration der nrpe.cfg: * Unter „allowed_hosts“ sollte natürlich der Nagios-Server stehen! * Standard-Port ist server_port=5666 (wenn vorhanden Firewall anpassen!) * Beispiel für Speicherplatz-Check: command[nt_check_disk_c]=C:\NRPE\bin\diskspace_nrpe_nt.exe c: 80 90 * Beispiel für CPU-Auslastung: command[nt_check_cpuload]=C:\NRPE\bin\cpuload_nrpe_nt.exe 90 95 * Beispiel für service-check: command[nt_check_NTsyslog_service]=C:\NRPE\bin\service_nrpe_nt.exe "NTsyslog" ==== Linux ==== === Vorbereiten des Betriebssystems === Gruppe anlegen, in der unser Nagios NRPE später laufen soll: groupadd --system nagios (muss nicht zwingend sein, bei den meisten Distris macht der Useradd beides) \\ Benutzer Anlegen für NRPE: useradd --system --shell `which nologin` -c "Nagios Check" nagios -g nagios Nun bringen wir dem OS noch bei, dass der Service NRPE auf Port 5666 TCP laufen wird: echo "nrpe 5666/tcp" >>/etc/services === Installation der Nagios-Plugins === Nochmal als kurzes Reprise wie ich die Nagios Plugins compile (siehe Punkt 2.3 weiter oben) cd /usr/local/src tar xzf /irgendwo_auf_der_platte/nagios-plugins-VERSION.tar.gz cd nagios-plugins-VERSION ./configure && make && make install === Installation des NRPE Daemons === Compilen des NRPE Daemons: cd /usr/local/src tar xzf /irgendwo_auf_der_platte/nrpe-VERSION.tar.gz cd nrpe-VERSION ./configure && make && make install Beim Aufruf kann man wählen, ob NRPE über XINETD oder als Daemon laufen soll. Davon abhängig sind die weiteren Vorbereitungen. Wir benutzen überall den XINETD, da dieser über den TCPWrapper schon dafür sorgt, dass nur der Monitoringhost eine Verbindung aufbauen kann. Außerdem werden so bei jedem CHECK die configs neu angezogen, man spart sich also den Reload des laufenden Daemons. == Starten über den XINETD == Wir müssen dem XINETD nur im Config-Verzeichnis eine weitere Config für NRPE hinterlegen: make install-xinetd install-daemon-config Dabei passiert folgendes (bei NRPE-Version 2.12): /usr/bin/install -c -m 644 sample-config/nrpe.xinetd /etc/xinetd.d/nrpe /usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/etc /usr/bin/install -c -m 644 -o nagios -g nagios sample-config/nrpe.cfg /usr/local/nagios/etc In ''/etc/xinetd.d/nrpe'' muss ''only_from'' angepasst werden: only_from = IP_OF_YOUR_MONITORING_HOST Am Ende von ''/usr/local/nagios/etc/nrpe.cfg'' müssen ggf. die lokalen Checks angepasst werden, z.B.: command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 == Starten als normaler Daemon == NRPE liefert eigene Init-Scripts für verschiedene Systeme mit, das normale Initscript läuft mit RH. Für Debian und SuSE gibts eigene Scripten. Das passende Script kopiert man einfach an die für das OS richtige Stelle und verlinkt es in die Runlevel. cp /usr/local/src/nrpe-VERSION/init-script /etc/init.d/nrpe (für RH) cp /usr/local/src/nrpe-VERSION/init-script.suse /etc/init.d/nrpe (für SuSE) cp /usr/local/src/nrpe-VERSION/init-script.debian /etc/init.d/nrpe (für Debian) # Debian/Ubuntu update-rc.d -n nrpe defaults # Red Hat/SuSE chkconfig --add nrpe chkconfig --level 2345 nrpe on === Config des NRPE === NRPE bringt von Haus aus eine Sample Config mit, mit der man schon recht viel anfangen kann. Einige Parameter kann man sich beim Betrieb mit XINETD sparen, ansonsten kann man fast alles auf den Defaults lassen. Die eigentlich interessante Stelle sind die definierten Checkcommands. In der Sample Config sind diese ganz unten zu finden. command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10 Hier kann man nun nach Lust und Laune weitere Checks definieren :-) === Tipps & Tricks bei der Verwendung von NRPE === == Perl == Einige Perl Plugins haben Probleme, dass sie die utils.pm unter /usr/local/nagios/libexec (Standardpfad) nicht finden. Kopier das PM in den Perl Include Pfad .. Ein kurzes perl -e 'print join "\n", @INC' druckt uns die Include Pfade aus. Irgendwo hier wird unser utils.pm auch sein neues zuhause finden :-) == Environment Entries == Bei Websphere und Oracle hatte ich öfters Probleme, dass die Environment Entries nicht so gepasst haben wie es nötig gewesen wäre. Einfach ein Shellscript drum-rum wrappen und innerhalb des Scripts die ENV Entries setzen == NRPE & sudo == Sudo-Probleme ueber NRPE sind manchmal schwer zu identifizieren, weil sich sudo per NRPE anders verhaelt als ueber die Kommandozeile, wenn in der /etc/sudoers die Zeile Defaults requiretty gesetzt ist. Dieses Setting fuehrt dazu, dass nicht interaktive sudo-Aufrufe (also auch NRPE) nicht moeglich sind! Richtig waere also: #Defaults requiretty