Como posso resolver os resultados "(a verificação do serviço não foi concluída corretamente)" e "(nula)" com meus serviços?

10

Estou usando alguns scripts baseados em Perl para verificações de serviço no Nagios e recebo (Service check did not exit properly)e, (null)como resultado, no Nagios, mas o script funciona muito bem na linha de comando.

Vi soluções online sugerindo desativar o interpretador Perl interno, definindo-o enable_embedded_perl=0na configuração do Nagios ou especificando explicitamente o caminho para um intérprete. Isso não ajudou no problema.

O que mais poderia ser?

Der Hochstapler
fonte
Você pode mostrar um exemplo de como "funciona muito bem" via CLI?
26414 Keith

Respostas:

11

O Nagios inclui seu próprio interpretador perl incorporado. Seu plug-in provavelmente não é compatível com epn.

Você pode desativá-lo globalmente ou apenas desativá-lo para o seu script. A parte inferior da página de documentos mostra como fazer isso.

Basicamente, adicione # nagios: -epnsua própria linha em algum lugar das dez primeiras linhas do seu script. Isto deve corrigir o seu problema.

Você também pode torná-lo compatível , mas quase certamente não vale a pena.

Keith
fonte
Sim, obrigado pela sugestão. Embora afirmei explicitamente que isso não teve nenhum impacto no problema específico que estava enfrentando.
Der Hochstapler 26/03
Esta é uma resolução real para os nagios. sem -epn, o plugin é incluído e executado internamente pelo nagios. com -epn, ele é carregado como executável externo, semelhante a binários ou scripts bash. Veja a página: nagios.sourceforge.net/docs/3_0/embeddedperl.html e considere a reclamação de
epn
1
Os dois pontos são necessários # nagios: -epn, de acordo com os documentos e os meus testes.
Idupree
1
Curiosamente, a versão atual do Ubuntu LTS (18.04) do nagios-plugins-standard (2.2-3ubuntu2) tem esse problema. As coisas funcionam se quer modificar plugins afetadas, por exemplo, check_disk_smbe check_file_age, ou se eu definiruse_embedded_perl_implicitly=0
Akom
Corrigido para mim! Obrigado ...
Oscar Bravo
3

Alguns scripts Perl do Nagios Exchange tentam incluir o utils.pmmódulo Perl. Você encontrará uma linha como esta em algum lugar:

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

Ao instalar o Nagios no Debian, o local padrão do utils.pmarquivo é /usr/lib/nagios/plugins/utils.pm. Portanto, a use libdiretiva deve ser:

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

A execução do comando na linha de comando provavelmente funcionou porque você estava participando /usr/lib/nagios/plugins/, editando seu plug-in.

Der Hochstapler
fonte
2

Prefixe o comando com /usr/bin/perl.

Esta solução é mais uma solução alternativa, provavelmente não é uma boa ideia fazê-lo, mas pelo menos o seu plugin deve funcionar da mesma maneira que quando você o inicia a partir do terminal.

NOTA: Na minha experiência, # nagios -epnfunciona com bastante frequência, mas às vezes não parece suficiente. Percebi que, quando isso acontece, os plugins com defeito relatam muitos avisos (quando o script é chamado perl -w).

tiktak
fonte