Wie kann ich die Ergebnisse "(Serviceprüfung wurde nicht ordnungsgemäß beendet)" und "(null)" mit meinen Services auflösen?

10

Ich verwende einige Perl-basierte Skripte für Serviceprüfungen in Nagios und erhalte (Service check did not exit properly)und (null)als Ergebnis in Nagios, aber das Skript funktioniert hervorragend in der Befehlszeile.

Ich habe Online-Lösungen gesehen, die vorschlagen, den internen Perl-Interpreter zu deaktivieren, indem Sie enable_embedded_perl=0die Nagios-Konfiguration festlegen oder den Pfad zu einem Interpreter explizit angeben. Dies hat bei dem Problem nicht geholfen.

Was könnte es sonst sein?

Der Hochstapler
quelle
Können Sie ein Beispiel dafür zeigen, wie es über CLI "großartig funktioniert"?
Keith

Antworten:

11

Nagios enthält einen eigenen eingebetteten Perl-Interpreter. Ihr Plugin ist wahrscheinlich nicht epn-kompatibel.

Möglicherweise möchten Sie es global deaktivieren oder es einfach für Ihr Skript deaktivieren. Am Ende dieser Dokumentseite erfahren Sie, wie Sie dies tun.

Fügen Sie # nagios: -epnim Grunde genommen eine eigene Zeile irgendwo in den ersten zehn Zeilen Ihres Skripts hinzu. Dies sollte Ihr Problem beheben.

Sie könnten es auch konform machen , aber es ist mit ziemlicher Sicherheit die Mühe nicht wert.

Keith
quelle
Ja, danke für den Vorschlag. Obwohl ich ausdrücklich erklärt habe, dass dies keine Auswirkungen auf das spezifische Problem hatte, mit dem ich konfrontiert war.
Der Hochstapler
Dies ist eine echte Entschlossenheit für Nagios. ohne -epn ist das plugin enthalten und wird von nagios intern ausgeführt. Mit -epn wird es als externe ausführbare Datei geladen, ähnlich wie Binärdateien oder Bash-Skripte. Siehe Seite: nagios.sourceforge.net/docs/3_0/embeddedperl.html und prüfen Sie epn Beschwerde
Znik
1
Der Doppelpunkt wird # nagios: -epngemäß den Dokumenten und meinen Tests benötigt.
idupree
1
Seltsamerweise hat die aktuelle Ubuntu LTS (18.04) Version von Nagios-Plugins-Standard (2.2-3ubuntu2) dieses Problem. Dinge funktionieren, wenn ich entweder betroffene Plugins ändere, z. B. check_disk_smbund check_file_age, oder wenn ichuse_embedded_perl_implicitly=0
Akom
Für mich behoben! Danke ...
Oscar Bravo
3

Einige Perl-Skripte von Nagios Exchange versuchen, das utils.pmPerl-Modul einzuschließen. Irgendwo darin finden Sie eine Zeile wie diese:

use lib "/usr/local/nagios/libexec";

Bei der Installation von Nagios unter Debian ist der Standardspeicherort der utils.pmDatei /usr/lib/nagios/plugins/utils.pm. Die use libRichtlinie sollte also lauten:

use lib "/usr/lib/nagios/plugins";

Das Ausführen des Befehls über die Befehlszeile hat höchstwahrscheinlich funktioniert, weil Sie /usr/lib/nagios/plugins/Ihr Plugin bearbeitet haben.

Der Hochstapler
quelle
2

Stellen Sie dem Befehl das Präfix vor /usr/bin/perl.

Diese Lösung ist eher eine Problemumgehung. Es ist wahrscheinlich keine gute Idee, dies zu tun, aber zumindest sollte Ihr Plugin genauso funktionieren wie beim Starten über das Terminal.

HINWEIS: Nach meiner Erfahrung # nagios -epnfunktioniert es ziemlich oft, aber manchmal scheint es nicht genug zu sein. Ich habe festgestellt, dass die fehlerhaften Plugins in diesem Fall viele Warnungen melden (wenn das Skript mit aufgerufen wird perl -w).

tiktak
quelle