Настройка сервера мониторинга Nagios

Популярное решение для мониторинга — nagios позволяет реализовывать масштабируемые системы. Конфигурация для распределенных систем — длительный процесс, в рамках статьи реализуем мониторинг одного сервиса на удаленном хосте.

Работы по настройке будут выполняться на сервере с операционной системой CentOS 7, для nrpe клиента также будет использоваться CentOS 7

На клиенте установим плагин nrpe и разрешим в его настройках подключение к серверу.

 

 

Nagios установка и настройка сервера мониторинга

Настройку начинаем на машине, которая будет выполнять роль nagios сервера. Установим необходимые пакеты:

yum install -y wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp unzip

nagios работает через Apache, поэтому в списке устанавливаемых пакетов присутствует httpd

Переходим в корневой каталог с временными файлами и скачиваем в него при помощи wget последние релизы nagios и nagios-plugins

cd /tmp

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.2.8.tar.gz

wget http://nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gz

Создаем системных пользователя и группу

useradd nagios

groupadd nagcmd

Добавляем пользователя nagios в группу nagcmd

usermod -a -G nagcmd nagios

usermod -a -G nagios,nagcmd apache

Поскольку используем CentOS httpd работает не от имени пользователя www-data, а от имени пользователя apache

Чтобы в дальнейшем не возникло конфликтов прав добавляем пользователя apache в группы nagios,nagcmd

ls -la

Извлекаем содержимое скачанного архива

tar -zxvf nagios-4.2.0.tar.gz

Переходим в каталог с файлами nagios

cd nagios-4.2.0

Установку как nagios, так и nrpe в дальнейшем будем производить из исходников

./configure —with-command-group=nagcmd

В качестве опции при сборке указываем группу nagcmd

Компилируем

make all

make install

make install-init

make install-config

make install-commandmode

make install-webconf

Рекурсивно копируем каталог с библиотеками в /usr/local на сервере

cp -R contrib/eventhandlers /usr/local/nagios/libexec

Также рекурсивно меняем владельца и группу владельца каталогов и файлов на nagios

chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers

Пробуем запустить и посмотреть версию nagios указывая путь к основному конфигурационному файлу

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Добавляем nagios в автозагрузку — система будет каждый раз запускать его при старте

systemctl enable nagios

Запускаем сервис

systemctl start nagios

Аналогичные операции проделываем с веб-сервером

systemctl enable httpd

systemctl start httpd

Задаем пароль пользователя nagios

passwd nagios

При помощи htpasswd генерируем файл, который будет ограничивать доступ для пользователя nagiosadmin

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Установка основного пакета на этом завершена. Открываем интернет браузер и вводим в поисковую строку ip-адрес сервера, затем /nagios и попадаем в веб-интерфейс

 

Настройка мониторинга сервиса на удаленном хосте

Идем на другую серверную машину, которая будет выполнять роль nagios-клиента
Переходим в каталог /tmp/

cd /tmp/

ls -la

Распаковываем nagios-plugins-2.1.2

tar -zxvf nagios-plugins-2.1.2

cd nagios-plugins-2.1.2

Компилируем указывая пользователя и группу nagios

./configure —with-command-user=nagios —with-nagios-group=nagios

make

make install

Теперь устанавливаем nrpe plugin

Сначала дополнительно ставим из репозитория openssl-devel, если он уже установлен — шаг пропускаем (необходимо также присутствие пакета и на nagios сервере)

yum -y install openssl-devel

 

 

Можно установить и из репозитория

yum install nagios-plagins-all nagios-plagins-nrpe

Если нужна свежая версия, что так
Скачиваем пакет

wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz

Распаковываем tar.gz

tar -zxvf nrpe-2.15.tar.gz

cd nrpe-2.15

Компилируем тем же способом, что и ранее

./configure

make all

make install

make install-deamon

Идем на сервер nagios

 

 

Пробуем подключиться с сервера указывая после ключа -H IP адрес клиента

/usr/local/nagios/libexec/check_nrpe -H 10.11.27.44

Получаем connection refused и отправляемся производить конфигурацию плагина

Стартуем nrpe на клиенте и добавляем сервис в автозагрузку

systemctl start nrpe

systemctl enable nrpe

Открываем основной конфигурационный файл и в качестве значения в секции allowed_hosts указываем IP адрес сервера

mcedit /etc/nrpe/nrpe.cfg

allowed_hosts = 10.11.27.11

Возвращаемся на сервер

/usr/local/nagios/libexec/check_nrpe -H 10.11.27.44

Теперь наша попытка успешна и мы видим версию nagios

Снова открываем основной конфиг

mcedit /usr/local/nagios/etc/nagios.cfg

Снимаем знак комментария со строки с cfg_dir (cfg_dir=/usr/local/nagios/etc/servers)

Создаем директорию и переходим в нее

mkdir /usr/local/nagios/etc/servers

cd /usr/local/nagios/etc/servers

Определяем хосты, мониторинг которых будет производиться. У хостов могут быть любые названия, nagios увидит все файлы с расширением cfg

Прописываем параметры хоста, значения директив понятно из названия. Этих директив может быть значительно больше в случае необходимости тонких настроек мониторинга, здесь рассматираем базовую рабочую конфигурацию

mcedit cenos11.cfg

define host {
use                                    linux-server
host_name                          cenos11
alias just                             nagios client
address                                10.11.27.44
max_check_attempts      5
check_period                      24×7
notification_interval       30
notification_period          24×7

}

 

Добавляем конфиг для сервиса, который мониторим. Сейчас ограничимся проверкой наличия пинга до хоста

mcedit service.cfg

{
use                                            generic-service
host_name                             cenos11
service_description            PING
check_command                   check_ping!100.0,20%!500.0,50%
}

 

Использована команда check_command, выдержка из мануала относительно нее говорит следующее:

check_ping -H -w ,% -c ,%
[-p packets] [-t timeout] [-4|-6]

Соответственно, при потере 20% пакетов мы будем получать предупреждение, при потере 50% — ALERT

Снова запускаем и убеждаемся в том, что ошибок нет

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Перезапускаем службу

systemctl restart nagios

Идем в веб-интерфейс и видим, что там отображается сервис на удаленном хосте, который мы мониторим (в конфигурации, приведенной на скриншоте, настроен мониторинг еще ряда ресурсов ). Настройка сервера мониторинга с базовым функционалом завершена.

nagios установка и настройка

 

 

Настройка ALERT-ов в nagios

Открываем основной конфигурационный файл и при необходимости раскомментируем строку cfg_file=/usr/local/nagios/etc/objects/contacts.cfg:

mcedit /usr/local/nagios/etc/nagios.cfg

В файле определяем контактный адрес электронной почты для отправки уведомлений:

mcedit /usr/local/nagios/etc/objects/contacts.cfg

define contact {
contact_name               nagiosadmin
use                                     generic-contact
alias                                  Nagios Admin
email                                 valdes101@example.ru

}

 

Перезапускаем службу

cyctemctl restart nagios

Также может использоваться дополнительное программное обеспечение с помощью которого могут отправляться, например, SMS-сообщения с ALERT-ами касающимися принципиально важных сервисов. Получен рабочий сервер Nagios, установка и настройка на этом завершены.

 

Для серверов можно устанавливать Nagios сервер и клиент на одной машине, однако намного проще использовать другой пакет — например, Monitorix.