Как завести в Nagios Core удаленный хост на Ubuntu

Posted by

Сейчас, как и говорил каждая настройка системы мониторинга Core будет выделяться в отдельную заметку, чтобы можно было ссылаться на определенную тему да и в последствии двигаться указав шаги. Я разберу и задокументирую, как поставить на мониторинг удаленный хост (к примеру Ubuntu Trusty Server) и установить на него агент, т. е. NRPE который в свою очередь будет запускать указанный скрипт, а он уже в соответствии с написанной задачей передавать значения в Nagios Core. Вот скриншот из документации который наглядно показывает, как это работает.

Схема работы Nagios мониторинга

Шаг №1: Подключаюсь по SSH к системе которую хочу завести на мониторинг в Nagios:
aollo@work:~$ ssh -l aollo 100.9.9.102
aollo@srv-dokuwiki:~$ sudo rm -Rf /var/lib/apt/lists
aollo@srv-dokuwiki:~$ sudo apt-get update
aollo@srv-dokuwiki:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: .5 LTS
Release: 14.04
Codename: trusty

aollo@srv-dokuwiki:~$ apt-cache show nagios-plugins | grep Version
Version: 1.5-3ubuntu1
aollo@srv-dokuwiki:~$ apt-cache show nagios-nrpe-server | grep Version
Version: 2.15-0ubuntu1
aollo@srv-dokuwiki:~$ sudo apt-get install nagios-plugins nagios-nrpe-server -y

На заметку: Для каждого сервера устанавливаемого на мониторинг нужно проделывать данные действия.

Шаг №2: Настраиваю хост который буду ставить на мониторинг
aollo@srv-dokuwiki:~$ sudo vi /etc/nagios/nrpe.cfg
allowed_hosts=127.0.0.1,10.7.9.130

На заметку: Теперь NRPE будет принимать запросы от сервера Nagios через внутренний IP-адрес.

К примеру буду отслеживать размер свободного места на корневом разделе:
aollo@srv-dokuwiki:~$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/dm-0 95G 21G 69G 24% /
aollo@srv-dokuwiki:~$ sudo vi /etc/nagios/nrpe.cfg
server_address=100.9.9.102
command[check_dm]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/mapper/srv--dokuwiki--vg-root
aollo@srv-dokuwiki:~$ /usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/mapper/srv--dokuwiki--vg-root
DISK OK - free space: / 69901 MB (76% inode=98%);| /=21553MB;77098;86735;0;96373
aollo@srv-dokuwiki:~$ df -h | grep dm-0
/dev/dm-0 95G 22G 69G 24% /

На заметку: файл содержит несколько других строк command, которые может использовать Nagios. NRPE прослушивает порт 5666 (строка server_port=5666). Если этот порт заблокирован брандмауэром, то в этом случае нужно проверить смотря что у Вас применяется: iptables, ufw правила.

Дабы обновить настройки плагина NRPE следует его перезапустить:
aollo@srv-dokuwiki:~$ sudo service nagios-nrpe-server restart
aollo@srv-dokuwiki:~$ sudo service nagios-nrpe-server status
* nagios-nrpe is not running
aollo@srv-dokuwiki:~$ sudo tail -f /var/log/syslog | grep nrpe
Dec 6 12:46:13 srv-dokuwiki nrpe[24066]: No variable value specified in config file '/etc/nagios/nrpe.cfg' - Line 81
Dec 6 12:46:13 srv-dokuwiki nrpe[24066]: Config file '/etc/nagios/nrpe.cfg' contained errors, aborting...
^C — у меня было просто строка комментария потеряла символ решетки в самом начале.
#commands that are executed. This option only works

aollo@srv-dokuwiki:~$ sudo service nagios-nrpe-server restart
* Stopping nagios-nrpe nagios-nrpe [ OK ]
* Starting nagios-nrpe nagios-nrpe [ OK ]
aollo@srv-dokuwiki:~$ sudo service nagios-nrpe-server status
* nagios-nrpe is running
aollo@srv-dokuwiki:~$ sudo netstat -tulpn | grep nrpe
tcp 0 0 10.7.8.102:5666 0.0.0.0:* LISTEN 24229/nrpe

Шаг №3: Проверяю с сервера Nagios, как происходит получение информации через nrpe:
ekzorchik@srv-trusty:~$ /usr/local/nagios/libexec/check_nrpe -H 100.9.9.102
NRPE v2.15
ekzorchik@srv-trusty:~$ /usr/local/nagios/libexec/check_nrpe -H 100.9.9.102 -c check_dm
DISK OK - free space: / 69901 MB (76% inode=98%);| /=21553MB;77098;86735;0;96373

Шаг №4: Теперь нужно завести хост с установленным агентом NRPE в настройки Nagios:
ekzorchik@srv-trusty:~$ sudo vi /usr/local/nagios/etc/servers/srv-dokuwiki.cfg

define host {
use linux-server
host_name srv-dokuwiki
alias My DokuWIKI
address 10.9.9.102
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
}
ekzorchik@srv-trusty:~$ sudo service nagios restart

Теперь Nagios будет мониторить данный сервер. Однако система будет отслеживать только состояние удалённого хоста (включен он (UP) или отключен (DOWN)). Если этого достаточно, просто сохраняю и закрываю файл. Если всё же нужно мониторить отдельные сервисы на удалённом хосте (а как может быть иначе), то добавляем в данный файл следующие настройки:

ekzorchik@srv-trusty:~$ sudo vi /usr/local/nagios/etc/servers/srv-dokuwiki.cfg

define service {
use generic-service
host_name srv-dokuwiki
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service {
use generic-service
host_name srv-dokuwiki
service_description SSH
check_command check_ssh
# 0 - disable notification, 1 - enable notification
notifications_enabled 0
}
define service {
use generic-service
host_name srv-dokuwiki
service_description Check Disk /dev/dm
check_command check_nrpe!check_dm
notifications_enabled 0
}
ekzorchik@srv-trusty:~$ sudo service nagios reload

Шаг №5: Чтобы проверить, что только что было сделано следует перейти: http://IP&DNS/nagios, а затем по гиперссылке в элемент меню Services где будет отображен список всех добавленных удаленных хостов.

Отображение сервисов поставленного хоста на мониторинг

 

Также можно получать информацию с узлов через собственные скрипты:

aollo@srv-dokuwiki:~$ sudo vi /etc/nagios/nrpe.cfg
command[check_ohrana]=/usr/lib/nagios/plugins/ohrana

aollo@srv-dokuwiki:~$ sudo vi /usr/lib/nagios/plugins/ohrana

#!/bin/bash
curl -s -3 "https://sm.megafon.ru/sm/client/balance?login=79266666666@multifon.ru&password=<PASSWORD>" | grep balance| cut -d "<" -f2 | cut -d ">" -f2 | grep -o '^[^.]*' > /tmp/balance && cat /tmp/balance
rm /tmp/balance
exit

aollo@srv-dokuwiki:~$ sudo service nagios-nrpe-server restart && sudo service nagios-nrpe-server status

* Stopping nagios-nrpe nagios-nrpe [ OK ]
* Starting nagios-nrpe nagios-nrpe [ OK ]
* nagios-nrpe is running

ekzorchik@srv-trusty:~$ sudo vi /usr/local/nagios/etc/servers/srv-dokuwiki.cfg
define service {
use generic-service
host_name srv-dokuwiki
service_description Check Balance 8-926-666-66-66
check_command check_nrpe!check_ohrana
}
ekzorchik@srv-trusty:~$ sudo service nagios restart
ekzorchik@srv-trusty:~$ /usr/local/nagios/libexec/check_nrpe -H 100.9.9.102 -c check_ohrana

  • 133 — ответ 133 рубля на счету телефона охраны.

Баланс телефона в Nagios Core

Вот по такому принципу настраиваются все остальные хосты на базе Ubuntu Trusty и сервисы на них, только стоит определить на основе своего опыта что действительно нужно мониторить чтобы в случае чего быстро решить проблему, как о ней заметят все остальные. Также не лишним будет настроить уведомление на почту или звонком через Asterisk на мобильный телефон.
Моя заметка работоспособна, на этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.