Wie kann ich check_nrpe dazu bringen, zu warten, bis die Ausführung meines Remote-Skripts abgeschlossen ist?

Wie kann ich check_nrpe dazu bringen, zu warten, bis die Ausführung meines Remote-Skripts abgeschlossen ist?

Ich habe ein Python-Skript, das als Plugin für NRPE verwendet wird. Dieses Skript prüft, ob ein Prozess auf einer virtuellen Maschine ausgeführt wird, indem es einen SSH-Einzeiler mit einem angehängten „ps ax | grep process“ ausführt. Wenn das Skript manuell ausgeführt wird, funktioniert es wie erwartet und gibt eine einzelne Ausgabezeile für NRPE sowie einen Status zurück, der darauf basiert, ob der Prozess ausgeführt wird oder nicht.

Wenn ich versuche, den Befehl setup auszuführen, um dieses Skript auszuführen (von meinem Nagios-Server),sofortbekomme die Ausgabe „NRPE: Ausgabe konnte nicht gelesen werden“, aber wenn ich das Skript manuell ausführe, dauert es etwa eine Sekunde, bis es eine Ausgabe zurückgibt. Andere Befehle laufen einwandfrei, also scheint es, als müsste NRPE ein oder zwei Sekunden auf die Ausgabe warten, anstatt sofort abzustürzen, aber ich konnte keine Möglichkeit finden, dies zu erreichen; irgendwelche Tipps?

PS: Auf die virtuellen Maschinen kann von keinem anderen Ort als dem Hostcomputer aus zugegriffen werden. Daher ist es erforderlich, dass das Nrpe-Plugin per SSH vom Host auf die VM zugreift, um den Vorgang zu überprüfen.

Antwort1

Sie können das Timeout ändern, indem Sie den Anweisungen folgenHieroder Suchtimeout imNrpe-Dokumentation, obwohl ich nicht glaube, dass dies Ihr Problem ist, sonst würde ein Fehler wie dieser angezeigt:

CHECK_NRPE: Socket timeout after 270 seconds.

Es gibt wahrscheinlich auch ein Nagios-Plugin, das die gewünschten und bereits geschriebenen Daten zurückgibt.

Antwort2

Warum nicht verwendencheck_procPlugin?

Definieren Sie auf der virtuellen Maschine einen Befehl für Ihren Dienst in /etc/nagios/nrpe.cfg:

command[check_<service_name>]=/usr/lib64/nagios/plugins/check_procs -c 1:1 -C <service_name>

und vom Nagios-Server:

define service{
    use                     critical-service
    host_name               xx
    service_description     <service_name>
    check_command           check_nrpe!check_<service_name>
    event_handler           autostart_<service_name>!xx
    process_perf_data       0
    contact_groups          admin
}

ein Beispielergebnis:

# su - nagios -s /bin/bash
-bash-3.2$ /usr/local/nagios/libexec/check_nrpe -H xx -c check_<service_name>
PROCS OK: 1 process with command name '<service_name>'

Antwort3

Ich glaube, das Standard-Timeout liegt bei etwa 10 Sekunden, das ist es also wahrscheinlich nicht.

Wenn Sie SSH verwenden, um eine Prüfung durchzuführen, denken Sie daran, dass Nrpe wahrscheinlich als Benutzer „Nagios“ ausgeführt wird (je nach Installationsoptionen). Verfügt dieser Benutzer über die richtigen Schlüssel und SSH-Optionen?

verwandte Informationen