Установка 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
Идем в веб-интерфейс и видим, что там отображается сервис на удаленном хосте, который мы мониторим (в конфигурации, приведенной на скриншоте, настроен мониторинг еще ряда ресурсов ). Настройка сервера мониторинга с базовым функционалом завершена.
Настройка 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 [email protected]
}
Перезапускаем службу
cyctemctl restart nagios
Также может использоваться дополнительное программное обеспечение с помощью которого могут отправляться, например, SMS-сообщения с ALERT-ами касающимися принципиально важных сервисов. Получен рабочий сервер Nagios, установка и настройка на этом завершены.
Для серверов можно устанавливать Nagios сервер и клиент на одной машине, однако намного проще использовать другой пакет — например, Monitorix.