11 января 2013 г. Debian FreeBSD Linux Nagios Мониторинг NRPE

Nagios. Частые проблемы с использование NRPE

NRPE

Вслед за статьей Вызов удаленных команд для Nagios с помощью NRPE решил записать решение на самую популярную проблему с NRPE, когда вы вызываете удаленную команду (в моем примере: плагин на FreeBSD, агент на Debian), то вам возвращается нечто такое CHECK_NRPE: Error receiving data from daemon

Эта ошибка, на деле, означает несколько проблем, а точнее их 5.

В Nagios Support FAQ есть замечательный топик Debugging "CHECK_NRPE: Error - Could not complete SSL handshake" errors объясняющий возможные проблемы, но не дающий конкретных решений.

Давайте разберем их:

Different versions. Make sure you are using the same version of the check_nrpe plugin and the NRPE daemon. Newer versions of NRPE are usually not backward compatible with older versions.
1

Если у вас установлены разные версии NRPE на серверах, то стоит для начала сделать их одинаковыми. Софт во FreeBSD-портах обычно свежее черем пакеты в Debian, поэтому доустанавливаем NRPE-агент в Debian вручную. Входим на страницу загрузки NRPE2 и качаем архив с NRPE (в моем случае это был nrpe-2.13):

wget -O nrpe-2.13.tar.gz http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.13/nrpe-2.13.tar.gz
tar -xzf nrpe-2.13.tar.gz
cd nrpe-2.13

# Нам нужна поддержка SSL
sudo apt-get install libssl-dev

# Смотрим где храняться headers от libssl (в моем случае это "/usr/lib/i386-linux-gnu")
dpkg -L libssl-dev | grep libssl.a

# Собираем и устанавливаем
./configure --with-ssl=`which openssl` --with-ssl-lib=/usr/lib/i386-linux-gnu
make
sudo make install

# Останавливаем агента, подменяем бинарник, запускаем агента
sudo /etc/init.d/nagios-nrpe-server stop
sudo cp /usr/local/nagios/bin/nrpe /usr/sbin/nrpe
sudo /etc/init.d/nagios-nrpe-server start
SSL is disabled. Make sure both the NRPE daemon and the check_nrpe plugin were compiled with SSL support and that neither are being run without SSL support (using command line switches).
2

Это возникает, когда вы установили один из NRPE без поддержки SSL. В Debian он собирается по умолчанию с SSL, значит у вас проблема с портом во FreeBSD, при установке надо было выбрать поддержку SSL, теперь его переустановим:

cd /usr/ports/net-mgmt/nrpe2
make config
# Выбираем SSL
[*] SSL   Enable SSL support (disables plain-text server) 
make deinstall clean && make distclean && make install clean

Узнать собран ли NRPE-агент с поддержкой SSL или без, можно при запуске агента:

$ nrpe2 | head -n8

NRPE - Nagios Remote Plugin Executor
Copyright (c) 1999-2008 Ethan Galstad (nagios@nagios.org)
Version: 2.13
Last Modified: 11-11-2011
License: GPL v2 with exemptions (-l for more info)
TCP Wrappers Available

После переустановки порта (обратите внимание на предпоследнюю строку):

$ nrpe2 | head -n8

NRPE - Nagios Remote Plugin Executor
Copyright (c) 1999-2008 Ethan Galstad (nagios@nagios.org)
Version: 2.13
Last Modified: 11-11-2011
License: GPL v2 with exemptions (-l for more info)
>>> SSL/TLS Available: Anonymous DH Mode, OpenSSL 0.9.6 or higher required
TCP Wrappers Available
Incorrect file permissions. Make sure the NRPE config file (nrpe.cfg) is readable by the user (i.e. nagios) that executes the NRPE binary from inetd/xinetd.
3

Нехватает прав у пользователя nagios (так как везде, именно под ним запускается NRPE), проверяем:

# В Debian
sudo -u nagios /usr/lib/nagios/plugins/check_nrpe
# Во FreeBSD
sudo -u nagios /usr/local/libexec/nagios/check_nrpe2

Проверьте также права на конфигурационные файлы.

Pseudo-random device files are not readable. Greg Haygood noted the following... "After wringing my hair out and digging around with truss, I figured out the problem on my Solaris 8 boxen. The files /devices/pseudo/random* (linked through /dev/*random, and provided by Sun patch 112438) were not readable by the nagios user I use to launch NRPE. Making the character devices world-readable solved it."
4

Не встречался с такой проблемой, но для этого предусмотрен параметр в конфигурационном файле nrpe.cfg (надо его расскоментировать):

#allow_weak_random_seed=1
Unallowed address. If you're running the NRPE daemon under xinetd, make sure that you have a line in the xinetd config file that say "only_from = xxx.xxx.xxx.xxx", where xxx.xxx.xxx.xxx is the IP address that you're connected to the NRPE daemon from.
5

Скорее всего вы забыли указать allowed_hosts в конфигурационном файле nrpe.cfg и внешние хосты просто не уполномочены обращаться к NRPE-агенту, укажите нужные IP-адреса через запятую и без пробелов:

allowed_hosts=127.0.0.1,203.0.113.41,203.0.113.42

Сам я под xinetd не запускал агента, меня устроил standalone-режим. Но именно 5-ая проблема самая распространенная в сети, но и сама простая.

Какие были у меня проблемы?

У меня самого было только две проблемы (разные версии NRPE и плагин без поддержки SSL). Вначале была ошибка:

/usr/local/libexec/nagios/check_nrpe2 -H <REMOTE_SERVER_ADDRESS> -c <COMMAND>
CHECK_NRPE: Error receiving data from daemon

А после того как я обновил (решение проблемы под номером 1) версии NRPE-агента (на Debian) до версии плагина (на FreeBSD), с которого запускал, то появилась следующая ошибка в /var/log/syslog (на Remote Host, Debian):

[nrpe] Error: Could not complete SSL handshake

Её я решил переустановив плагин на FreeBSD, как рассказывал в решении проблемы номер 2.

И совет напоследок, если не работает, начните с чтения лога /var/log/syslog или /var/log/messages, потому что nrpe будет писать именно туда:

tail -f /var/log/syslog
tail -f /var/log/messages

Удачи!

Комментарии

Спасибо!

Оставьте свой комментарий

Markdown