Bagaimana saya bisa menyelesaikan hasil "(Pemeriksaan layanan tidak keluar dengan benar)" dan "(null)" dengan layanan saya?

10

Saya menggunakan beberapa skrip berbasis Perl untuk pemeriksaan layanan di Nagios dan saya dapatkan (Service check did not exit properly)dan (null)sebagai hasilnya dalam Nagios, tetapi skrip bekerja dengan baik pada baris perintah.

Saya telah melihat solusi online yang menyarankan untuk menonaktifkan interpreter Perl internal dengan menetapkan enable_embedded_perl=0dalam konfigurasi Nagios atau dengan menentukan jalur ke penerjemah secara eksplisit. Ini tidak membantu masalah ini.

Apa lagi itu?

Der Hochstapler
sumber
Bisakah Anda menunjukkan contoh bagaimana "berfungsi dengan baik" melalui CLI?
Keith

Jawaban:

11

Nagios mencakup penerjemah perl tertanam miliknya. Plugin Anda mungkin tidak kompatibel dengan epn.

Anda mungkin ingin menonaktifkannya secara global, atau cukup menonaktifkannya untuk skrip Anda. Bagian bawah halaman dokumen menunjukkan kepada Anda bagaimana melakukan ini.

Pada dasarnya, tambahkan # nagios: -epnbarisnya sendiri di suatu tempat dalam sepuluh baris pertama skrip Anda. Ini akan memperbaiki masalah Anda.

Anda juga bisa membuatnya patuh , tetapi hampir pasti tidak sepadan dengan masalahnya.

Keith
sumber
Ya terima kasih atas sarannya. Meskipun saya secara eksplisit menyatakan bahwa ini tidak memiliki dampak pada masalah spesifik yang saya hadapi.
Der Hochstapler
Ini adalah tekad nyata untuk nagios. tanpa -epn, plugin disertakan dan dijalankan secara internal oleh nagios. dengan -epn, ia dimuat sebagai executable eksternal, mirip dengan binari atau skrip bash. Lihat halaman: nagios.sourceforge.net/docs/3_0/embeddedperl.html dan pertimbangkan keluhan
epn
1
Usus besar diperlukan dalam # nagios: -epn, per dokumen dan per pengujian saya.
idupree
1
Anehnya, versi Ubuntu LTS (18.04) saat ini dari nagios-plugins-standard (2.2-3ubuntu2) memiliki masalah ini. Hal-hal berfungsi jika saya memodifikasi plugin yang terpengaruh, misalnya check_disk_smbdan check_file_age, atau jika saya mengaturuse_embedded_perl_implicitly=0
Akom
Perbaiki untuk saya! Terima kasih ...
Oscar Bravo
3

Beberapa skrip Perl dari Nagios Exchange akan mencoba memasukkan utils.pmmodul Perl. Anda akan menemukan garis seperti ini di suatu tempat di dalamnya:

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

Saat memasang Nagios di Debian, lokasi default utils.pmfile adalah /usr/lib/nagios/plugins/utils.pm. Jadi use libarahannya harus:

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

Menjalankan perintah dari baris perintah kemungkinan besar berhasil karena Anda masuk /usr/lib/nagios/plugins/ , mengedit plugin Anda.

Der Hochstapler
sumber
2

Awali perintah dengan /usr/bin/perl.

Solusi ini lebih merupakan solusi, mungkin bukan ide yang baik untuk melakukannya tetapi setidaknya plugin Anda harus bekerja dengan cara yang sama ketika Anda meluncurkannya dari terminal.

CATATAN: Dalam pengalaman saya # nagios -epncukup sering bekerja, tetapi kadang-kadang tampaknya tidak cukup. Saya perhatikan bahwa ketika ini terjadi, plugin yang salah melaporkan banyak peringatan (ketika skrip dipanggil dengan perl -w).

tiktak
sumber