Я пытаюсь добавить проверку NRPE для мониторинга агента Puppet, но у меня возникают трудности с тем, чтобы плагин возвращал правильный результат при локальном запуске.
Я использую этот плагин:
при выполнении сценария локально на клиенте nagios результат правильный, но выполнение с nrpe приводит к критическому результату. Полагаю, я что-то упустил в своей конфигурации. Другие плагины nrpe работают успешно.
Я перезапустил nrpe.d (и проверил, пока он был выключен, что ни один pid nrpe не работал). Разрешения, владелец и группа для файла check_puppet такие же, как и другие мои проверки
[root@puppet-master]# /usr/lib64/nagios/plugins/check_nrpe -H server.addr -c check_puppet
CRITICAL: Puppet daemon not running or something wrong with process
[root@git nrpe.d]# /usr/lib64/nagios/plugins/check_puppet
OK: Puppet agent "3.4.3" running catalogversion 1398787991, and executed at Tue 29 Apr 2014 04:13:25 PM UTC for last time
nagios_commands.cfg:
define command {
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 15 -c check_puppet
command_name check_nrpe_puppet
}
nagios_service.cfg:
define service {
## --PUPPET_NAME-- (called '_naginator_name' in the manifest) check_puppet
check_command check_nrpe_puppet
host_name server.addr
service_description check_puppet
use generic-service
}
/etc/nrpe.d/nrpe-check_puppet
# Configuration for check_puppet (from the generic template)
command[check_puppet]=/usr/lib64/nagios/plugins/check_puppet
Для справки вот мой рабочий конфиг
define command {
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 15 -c check_ram
command_name check_nrpe_ram
}
define service {
## --PUPPET_NAME-- (called '_naginator_name' in the manifest) check_ram_server.addr
check_command check_nrpe_ram
host_name server.addr
service_description ram
use generic-service
}
/etc/nrpe.d/nrpe-check_ram
# Configuration for check_ram (from the generic template)
command[check_ram]=/usr/lib64/nagios/plugins/check_ram -w 10% -c 5%
Обновить:
Я добавил пользователя Nagios в sudoers, как указано в readme, но не тестировал запуск проверки как пользователь Nagios. Это не удалось, потому что путь, разрешенный в списке sudoers, был неправильным (мой плагин находится в Lib64), а также NRPE работает как пользователи nrpe в моих системах.
Я исправил sudoers, чтобы предоставить nopasswed sudo для правильной папки пользователю nrpe и добавил оболочку nrpe, чтобы я мог тестировать как этот пользователь (он был установлен на nologin)
bash-4.1$ whoami
nrpe
bash-4.1$ /usr/lib64/nagios/plugins/check_puppet
UNKNOWN: last_run_summary.yaml not found, not readable or incomplete
bash-4.1$ exit
exit
[root@ip-10-185-165-196 plugins]# ps auxww | grep nrpe
nrpe 16353 0.0 0.0 41320 1364 ? Ss 23:33 0:00 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d
root 16814 0.0 0.0 103236 856 pts/0 S+ 23:53 0:00 grep nrpe
[root@ip-10-185-165-196 plugins]#
На сервере nagios:
[root@puppet-master plugins]# ./check_nrpe -H <myserver> -t 15 -c check_puppet
CRITICAL: Puppet daemon not running or something wrong with process
Я использую минимальную установку CentOS 6.5
Я отключил requiretty с помощью:
Defaults:nrpe !requiretty
ОБНОВЛЕНИЕ 3:
Похоже, виноват SELinux. setenforce 0 решил проблемы. $ setenforce 0
Как указывает yoonix, сам плагин довольно ясен, в строках 36-38: это просто оболочка вокруг основного плагина, и этот основной плагин должен запускаться от имени пользователя root. Вот почему он работал нормально, когда вы запускали его как root. Обертка повысит привилегию через sudo
; он настроен на выполнение sudo
сам по себе, но вам нужно будет предоставить соответствующие sudo
привилегии.
Предполагая, что ваш nrpe
работает как пользователь nagios
, плагин сообщает, что вам понадобится следующая строка в вашем sudoers
файл:
nagios ALL=NOPASSWD:/usr/bin/puppet,/usr/lib/nagios/plugins/check_puppet_agent,/bin/kill
(Я не уверен, зачем это нужно /bin/kill
, но в нем говорится, что это так, поэтому вам, вероятно, лучше предоставить его, иначе вы рискуете, что плагин выйдет из строя интересными и недостаточно документированными способами.)
Вы не говорите нам, какая у вас ОС (и, если Linux, дистрибутив); если бы это была CentOS и вы использовали RPMforge nrpe
, он будет работать как пользователь nagios
. Вам нужно будет узнать, какого пользователя вы nrpe
работает как, и замените этого пользователя ведущим nagios
в sudoers
строка выше.