Я установил 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
Начните с одного конца и двигайтесь обратно.
Это наводит на мысль, что проблема в определении на сервере 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 и перенаправить доступ ...