Jak rozwiązać problemy „(Kontrola usługi nie zakończyła się poprawnie)” i „(null)” w moich usługach?

10

Używam skryptów opartych na Perlu do sprawdzania usług w Nagios i otrzymuję, (Service check did not exit properly)aw (null)rezultacie w Nagios, ale skrypt działa świetnie w wierszu poleceń.

Widziałem rozwiązania online sugerujące wyłączenie wewnętrznego interpretera Perla poprzez ustawienie enable_embedded_perl=0w konfiguracji Nagios lub wyraźne określenie ścieżki do interpretera. To nie pomogło w rozwiązaniu problemu.

Co jeszcze może to być?

Der Hochstapler
źródło
Czy możesz pokazać przykład, jak to „działa świetnie” za pomocą CLI?
Keith

Odpowiedzi:

11

Nagios zawiera własny wbudowany interpreter perla. Twoja wtyczka prawdopodobnie nie jest zgodna z Epn.

Możesz wyłączyć to globalnie lub po prostu wyłączyć w skrypcie. Dół tej strony z dokumentami pokazuje, jak to zrobić.

Zasadniczo dodaj # nagios: -epnwłasną linię gdzieś w pierwszych dziesięciu liniach skryptu. To powinno rozwiązać twój problem.

Możesz także sprawić, by był zgodny , ale prawie na pewno nie jest to warte kłopotu.

Keith
źródło
Tak, dzięki za sugestię. Mimo że wyraźnie stwierdziłem, że nie miało to żadnego wpływu na konkretny problem, z którym się spotkałem.
Der Hochstapler
To jest prawdziwe postanowienie nagios. bez -epn wtyczka jest dołączana i wykonywana wewnętrznie przez nagios. z opcją -epn jest ładowany jako zewnętrzny plik wykonywalny, podobny do plików binarnych lub skryptów bash. Zobacz stronę: nagios.sourceforge.net/docs/3_0/embeddedperl.html i rozważ skargę
epn
1
Okrężnica jest wymagana w # nagios: -epndokumentach i na moich testach.
idupree
1
O dziwo, obecna wersja Ubuntu LTS (18.04) standardu nagios-plugins-standard (2.2-3ubuntu2) ma ten problem. Wszystko działa, jeśli albo zmodyfikuję zmienione wtyczki, np. check_disk_smbI check_file_age, lub jeśli use_embedded_perl_implicitly=0
ustawię
Naprawiłem to dla mnie! Dzięki ...
Oscar Bravo
3

Niektóre skrypty Perla z Nagios Exchange będą próbowały dołączyć utils.pmmoduł Perla. Gdzieś w nim znajdziesz taką linię:

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

Podczas instalowania Nagios na Debianie domyślna lokalizacja utils.pmpliku to /usr/lib/nagios/plugins/utils.pm. Tak więc use libdyrektywa powinna być:

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

Wykonanie polecenia z wiersza poleceń najprawdopodobniej działało, ponieważ byłeś w trakcie /usr/lib/nagios/plugins/edytowania wtyczki.

Der Hochstapler
źródło
2

Przedrostek polecenia za pomocą /usr/bin/perl.

To rozwiązanie jest raczej obejściem, prawdopodobnie nie jest to dobry pomysł, ale przynajmniej wtyczka powinna działać tak samo jak po uruchomieniu z terminala.

UWAGA: Z mojego doświadczenia # nagios -epnwynika, że ​​działa dość często, ale czasem nie wydaje się to wystarczające. Zauważyłem, że kiedy tak się dzieje, wadliwe wtyczki zgłaszają wiele ostrzeżeń (gdy wywoływany jest skrypt perl -w).

TIK Tak
źródło