Nagios NRPE: Comando “my_command” não definido

Nagios NRPE: Comando “my_command” não definido

Eu instalei Nagios® Core™ 3.5.1e NRPE v2.14no meu cliente que está rodandoRHEL 6.3

Eu tenho essa mensagem de erro no meu Nagios

NRPE: Command 'check_mysql_connections' not defined

No meu nrpe.cfgeu já configurei allowed_host, include_dir:

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

meu comando está ativado/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

No Nagios Server, já configurei o nagios.cfgarquivo, e adicionei o commands-custom.cfgque /etc/nagios/objectscontém assim:

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

e em seguida /etc/nagios/serversadicionei omysql.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
}

Já mato o NRPEprocesso, removo /var/run/nrpe.pide inicio o processo NRPE novamente. E também meu NRPE NÃO está rodando em xinet.d

Quando tento executar o comando localmente no host remoto, ele dá resultado. E quando tento executar no servidor nagios usando este comando:

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

também dá resultado. Não sei o que deu errado, porque todos os meus outros comandos estão funcionando normalmente.

ATUALIZAÇÃO E RESOLVIDO

depois de tantos anos, lembro-me de como resolver esse problema.

Preciso editar os comandos customizados (no Servidor Nagios) commands-custom.cfgno /etc/nagios/objects, então ficará assim:

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

e em "Definir Serviço" ficou assim:

## Define Service ##

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

Resumindo, preciso separar o comando para verificar o serviço check_nrpee chamar os comandos personalizados usandocheck_nrpe!check_mysql_connections

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

Responder1

Comece em uma extremidade e volte.

  • Você disse que "/usr/lib64/nagios/plugins/check_mysql_all -K conexões -H myHOST -u myUSERNAME -p myPASSWORD" funciona na linha de comando.
  • Você disse que o NRPE funciona nesse servidor com outros comandos.
  • Você disse que o comando falha na linha de comando do servidor nagios.

Isso me sugere que o problema está na definição do servidor NRPE. É possível que suas variáveis ​​ofuscadas para myHOST, myUSERNAME ou myPASSWORD contenham um caractere que é interpretado de forma não literal pelo NRPE? (Presumo que você já tenha verificado erros de digitação e definições duplicadas!)

Responder2

Siga estas etapas para adicionar uma verificação de disco do cliente remoto. Estas etapas também podem ser seguidas para a configuração do 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


Do arquivo /usr/local/nagios/etc/resource.cfgé dado como $USER1$=/usr/local/nagios/libexec:

Então, execute os comandos no 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 o arquivo /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 serviços

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

Você também pode verificar os comandos no terminal como usuário 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

Responder3

Normalmente, eu suspeitaria de um problema de permissão com esse plugin. Certifique-se de executar seus testes manuais como usuário do nagios (ou nrpe).

Mas neste caso, ele está alegando que o comando NRPE nem está definido, então nem chega a executá-lo...

Coloque o comando NRPE def diretamente em nrpe.cfg, não em um arquivo incluído. (E então reinicie o NRPE.)

Lembro-me de ter tido um problema semelhante (mas com o NRPE da EPEL), há alguns anos, onde não incluía outro arquivo no nrpe.cfg por algum motivo. Eu nunca descobri por que o arquivo de inclusão não funcionou.

Responder4

Eu tive o mesmo sintoma. Então talvez isso economize algum tempo para outra pessoa. Meu problema era que estava faltando a extensão .cfg nos arquivos do diretório include.

Meu diretório de inclusão erainclude_dir=/etc/nagios/nrpe.d

A máquina está executando o Ubuntu 14.04 para referência, usando NRPE v2.15

informação relacionada