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 Server я уже настроил 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
это также дает результат. Я не знаю, что пошло не так, потому что все мои другие команды работают нормально.
6 ответов
Выполните следующие шаги для добавления проверки диска удаленного клиента. Эти шаги могут быть выполнены для настройки 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 соединения -H myHOST -u myUSERNAME -p myPASSWORD" работает в командной строке.
- Вы сказали, что NRPE работает на этом сервере с другими командами.
- Вы сказали, что команда не выполняется в командной строке с сервера nagios.
Это говорит мне о том, что проблема в определении на сервере NRPE. Возможно ли, что ваши запутанные переменные для myHOST, myUSERNAME или myPASSWORD содержат символ, который не буквально интерпретируется NRPE? (Я предполагаю, что вы уже проверили на наличие опечаток и дубликатов определений!)
У меня был такой же симптом. Так что, возможно, это сэкономит кому-то еще время. Моя проблема заключалась в том, что мне не хватало расширения.cfg для файлов в каталоге include.
Мой включенный каталог был include_dir=/etc/nagios/nrpe.d
Машина работает под управлением Ubuntu 14.04 для справки, используя NRPE v2.15
Обычно я подозреваю, что проблема с разрешениями для этого плагина. Обязательно запустите ручные тесты от имени пользователя nagios (или nrpe).
Но в этом случае он заявляет, что команда NRPE даже не определена, так что она даже не заходит так далеко, как ее запуск...
Поместите команду NRPE def непосредственно в nrpe.cfg, а не во включаемый файл. (А затем перезапустите NRPE.)
Я вспоминаю, как несколько лет назад у меня была похожая проблема (но с NRPE от EPEL), когда по какой-то причине он не включал другой файл в nrpe.cfg. Я так и не выяснил, почему включаемый файл не работает.
У меня была такая же проблема для одной из новых проверок, которые я реализовал. Пробовал запустить проверку вручную с Nagios Server
[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 Daemon на Nagios Client Server необходимо перезапустить, поскольку он получает все данные из 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.
Когда-то у меня была похожая проблема, оказалось, что кто-то уже установил NRPE на сервере (я не знал), и когда я попытался получить доступ, он взял старую версию и конфигурацию NRPE, решение было искать старый NRPE. и перенаправить доступ...