¿Cómo puedo resolver los resultados de "(La verificación del servicio no salió correctamente)" y "(nulo)" con mis servicios?

10

Estoy usando algunos scripts basados ​​en Perl para las comprobaciones de servicio en Nagios y obtengo (Service check did not exit properly)y (null)como resultado en Nagios, pero el script funciona muy bien en la línea de comandos.

He visto soluciones en línea que sugieren deshabilitar el intérprete interno de Perl configurando enable_embedded_perl=0la configuración de Nagios o especificando la ruta a un intérprete explícitamente. Esto no ayudó con el problema.

¿Qué más podría ser?

Der Hochstapler
fuente
¿Puede mostrar un ejemplo de cómo "funciona muy bien" a través de CLI?
Keith

Respuestas:

11

Nagios incluye su propio intérprete perl incrustado. Su complemento probablemente no sea compatible con epn.

Es posible que desee deshabilitarlo globalmente, o simplemente deshabilitarlo para su secuencia de comandos. La parte inferior de esa página de documentos le muestra cómo hacerlo.

Básicamente, agregue # nagios: -epnsu propia línea en algún lugar dentro de las primeras diez líneas de su secuencia de comandos. Esto debería solucionar tu problema.

También podrías hacerlo compatible , pero casi seguro que no vale la pena.

Keith
fuente
Sí, gracias por la sugerencia. Aunque explícitamente dije que esto no tuvo ningún impacto en el problema específico que estaba enfrentando.
Der Hochstapler
Esta es una verdadera resolución para nagios. sin -epn, el complemento está incluido y ejecutado internamente por nagios. con -epn, se carga como ejecutable externo, similar a binarios o scripts de bash. Vea la página: nagios.sourceforge.net/docs/3_0/embeddedperl.html y considere la queja de la
EPN
1
Se requieren dos puntos # nagios: -epn, según los documentos y según mis pruebas.
idupree
1
Por extraño que parezca, la versión actual Ubuntu LTS (18.04) de nagios-plugins-standard (2.2-3ubuntu2) tiene este problema. Las cosas funcionan si modifico los complementos afectados, por ejemplo, check_disk_smby check_file_age, o si configurouse_embedded_perl_implicitly=0
Akom
¡Me lo arregló! Gracias ...
Oscar Bravo
3

Algunas secuencias de comandos Perl de Nagios Exchange intentarán incluir el utils.pmmódulo Perl. Encontrarás una línea como esta en algún lugar:

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

Al instalar Nagios en Debian, la ubicación predeterminada del utils.pmarchivo es /usr/lib/nagios/plugins/utils.pm. Entonces la use libdirectiva debería ser:

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

Ejecutar el comando desde la línea de comando probablemente funcionó porque estabas /usr/lib/nagios/plugins/editando tu complemento.

Der Hochstapler
fuente
2

Prefijar el comando con /usr/bin/perl.

Esta solución es más una solución alternativa, probablemente no sea una buena idea hacerlo, pero al menos su complemento debería funcionar de la misma manera que cuando lo inicia desde el terminal.

NOTA: En mi experiencia, # nagios -epnfunciona con bastante frecuencia, pero a veces no parece ser suficiente. Noté que cuando esto sucede, los complementos defectuosos informan muchas advertencias (cuando se invoca el script perl -w).

tiktak
fuente