Icinga для мониторинга сервера и сервисов в Ubuntu 14.04
Ubuntu | Комментировать запись
Icinga – это популярная открытая система мониторинга, которая проверяет хосты и сервисы и сообщает администратору их состояние. Icinga является ответвлением Nagios, потому они совместимы и имеют много общего.
Данное руководство поможет установить Icinga, а также выполнить базовую настройку этой системы. При помощи веб-интерфейса Icinga можно мониторить сетевые сервисы и ресурсы хоста. Также в руководстве используется NRPE (Nagios Remote Plugin Executor), который будет установлен на удалённую систему в качестве агента для отслеживания локальных ресурсов (использования дискового пространства, количества зарегистрированных пользователей и т.п.).
Требования
Для выполнения руководства понадобится:
- Предварительно настроенный сервер Ubuntu 14.04.
- Root-доступ к серверу.
- Подготовленный сервер Postfix (чтобы получать извещения). Подробнее о настройке можно прочитать в статье «Установка и настройка Postfix на Ubuntu 14.04». Сервер Postfix можно настроить и после настройки системы Icinga.
Установка Icinga
Сначала нужно установить пакет Icinga. В качестве СУБД в руководстве используется MySQL; Icinga также поддерживает PostgreSQL, SQLite и Oracle.
Запустите следующую команду, чтобы добавить PPA системы Icinga в пакетный менеджер:
sudo add-apt-repository ppa:formorer/icinga
Обновите базу пакетов apt:
sudo apt update
Установите Icinga и MySQL:
sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client
Во время установки Icinga задаст ряд вопросов:
- MySQL Configuration: Введите новый пароль root-пользователя MySQL.
- PostFix Configuration: Сначала выберите Internet Site. Затем введите FQDN (например, example.com).
- Configuring icinga-cgi: Введите пароль для пользователя icingaadmin (учётная запись для доступа к системе Icinga).
- Configuring icinga-common: Введите No, чтобы разрешить использование внешних команд.
- Configuring icinga-idoutils: Введите Yes, чтобы автоматически создать БД для icinga-idoutils при помощи dbconfig-common. Выберите тип базы данных mysql. Введите root-пароль MySQL. Выберите пароль для пользователя БД icinga-idoutils.
Установка Icinga успешно завершена. Но прежде чем запускать систему, нужно настроить её.
Примечание: Во время установки также были установлены серверы Apache и Postfix.
Добавьте пользователя Apache по имени www-data в группу nagios.
sudo usermod -a -G nagios www-data
Включите демон ido2db, чтобы он запускался во время загрузки системы. Этот демон хранит события и настройки базы данных Icinga. Отредактируйте стандартные настройки Icinga.
sudo vi /etc/default/icinga
Измените значение строки IDO2DB на yes:
IDO2DB=yes
Сохраните и закройте файл. Теперь запустите сервис ido2db:
sudo service ido2db start
Включите модуль idomod, скопировав образец файла idoutils.cfg в активные конфигурации Icinga.
sudo cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg
Теперь система Icinga готова к запуску:
sudo service icinga restart
Пользовательский интерфейс Icinga Проверьте, работает ли пользовательский интерфейс Icinga. Для этого откройте ссылку http://yourhost/icinga и введите пароль icingaadmin, выбранный во время установки Icinga.
На данный момент система Icinga мониторит один хост (localhost, сервер, на котором хранится текущая установка Icinga) и семь сервисов:
1UP 0/0/0DOWN 0/0/0UNREACHABLE 0 PENDING 0/1 TOTAL
7OK 0/0/0WARNING 0/0/0 CRITICAL 0/0/0/UNKNOWN 0 PENDING 0/7 TOTAL
Верхний ряд вывода сообщает, что единственный отслеживаемый хост запущен (UP), а нижний ряд – что все 7 сервисов работают.
Если состояние локального хоста DOWN, попробуйте сменить привилегии команды ping. Следующая команда разрешает пользователю nagios запускать ping.
sudo chmod u+s `which ping`
Способы мониторинга при помощи Icinga
Существует два основных способа мониторить хосты и сервисы при помощи Icinga:
- Отслеживание общедоступных сервисов (такие сервисы доступны в локальной сети или через Интернет): как правило, это HTTP, почта, SSH ICMP ping. Этот метод подходит для систем, в которых нельзя установить агент, а также для мониторинга сетевых интерфейсов.
- Мониторинг при помощи агента, установленного на удалённый хост; агент собирает и отправляет данные Icinga. Для реализации этого метода можно установить NRPE в качестве такого агента. Это позволит Icinga отслеживать использование дискового пространства, запущенные процессы и другие данные системы, которые не позволяет получить первый метод.
Метод 1: Мониторинг общедоступных сервисов
Первый метод просто отслеживает сервисы. Такая настройка выполняется на сервере Icinga. Для примера рассмотрим, как можно отслеживать работу открытого интерфейса веб-сервера.
Создайте файл с именем хоста (вместо yourhost укажите имя своего хоста):
sudo vi /etc/icinga/objects/yourhost.cfg
Затем добавьте следующий код, заменив host_name именем своего хоста, alias – описанием хоста, address – внешним IP-адресом.
define host {
use generic-host
host_name web-1
alias A Web Server
address 107.170.xxx.xxx
}
define service {
use generic-service
host_name web-1
service_description HTTP
check_command check_http
}
Сохраните и закройте файл. Перезапустите Icinga, чтобы обновить настройки:
sudo service icinga reload
Метод 2: Мониторинг при помощи агента
Как говорилось ранее, в данном руководстве в качестве агента Icinga на удалённой системе будет использоваться NRPE.
NRPE нужно установить на все серверы, которые будут отслеживаться при помощи Icinga, а сервер Icinga должен быть настроен для поддержки данных каждого хоста.
Установка NRPE на удалённый хост
Обновите базу пакетов системы на сервере, который нужно отслеживать:
sudo apt update
Установите NRPE и Nagios Plugins:
sudo apt install nagios-plugins nagios-nrpe-server
Узнайте имя файловой системы root (она будет отслеживаться):
df -h /
Потом имя файловой системы нужно будет указать в настройках NRPE для отслеживания дискового пространства. Откройте и отредактируйте nrpe.cfg:
sudo vi /etc/nagios/nrpe.cfg
Конфигурационный файл NRPE очень длинный и содержит много комментариев. В нём нужно найти и отредактировать несколько строк:
- server_address: укажите внутренний IP-адрес удалённого сервера.
- allowed_hosts: укажите внутренний IP-адрес сервера Icinga.
- command[check_hda1]: укажите имя root файловой системы (/dev/hda1).
Вышеупомянутые строки в результате должны выглядеть примерно так (подставьте соответствующие значения):
server_address=client_private_IP
allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda
Обратите внимание: файл содержит несколько других команд, которые будут запускаться, если настроить сервер Icinga для их поддержки. Также стоит обратить внимание на то, что NRPE прослушивает порт 5666 (server_port=5666). Если этот порт блокируется брандмауэром, откройте его на сервере Icinga.
Сохраните и закройте файл. Перезапустите NRPE:
sudo service nagios-nrpe-server restart
Установив и настроив NRPE на всех хостах, которые нужно отслеживать, добавьте эти хосты в настройки сервера Icinga.
Добавление хостов в настройки Icinga
Перейдите на сервер Icinga и создайте в каталоге /etc/icinga/objects новый конфигурационный файл для каждого хоста, который будет отслеживаться.
Примечание: Замените yourhost именем своего хоста.
sudo vi /etc/icinga/objects/yourhost.cfg
Добавьте в файл следующий код, заменив host_name именем удалённого хоста (в данном примере используется wordpress-1), alias – описанием хоста, значение address – IP-адресом удалённого хоста.
define host {
use generic-host
host_name wordpress-1
alias My first wordpress server
address 10.128.xxx.xxx
}
Добавьте такой блок кода для каждого сервиса, который нужно отслеживать. Обратите внимание: check_command определяет, что именно будет отслеживаться (в том числе состояние). Вот некоторые примеры кода, который можно добавить в конфигурационный файл:
Ping:
define service {
use generic-service
host_name wordpress-1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
SSH (значение 0 для notifications_enabled отключает предупреждения сервиса):
define service {
use generic-service
host_name wordpress-1
service_description SSH
check_command check_ssh
notifications_enabled 0
}
Нагрузка:
define service {
use generic-service
host_name wordpress-1
service_description Current Load
check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0
}
Текущие пользователи:
define service {
use generic-service
host_name wordpress-1
service_description Current Users
check_command check_users!20!50
}
Дисковое пространство:
define service {
use generic-service
host_name wordpress-1
service_description Disk Space
check_command check_all_disks!20%!10%
}
Примечание: Строка use generic-service наследует значения шаблона сервиса по имени generic-service.
Сохраните и закройте файл. Перезапустите настройки Icinga.
sudo service icinga reload
Пользовательский интерфейс
Настроив мониторинг нескольких хостов (вне зависимости от метода), откройте пользовательский интерфейс Icinga (http://youricingaserver.com/icinga, учётная запись acingaadmin) и перейдите по ссылке Service Detail. На экране должен появиться список всех отслеживаемых сервисов.
Icinga предоставляет огромное количество возможностей, с которыми вы можете ознакомиться самостоятельно.
Заключение
Теперь система мониторинга Icinga установлена и полностью готова к использованию. Решите, какие сервисы имеют решающее значение для работы сервера, и начните их мониторинг. Также можно настроить уведомления, которые будут приходить по электронной почте в случае, если использование диска достигло критического уровня или главный сайт отключился из-за сбоя. Это позволяет предупредить появление ошибки или же оперативно устранить её.
Tags: Icinga, Nagios, NRPE, Postfix, Ubuntu 14.04