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.
C:\NRPE\bin
nrpe_nt –i
ausführen.
net start nrpe_nt
ausführen (oder über die Dienste-Verwaltung von Windows starten)
command[nt_check_disk_c]=C:\NRPE\bin\diskspace_nrpe_nt.exe c: 80 90
command[nt_check_cpuload]=C:\NRPE\bin\cpuload_nrpe_nt.exe 90 95
command[nt_check_NTsyslog_service]=C:\NRPE\bin\service_nrpe_nt.exe "NTsyslog"
Für Windows gibt es noch einen anderen Serverdienst, welcher mit NRPE kommuniziert.
Siehe nsclient
User anlegen, mit dem der Nagios NRPE später laufen soll:
useradd -M -s /bin/bash nagios
Pakete installieren
apt-get install libssl-dev build-essential
Nun dem OS noch sagen, dass der Service NRPE auf Port 5666 TCP laufen soll: <code>echo "nrpe 5666/tcp" >> /etc/services</code>
Die Nagios Plugins, als User „nagios“ wie hier beschrieben installieren.
wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz
./configure --enable-command-args --enable-bash-command-substitution
Manchmal kann es vorkommen dass die „ssl-libraries“ nicht gefunden werden. Dann einfach nach diesen (libssl.so) suchen und dann den jew. Pfad verwenden
--with-ssl-lib=/usr/lib/x86_64-linux-gnu
make -j all
make install-groups-users make install make install-config make install-init systemctl enable nrpe.service
src/
/usr/local/nagios/libexec/
kopiertservices.cfg
und checkcommands.cfg
sollten den eigenen Vorstellungen entsprechend angepasst werden. 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 }
Nun noch einige Einstellungen vornehmen.
mkdir -p /usr/local/nagios/etc cp <PFAD_ZU_NRPE_INSTALLATIONSVERZEICHNIS>/sample-config/nrpe.cfg /usr/local/nagios/etc cp init-script.debian /etc/init.d/nrpe chmod 755 /etc/init.d/nrpe update-rc.d nrpe defaults
NRPE Konfigurationsdatei anpassen
vi /usr/local/nagios/etc/nrpe.cfg
Folgende Zeilen anpassen:
allowed_hosts=<NRPE_CLEINT_IP> dont_blame_nrpe=1
Ganz unten kann man noch „commands“ angeben die der NRPE bedienen soll.
NRPE kann nun gestartet und abgefragt werden.
Folgende Punkte können noch zusätzlich angegangen werden
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.
Wir müssen dem XINETD nur im Config-Verzeichnis eine weitere Config für NRPE hinterlegen:
cat <<EOF >/etc/xinetd.d/nrpe # default: on # description: NRPE (Nagios Remote Plugin Executor) service nrpe { flags = REUSE socket_type = stream wait = no user = nagios group = nagios server = /usr/local/nagios/nrpe server_args = -c /usr/local/nagios/nrpe.cfg --inetd log_on_failure += USERID disable = no only_from = IP_OF_YOUR_MONITORING_HOST } EOF
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
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
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