Я установил 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.