Назад | Перейти на главную страницу

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

Выполните следующие действия, чтобы добавить проверку диска удаленного клиента. Эти шаги можно выполнить и для настройки 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

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

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

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

У меня была такая же проблема с одной из новых проверок, которые я реализовал. Пытался запустить проверку вручную с сервера Nagios

[foo@nagios.example.com]$ /usr/lib64/nagios/plugins/check_nrpe -H db1.example.com -c check_mysql
NRPE: Command 'check_mysql' not defined

Оказалось, что демон Nagios NRPE на клиентском сервере Nagios необходимо перезапустить, поскольку он передает все из nrpe.d в память программ.

[foo@db1.example.com]$ sudo  /etc/init.d/nrpe restart
Shutting down Nagios NRPE daemon (nrpe):                   [  OK  ]
Starting Nagios NRPE daemon (nrpe):                        [  OK  ]

Провел проверку еще раз и на этот раз все получилось

[foo@nagios.example.com]$ /usr/lib64/nagios/plugins/check_nrpe -H db1.example.com -c check_mysql
OK: MySQL is running fine.

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

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

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

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

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

Мой включаемый каталог был include_dir=/etc/nagios/nrpe.d

На компьютере для справки работает Ubuntu 14.04 с использованием NRPE v2.15.

Некоторое время назад у меня была аналогичная проблема, оказалось, что кто-то уже установил NRPE на сервере (я не знал), и когда я попытался получить доступ, он взял старую версию и конфигурацию NRPE, решение было искать старый NRPE и перенаправить доступ ...