Nagios NRPE: Команда «my_command» не определена

Nagios NRPE: Команда «my_command» не определена

Я установил Nagios® Core™ 3.5.1и NRPE v2.14на моем клиенте, который работаетRHEL 6.3

У меня на Nagios появилось это сообщение об ошибке

NRPE: Command 'check_mysql_connections' not defined

На моем nrpe.cfgкомпьютере уже настроено allowed_host, include_dir:

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

моя команда включена/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

На сервере Nagios я уже настроил файл nagios.cfgи добавил commands-custom.cfgв /etc/nagios/objectsнего содержимое следующего содержания:

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

и /etc/nagios/serversя добавилmysql.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
}

Я уже убиваю NRPEпроцесс, удаляю /var/run/nrpe.pidи снова запускаю процесс NRPE. И также мой NRPE НЕ работает под xinet.d

Когда я пытаюсь выполнить команду локально на удаленном хосте, она дает результат. А когда я пытаюсь выполнить с сервера nagios с помощью этой команды:

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

это тоже дает результат. Я не знаю, что пошло не так, потому что все мои другие команды работают нормально.

ОБНОВЛЕНИЕ И РЕШЕНИЕ

спустя столько лет я вспомнил, как решить эту проблему.

Мне нужно отредактировать пользовательские команды (на сервере Nagios) commands-custom.cfgна /etc/nagios/objects, так что это будет выглядеть так:

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

а в разделе «Определить услугу» это было так:

## Define Service ##

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

Подводя итог, мне нужно отделить команду для проверки службы check_nrpeи вызова пользовательских команд с помощьюcheck_nrpe!check_mysql_connections

Ссылка: https://support.nagios.com/forum/viewtopic.php?f=7&t=33448

решение1

Начните с одного конца и двигайтесь обратно.

  • Вы сказали, что «/usr/lib64/nagios/plugins/check_mysql_all -K connections -H myHOST -u myUSERNAME -p myPASSWORD» работает в командной строке.
  • Вы сказали, что NRPE работает на этом сервере с другими командами.
  • Вы сказали, что команда не выполняется в командной строке с сервера Nagios.

Это говорит мне, что проблема в определении на сервере NRPE. Возможно ли, что ваши обфусцированные переменные для myHOST, myUSERNAME или myPASSWORD содержат символ, который интерпретируется NRPE не буквально? (Я предполагаю, что вы уже проверили на опечатки и дублирующие определения!)

решение2

Выполните следующие шаги для добавления удаленной проверки диска клиента. Эти шаги можно выполнить также для настройки mysql.

Клиент


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 /

Сервер


Из файла /usr/local/nagios/etc/resource.cfgследует, что это $USER1$=/usr/local/nagios/libexec:

Итак, выполните команды в терминале:

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

Отредактируйте файл /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
     }

Редактировать /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
    }

Перезапустить службы

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

Вы также можете проверить команды в терминале как пользователь 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

решение3

Обычно я бы подозревал проблему с разрешениями этого плагина. Обязательно запустите ручные тесты как пользователь nagios (или nrpe).

Но в этом случае он утверждает, что команда NRPE даже не определена, поэтому он даже не доходит до ее выполнения...

Поместите команду NRPE def непосредственно в nrpe.cfg, а не во включенный файл. (А затем перезапустите NRPE.)

Я помню, что у меня была похожая проблема (но с NRPE из EPEL) несколько лет назад, когда по какой-то причине он не включал другой файл в nrpe.cfg. Я так и не понял, почему не работал файл include.

решение4

У меня был тот же симптом. Так что, возможно, это сэкономит кому-то время. Моя проблема была в том, что у меня отсутствовало расширение .cfg в файлах в каталоге include.

Мой каталог include былinclude_dir=/etc/nagios/nrpe.d

Для справки, на машине установлена ​​ОС Ubuntu 14.04 с использованием NRPE v2.15.

Связанный контент