Nagios NRPE: Comando “my_command” no definido

Nagios NRPE: Comando “my_command” no definido

He instalado Nagios® Core™ 3.5.1y NRPE v2.14en mi cliente que se ejecutaRHEL 6.3

Tengo este mensaje de error en mi Nagios

NRPE: Command 'check_mysql_connections' not defined

En mi nrpe.cfgya configuré allowed_host, include_dir:

allowed_hosts=xx.xx.xx.xx
dont_blame_nrpe=1
include_dir=/etc/nagios/services

mi comando está activado/etc/nagios/services/check_mysql_connections.cfg

command[check_mysql_connections]=/usr/lib64/nagios/plugins/check_mysql_all -K connections -H myHOST -u myUSERNAME -p myPASSWORD

En Nagios Server, ya configuré el nagios.cfgarchivo y agregué el commands-custom.cfgque /etc/nagios/objectscontiene algo así:

define command {
command_name    check_mysql_connections
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_mysql_connections
}

y en /etc/nagios/servershe añadido elmysql.cfg

## Define Host Group ##

define hostgroup {
hostgroup_name          mysql-databases
alias                   MySQL Databases
}

#######################
## Define Hosts ##

define host {
use             linux-server
host_name       bdgbnbpmydb02
alias           MySQL Database
address         xx.xx.xx.xx
hostgroups      mysql-databases
contact_groups  admins
check_command   check-host-alive
}

#######################
## Define Service ##

define service {
use                     generic-service
hostgroup_name          mysql-databases
service_description     MySQL Connections
check_command           check_mysql_connections
}

Ya terminé el NRPEproceso, eliminé /var/run/nrpe.pidy comencé el proceso NRPE nuevamente. Y además mi NRPE NO se ejecuta bajo xinet.d

Cuando intento ejecutar el comando localmente en el host remoto, da resultado. Y cuando intento ejecutar desde el servidor nagios usando este comando:

/usr/lib64/nagios/plugins/check_nrpe -H xx.xx.xx.xx -c check_mysql_connections

también da resultado. No sé qué salió mal, porque todos mis demás comandos se ejecutan normalmente.

ACTUALIZAR Y RESOLVER

Después de tantos años, recuerdo cómo solucionar este problema.

Necesito editar los comandos personalizados (en Nagios Server) commands-custom.cfgen /etc/nagios/objects, por lo que será así:

define command {
command_name         check_nrpe
command_line         $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 
}

y en "Definir servicio" era así:

## Define Service ##

define service {
use                     generic-service
hostgroup_name          mysql-databases
service_description     MySQL Connections
check_command           check_nrpe!check_mysql_connections
}

En resumen, necesito separar el comando para verificar el servicio check_nrpey llamar a los comandos personalizados usandocheck_nrpe!check_mysql_connections

Referencia: https://support.nagios.com/forum/viewtopic.php?f=7&t=33448

Respuesta1

Comience por un extremo y avance hacia atrás.

  • Dijiste que "/usr/lib64/nagios/plugins/check_mysql_all -K conexiones -H myHOST -u myUSERNAME -p myPASSWORD" funciona en la línea de comando.
  • Dijiste que NRPE funciona en ese servidor con otros comandos.
  • Dijiste que el comando falla en la línea de comando del servidor nagios.

Esto me sugiere que el problema está en la definición del servidor NRPE. ¿Es posible que sus variables ofuscadas para myHOST, myUSERNAME o myPASSWORD contengan un carácter que NRPE interpreta de forma no literal? (¡Supongo que ya has comprobado si hay errores tipográficos y definiciones duplicadas!)

Respuesta2

Siga estos pasos para agregar una verificación de disco de cliente remoto. Estos pasos también se pueden seguir para la configuración de MySQL.

Cliente


vi /etc/nagios/nrpe.cfg

allowed_hosts=127.0.0.1,nagios_server_ip_here
dont_blame_nrpe=1
#checking root  partion
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 25% -c 20% -p /

Servidor


Del archivo /usr/local/nagios/etc/resource.cfgse proporciona como $USER1$=/usr/local/nagios/libexec:

Entonces, ejecute los comandos en la terminal:

locate check_nrpe                              //find the location of check_nrpe
cp /usr/lib/nagios/plugins/check_nrpe /usr/local/nagios/libexec/
cd /usr/local/nagios/libexec/
chown nagios:nagios check_nrpe

Edite el archivo /usr/local/nagios/etc/objects/commands.cfg:

define command{
    command_name    check_disk
    command_line    $USER1$/check_nrpe -H '$HOSTADDRESS$' -t 30 -c check_disk
     }

Editar /usr/local/nagios/etc/servers/clients.cfg:

define service {
    use                             generic-service
    host_name                       BI Server
    service_description             Disk
    check_command                   check_disk
    notifications_enabled           1
    }

Reiniciar servicios

/etc/init.d/nagios restart                          //server side
/etc/init.d/nagios-nrpe-server restart             //client side

También puedes verificar los comandos en la terminal como usuario de nagios,

su - nagios
cd /usr/local/nagios/libexec/
./check_nrpe -H nagios_client_ip_here -t 30 -c check_mysql
./check_nrpe -H nagios_client_ip_here -t 30 -c check_disk

Respuesta3

Normalmente, sospecharía que hay un problema de permisos con ese complemento. Asegúrese de ejecutar sus pruebas manuales como usuario de nagios (o nrpe).

Pero en este caso, afirma que el comando NRPE ni siquiera está definido, por lo que ni siquiera llega a ejecutarlo...

Coloque el comando NRPE def directamente en nrpe.cfg, no en un archivo incluido. (Y luego reinicie NRPE).

Recuerdo haber tenido un problema similar (pero con el NRPE de EPEL), hace unos años, donde no incluía otro archivo en nrpe.cfg por alguna razón. Sin embargo, nunca supe por qué el archivo de inclusión no funcionó.

Respuesta4

Tuve el mismo síntoma. Entonces, tal vez esto le ahorre algo de tiempo a alguien más. Mi problema era que me faltaba la extensión .cfg en los archivos del directorio de inclusión.

Mi directorio de inclusión erainclude_dir=/etc/nagios/nrpe.d

La máquina ejecuta Ubuntu 14.04 como referencia, usando NRPE v2.15

información relacionada