Tengo este problema con NRPE, todo lo que he encontrado hasta ahora en la red parece señalarme cosas que ya he probado.
# /usr/local/nagios/plugins/check_nrpe -H nrpeclient
da
NRPE v2.12
como se esperaba.
Ejecutar el comando a mano (como se define en nrpe.cfg en "nrpeclient", da la respuesta esperada
nrpe.cfg:
command[check_openmanage]=/usr/lib/nagios/plugins/additional/check_openmanage -s -e -b ctrl_driver=0 bat_charge
"Expected response"
Pero si trato de ejecutar el comando desde el servidor Nagios me sale lo siguiente:
# /usr/local/nagios/plugins/check_nrpe -H comxps -c check_openmanage
NRPE: Unable to read output
¿Alguien puede pensar en otro lugar donde podría haber cometido un error con esto? He hecho lo mismo en muchos otros servidores sin ningún problema. La única diferencia que puedo pensar con esto es que esta caja está basada en RHEL 5, mientras que las otras están basadas en RHEL 4.
Esos dos bits anteriores que he probado son lo que la mayoría de las personas parecen sugerir cuando las personas han tenido este problema.
Debo mencionar que me sale un error extraño en los registros cuando 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
Aunque, simplemente está leyendo ese /usr/local/nagios/etc/nrpe.cfg
archivo para obtener las cosas de las que habla más abajo ...
Respuestas:
Tienes un problema de derechos.
Cambie el comando a:
(agregar sudo)
Luego, agregue el usuario nagios a los sudoers:
O podrías simplemente modificar el archivo ... Eso también funciona.
Si está utilizando CentOS, Red Hat, Scientific o Fedora, asegúrese de desactivarlo
Defaults requiretty
en el archivo sudoers.fuente
Respuesta corta: si está usando un complemento Bash, asegúrese de tener un shebang que indique qué intérprete debe usarse:
#!/bin/bash
Estaba enfrentando el mismo problema con un complemento de Nagios que escribí yo mismo. El script se ejecutó como se esperaba cuando se lanzó localmente, incluso cuando se ejecutaba como usuario
nagios
con la siguiente instrucción:Pero el lanzamiento remoto utilizando NRPE desde el servidor Nagios3 no tuvo éxito:
Finalmente resolví este caso agregando un shebang en mi script, ya que parecía que ejecutar el script a través de NRPE no usaba el mismo intérprete que cuando se ejecutaba
sudo sudo -s -u nagios
.fuente
#!/bin/bash -el
eval "$(rbenv init -)"
/usr/lib/nagios/plugins/check_something $@
En mi caso, el problema era simplemente: el usuario nagios no pudo ejecutar el script. Después de chmod comenzó a funcionar. Sudo no es necesario. Es incluso malvado :)
fuente
check_nrpe estaba obteniendo 'NRPE: no se puede leer la salida' a pesar de que el cheque funcionaba localmente porque el complemento que estaba usando no funcionaba bien con SELinux. Deshabilítelo y asegúrese de eliminar los contextos del archivo:
fuente
Verifique rutas, permisos, selinux, iptables.
El mío fue un problema de ruta en el cliente: nrpe.cfg, verifique la ruta del comando al nombre del complemento check_ *. Estos pueden ser confusos, (lib / local) (libexec / plugins) como un nombre de ruta. Tiró por error y puse los caminos del archivo ngpe cfg preempaquetado comentado para hacer comandos. La instalación del complemento make install o yum los coloca en un directorio difft.
commaneted: / usr / local / nagios / libexec / check_disk
versus
realpath: / usr / lib / nagios / plugins / check_disk
Desde el servidor pude confirmar que no se trataba de un problema de firewall, podía hacer telnet al puerto 5666, podía ejecutar un check_nrpe general y obtener el estado como valor de retorno. Podría ejecutar los comandos localmente pero nrpe tenía la ruta incorrecta en el cliente en el nrpe.cfg.
fuente
En mi caso, solo un complemento falló mientras que otros funcionaron bien. Resultó ser un problema LOCALE.
El complemento fue
check_mem.sh
y realizó un grep paraMem
la salida defree
. Pero el sistema LOCALE regresóSpeicher
(alemán) en lugar deMem
, por lo que todos los valores recibidos eran cadenas vacías.fuente
Este es un problema de permiso, solo dale a la ejecución del script correctamente y estará bien:
Aquí un ejemplo: Antes / Host remoto :
Servidor NRPE :
Después: host remoto :
Problema resuelto.
fuente
En mi caso, el archivo de registro que se está monitoreando era propiedad de root: adm, por lo que agregar el usuario nagios al grupo adm hizo que el comando check_log tuviera éxito, pero solo cuando se ejecuta directamente en los hosts monitoreados. Continuó fallando usando check_nrpe en el servidor Nagios hasta que reinicié el servicio nagios-nrpe-server en los hosts monitoreados, por ej.
Aparentemente, era necesario reiniciar el servicio para que el cambio de permisos entrara en vigencia para NRPE, pero me tomó un tiempo resolver esto.
fuente
En el caso de complementos personalizados de NRPE, asegúrese de imprimir algunos resultados junto con el valor de salida. Si no hay salida del script, NRPE se quejará diciendo "NRPE no puede leer la salida" . Puede habilitar la depuración en nrpe.cfg y observar este error.
fuente
En mi caso, los problemas estaban relacionados con selinux (ejecutando RHEL 6.5, selinux está configurado para hacer cumplir).
La instalación de nagios-plugins- * a través de yum creará sus archivos de complemento en / usr / lib64 / nagios / plugins. Si marca el fcontext en esos archivos de complemento (ls -lZ), verá que los archivos tienen el tipo de contexto establecido en "nagios_system_plugin_exec_t", que es el tipo de contexto que check_nrpe espera.
En mi caso, había creado un script personalizado "check_mem.sh" usando "vi". El archivo resultante tenía el tipo de contexto establecido en "lib_t". Esto causaba que nrpe produjera el "NRPE: no se puede leer la salida".
Cambiar el contexto del archivo a "nagios_system_plugin_exec_t" resolvió el problema:
chcon -t nagios_system_plugin_exec_t /usr/lib64/nagios/plugins/check_mem.sh
La solución de problemas habitual de selinux también me habría señalado este problema (marcando /var/log/audit/audit.log), pero por supuesto fue lo último en lo que pensé
Editar: chcon solo cambia temporalmente el contexto. Para cambiarlo 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
fuente
Es posible que no haya instalado sus complementos de Nagios, NRPE no puede encontrarlos ni acceder a ellos.
Nunca he tenido que agregar mis comandos a Sudoers. Asegúrese de que los comandos sean propiedad del usuario de Nagios y que sean legibles.
fuente
Creo que debe agregar los complementos en su directorio local
/usr/lib64/nagios/plugins/*
. Tuve el mismo problema que tú y puedo resolverlo con esta solución.fuente
Tuve el problema que escribes. La prueba que hice fue de perl. Pon esta línea en el archivo
/etc/nagios/nrpe.cfg
para que funcione.fuente
Hay un artículo realmente bueno que cubre toda la instalación y configuración del agente NRPE con muchos ejemplos de check_commands. Utilizo este artículo cuando necesito instalar NRPE en un nuevo servidor. Más que eso, al final de la página puede encontrar una secuencia de comandos genial que instala y configura automáticamente NRPE para usted (según las variables que establezca), puede encontrar el artículo: aquí
fuente
Esto suele suceder cuando el servidor NRPE se inicia con el usuario nrpe, en lugar de nagios.
Cambiar el
nrpe_user
valor a nagios en el/etc/nagios/nrpe.cfg
archivo debería resolver su problema.También
nrpe_group
se puede cambiar si es necesario.fuente
Otra cosa a verificar es que si su comando está usando
sudo -u <another user>
para ejecutar el comando,libexec
el usuario (a los directorios que están encima) deben poder leerlo.Por ejemplo, si su comando es:
El usuario de tomcat debe poder acceder a ese archivo.
Una forma de arreglar esto sería:
Reemplazar la última parte por donde vivan tus ejecutables
fuente
Tuve el mismo problema y logré resolverlo matando el proceso de nagios (en la máquina monitoreada):
Todo salió bien después de eso.
fuente
Acabo de tener este problema en FreeBSD. Después de golpear mi cabeza contra la pared durante una hora, me di cuenta de que el problema era que
/usr/local/nagios/etc/nrpe.cfg
estaba apuntando a la ubicación incorrecta para sudo.Para encontrar la ubicación correcta a la que apuntar el comando sudo, ejecute:
# whereis sudo
Luego cambié el comando_prefijo en nrpe.cfg de:
command_prefix=/usr/local/sudo
a:
command_prefix=/usr/local/bin/sudo
Luego corrió
service nrpe restart
y el problema se resolvió.Podría ser un problema similar en otros sistemas operativos, solo otra cosa que debe verificar si ha verificado todos los otros posibles problemas de permisos y aún tiene este problema.
fuente
Faltan complementos de Nagios en el cliente nrpe.
No utilice yum install nagios-plugins (nagios-plugins-2.0.3-1.el6.x86_64). No instala todos los complementos. Descargue nagios-plugins-1.4.11.tar.gz y siga las instrucciones de este documento.
http://www.thegeekstuff.com/2008/06/how-to-monitor-remote-linux-host-using-nagios-30/
fuente
Tuve este problema y resolví deshabilitar el selinux
setenforce 0
fuente