Eu tenho esse problema com o NRPE, todas as coisas que encontrei até agora na rede parecem me indicar coisas que já tentei.
# /usr/local/nagios/plugins/check_nrpe -H nrpeclient
dá
NRPE v2.12
como esperado.
A execução manual do comando (conforme definido em nrpe.cfg no "nrpeclient", fornece a resposta esperada
nrpe.cfg:
command[check_openmanage]=/usr/lib/nagios/plugins/additional/check_openmanage -s -e -b ctrl_driver=0 bat_charge
"Expected response"
Mas se eu tentar executar o comando no servidor Nagios, obtenho o seguinte:
# /usr/local/nagios/plugins/check_nrpe -H comxps -c check_openmanage
NRPE: Unable to read output
Alguém pode pensar em outro lugar que eu possa ter cometido um erro com isso? Eu fiz a mesma coisa em vários outros servidores sem nenhum problema. A única diferença que consigo pensar nisso é que esta caixa é baseada no RHEL 5, enquanto as outras são baseadas no RHEL 4.
Os dois bits acima que testei são os que a maioria das pessoas parece sugerir quando enfrentam esse problema.
Devo mencionar que recebo um erro estranho nos logs quando reinicio nrpe
:
nrpe[14534]: Unable to open config file '/usr/local/nagios/etc/nrpe.cfg' for reading
nrpe[14534]: Continuing with errors...
nrpe[14535]: Starting up daemon
nrpe[14535]: Warning: Daemon is configured to accept command arguments from clients!
nrpe[14535]: Listening for connections on port 5666
nrpe[14535]: Allowing connections from: bodbck,combck,nam-bck
Mesmo assim, ele está claramente lendo esse /usr/local/nagios/etc/nrpe.cfg
arquivo para obter as coisas sobre as quais está falando mais adiante ..
Respostas:
Você tem um problema de direitos.
Mude o comando para:
(adicione sudo)
Em seguida, adicione o nagios-user aos sudoers:
Ou você pode simplesmente chmod o arquivo ... Isso também funciona.
Se você estiver usando o CentOS, Red Hat, Scientific ou Fedora, certifique-se de desativar
Defaults requiretty
o arquivo sudoers.fonte
Resposta curta: se você estiver usando um plug-in Bash, verifique se possui um shebang informando qual intérprete deve ser usado:
#!/bin/bash
Eu estava enfrentando o mesmo problema com um plugin do Nagios que eu escrevi. O script estava sendo executado conforme o esperado quando iniciado localmente, mesmo quando executado como usuário
nagios
usando a seguinte instrução:Mas a inicialização remota usando NRPE do servidor Nagios3 não teve êxito:
Finalmente resolvi esse caso adicionando um shebang no meu script, pois parecia que a execução do script pelo NRPE não usava o mesmo intérprete que o da execução
sudo sudo -s -u nagios
.fonte
#!/bin/bash -el
eval "$(rbenv init -)"
/usr/lib/nagios/plugins/check_something $@
No meu caso, o problema era simplesmente - o usuário nagios não conseguiu executar o script. Após o chmod, ele começou a funcionar. Sudo não é necessário. É até mal :)
fonte
check_nrpe estava recebendo 'NRPE: Não foi possível ler a saída' apesar da verificação funcionar localmente porque o plug-in que eu estava usando não funcionou bem com o SELinux. Desative-o e certifique-se de remover os contextos do arquivo:
fonte
Verifique caminhos, permissões, selinux, iptables.
O meu era um problema de correção no cliente: nrpe.cfg, verifique novamente o caminho do comando para o nome do plugin check_ *. Estes podem ser confusos, (lib / local) (libexec / plugins) como um nome de caminho. Arranquei por engano e coloquei os caminhos do arquivo nrpe cfg pré-empacotado comentado para fazer comandos. A instalação do make install ou do yum plugin os coloca em um diretório difft.
confirmado: / usr / local / nagios / libexec / check_disk
versus
caminho real: / usr / lib / nagios / plugins / check_disk
No servidor, pude confirmar que não era um problema de firewall, podia fazer telnet para a porta 5666, executar um check_nrpe geral e obter o status como um valor de retorno. Pode executar os comandos localmente, mas o nrpe tinha o caminho errado no cliente no nrpe.cfg.
fonte
No meu caso, apenas um plugin falhou enquanto vários outros funcionaram bem. Acabou sendo um problema LOCALE.
O plugin foi
check_mem.sh
e executou um grep paraMem
na saída defree
. Mas LOCALE em todo o sistema retornouSpeicher
(alemão) em vez deMem
, portanto, todos os valores recebidos eram cadeias vazias.fonte
Este é um problema de permissão, apenas dê a execução do script corretamente e tudo ficará bem:
Aqui está um exemplo: Antes / Host remoto :
Servidor NRPE :
Depois: Host Remoto :
Problema resolvido.
fonte
No meu caso, o arquivo de log sendo monitorado era de propriedade de root: adm, portanto, a adição do usuário nagios ao grupo adm fez com que o comando check_log fosse bem-sucedido, mas somente quando executado diretamente nos hosts monitorados. Continuou a falhar usando check_nrpe no servidor Nagios até reiniciar o serviço nagios-nrpe-server nos hosts monitorados, por exemplo
Então, aparentemente, foi necessário reiniciar o serviço para que as alterações nas permissões entrassem em vigor no NRPE, mas demorei um pouco para descobrir isso.
fonte
No caso de plugins NRPE personalizados, imprima alguma saída junto com o valor de saída. Se não houver saída do script, o NRPE reclamará dizendo "NRPE incapaz de ler a saída" . Você pode habilitar a depuração no nrpe.cfg e observe este erro.
fonte
No meu caso, os problemas estavam relacionados ao selinux (executando o RHEL 6.5, o selinux está definido para impor).
Instalar nagios-plugins- * via yum criará seus arquivos de plug-in em / usr / lib64 / nagios / plugins. Se você verificar o fcontext nesses arquivos de plug-in (ls -lZ), verá que os arquivos têm o tipo de contexto definido como "nagios_system_plugin_exec_t", que é o tipo de contexto que check_nrpe espera.
No meu caso, eu criei um script personalizado "check_mem.sh" usando "vi". O arquivo resultante teve o tipo de contexto definido como "lib_t". Isso estava fazendo com que o nrpe produzisse o "NRPE: Não foi possível ler a saída".
Alterar o contexto do arquivo para "nagios_system_plugin_exec_t" resolveu o problema:
chcon -t nagios_system_plugin_exec_t /usr/lib64/nagios/plugins/check_mem.sh
A solução de problemas usual do selinux também me indicaria esse problema (verificando /var/log/audit/audit.log), mas foi a última coisa que pensei sobre
Edit: chcon apenas altera temporariamente o contexto. Para alterá-lo persistentemente, use
semanage fcontext -a -t nagios_system_plugin_exec_t /usr/lib64/nagios/plugins/check_mem.sh restorecon -vF /usr/lib64/nagios/plugins/check_mem.sh
fonte
Pode ser que você não tenha instalado os plugins do Nagios, o NRPE não pode encontrá-los ou acessá-los.
Eu nunca tive que adicionar meus comandos ao Sudoers. Verifique se os comandos pertencem ao usuário do Nagios e se estão legíveis.
fonte
Eu acho que você deve adicionar os plugins no seu diretório local
/usr/lib64/nagios/plugins/*
. Eu tive o mesmo problema que você e posso resolvê-lo com esta solução.fonte
Eu tive o problema que você escreve. O teste que fiz foi do perl. Coloque esta linha no arquivo
/etc/nagios/nrpe.cfg
para fazê-lo funcionar.fonte
Há um artigo muito bom que cobre toda a instalação e configuração do agente NRPE com muitos exemplos de check_commands. Eu uso este artigo sempre que preciso instalar o NRPE em um novo servidor. Mais do que isso, no final da página, você pode encontrar um script legal que instala e configura automaticamente o NRPE para você (com base nas variáveis definidas), o artigo pode ser encontrado: Aqui
fonte
Isso geralmente acontece quando o servidor NRPE é iniciado com o usuário nrpe, em vez de nagios.
Alterar o
nrpe_user
valor para nagios no/etc/nagios/nrpe.cfg
arquivo deve resolver seu problema.Também
nrpe_group
pode ser alterado, se necessário.fonte
Outra coisa a verificar é que, se o seu comando estiver usando
sudo -u <another user>
para executar o comando, olibexec
diretório (e os diretórios acima dele) deverão ser legíveis pelo usuário que está sendo processado.Por exemplo, se o seu comando for:
O usuário do tomcat deve poder acessar esse arquivo.
Uma maneira de corrigir isso seria:
Substituindo a última parte por onde seus executáveis estiverem
fonte
Eu tive o mesmo problema e consigo resolvê-lo matando o processo nagios (na máquina monitorada):
Tudo correu bem depois disso.
fonte
Só tive esse problema no FreeBSD. Depois de bater minha cabeça contra uma parede por uma hora, percebi que o problema era que ele
/usr/local/nagios/etc/nrpe.cfg
estava apontando para o local errado do sudo.Para encontrar o local correto para o qual apontar para o comando sudo, execute:
# whereis sudo
Alterei o command_prefix no nrpe.cfg de:
command_prefix=/usr/local/sudo
para:
command_prefix=/usr/local/bin/sudo
Em seguida, correu
service nrpe restart
e o problema foi resolvido.Pode ser um problema semelhante em outros sistemas operacionais, apenas mais uma coisa para verificar se você verificou todos os outros problemas de permissões possíveis e ainda enfrenta esse problema.
fonte
Plugins Nagios ausentes no cliente nrpe.
Não use o yum install nagios-plugins (nagios-plugins-2.0.3-1.el6.x86_64). Ele não instala todos os plugins. Faça o download do nagios-plugins-1.4.11.tar.gz e siga as instruções neste documento.
http://www.thegeekstuff.com/2008/06/how-to-monitor-remote-linux-host-using-nagios-30/
fonte
Eu tive esse problema e resolvi desabilitar o selinux
setenforce 0
fonte