Icinga2 – это гибкая и производительная система мониторинга с открытым исходным кодом, которая позволяет отслеживать состояние сетевых сервисов и хостов.
Мониторинг и проверка работы сервисов может осуществляться двумя способами: проверка внешних сервисов хоста (icmp, http и пр.), либо с использованием программного агента, запущенного на удаленном хосте, для сбора более подробной информации о системе.
Способ 1.
Регулярная проверка внешних сервисов, например icmp запросы к устройству, ответ http сервера. Подключаться к удаленному серверу не нужно, так как проверка будет выполняться на master сервере.
Icinga2 всегда по умолчанию использует FQDN сервера. Если у хоста нет домена, используйте FQDN типа myserver.local
. Если у вас есть «полноценный» FQDN, укажите IP-адрес сервера в поле address
в настройках Icinga2.
Редактируем конфигурационный файл /etc/icinga2/conf.d/hosts.conf
на master-сервере.
Этот файл содержит блок настроек host и комментарии к нему. Данный блок object Host NodeName
определяет хост icinga-master
(хост, на котором установлены Icinga2 и Icinga2 Web).
В конец файла добавим строки:
object Host "bogachev.biz" { |
Данный блок определяет новый хост bogachev.biz
, импортирует стандартные конфигурации из шаблона generic-host
, указывает Icinga2 IP-адрес сервера и устанавливает переменные, которые проверяют ответ от http и, в случае сбоя, отправляет уведомления группе icingaadmins
.
После внесения изменений перезагружаем сервис Icinga2:
systemctl restart icinga2 |
После этого в Icinga2 можем наблюдать появление нового сервиса
Способ 2.
Icinga2 предоставляет механизм для безопасного соединения между master сервером и клиентской нодой, который позволяет выполнять более расширенные проверки удаленных серверов. Кроме проверки работы веб-сервера можно также отслеживать нагрузку CPU, количество процессов, работу базы данных, дисковое пространство и прочие сервисы.
Установим Icinga2 на удалённую машину и запустим мастер настройки, чтобы установить соединение, затем выполним настройку на главной ноде Icinga2 для мониторинга сервисов.
Icinga2 предоставляет несколько уровней серверов (master/satellite/client), отказоустойчивость при высокой доступности и несколько способов совместного использования конфигурации нод.
В данной статье будет рассмотрен вариант, как создать простую двухуровневую структуру с одной главной нодой и несколькими клиентскими нодами. Настройка выполняется на главной ноде. Команды проверки состояния будут запланированы на главной ноде и перенесены на клиенты. Проект Icinga2 называет этот режим Top Down Command Endpoint.
Настройка главного сервера (master)
Сперва настроим главную ноду для поддержки соединений с клиентами.
Запустим мастер установки:
icinga2 node wizard |
Мастер установки выполнит базовую настройку и в ходе установки попросит ввести некоторые параметры:
Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: n |
И перезапустим сервис:
systemctl restart icinga2 |
Откроем файрвол:
firewall-cmd --permanent --add-port=5665/tcp |
Настройка клиентского сервера (client)
Установим Icinga2 на клиентский сервер, добавим в автозагрузку и запустим.
rpm --import http://packages.icinga.org/icinga.key |
Запустим мастер конфигурации клиентского сервера:
icinga2 node wizard |
Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: y |
Мастер установки извлечет сертификат с главного сервера и выведет подробности. Ознакомьтесь с этой информацией и подтвердите ее:
Is this information correct? [y/N]: y |
Теперь нужно переключиться на главную ноду и выполнить указанную команду:
icinga2 pki ticket --cn 'bogachev.biz' |
После выполнения команды на мастер сервере будет сгенерирован ключ, который необходимо вставить на клиентскую ноду для продолжения установки.
information/cli: Requesting certificate with ticket 'ymgbevu2pvzykr0px704f7sk5vrbyrtp'. |
Откроем файрвол:
firewall-cmd --permanent --add-port=5665/tcp |
Проверить соединение между серверами можно командой lsof
или netstat
:
# netstat | grep :5665 |
Мониторинг агента
Мастер сервер и клиент подключены, теперь добавим сервисы удаленного клиента на мониторинг.
В настройке Icinga2 важно понятие зоны. Все клиентские устройства должны создать свою собственную зону и отправлять отчеты в родительскую зону (в данном случае это master-сервер). По умолчанию название зоны главной ноды совпадает с ее FQDN. Создадим каталог в директории zone.d
(имя директории должно совпадать с именем зоны главной ноды). Здесь будет храниться информация для всех клиентов родительской зоны.
mkdir /etc/icinga2/zones.d/Icinga2-master |
Создадим конфигурационный файл /etc/icinga2/zones.d/Icinga2-master/services.conf
. В нем будут храниться настройки проверок, которые будут выполняться на клиентских нодах со следующим содержимым:
apply Service "load" { |
В файл можно добавлять проверки любых сервисов, в том числе кастомных. В данном примере настроен мониторинг состояние CPU, количество запущенных процессов и ответ DNS для веб-хоста.
Очень важны последние две строки каждого блока. Строка command_endpoint
указывает, что конечная точка команды находится на удалённой машине. Строка assign where
автоматически присваивает проверку сервиса любому хосту, на котором определена переменная client_endpoint
.
Создаем новый файл в каталоге zones.d/Icinga2-master/bogachev.biz.conf
со следующим содержимым (в данном примере имя файла совпадает с именем удалённого хоста):
object Zone "bogachev.biz" { |
Данный файл определяет зону удаленного хоста и связывает ее с родительской зоной. Он также определяет хост как конечную точку, а затем определяет сам хост, импортируя стандартные правила из шаблона generic-host
. Затем файл устанавливает переменные для создания проверки и включает отправку уведомлений по электронной почте. Обратите внимание: поскольку на этом хосте определена переменная vars.client_endpoint = name
, на нем также будут выполняться проверки сервисов, которые были определены в services.conf
.
Перезапускаем сервис Icinga2:
systemctl restart icinga2 |
После этого заходим в веб-интерфейс IcingaWeb2 и проверяем статус сервисов для клиентских нод.