[Из песочницы] Icinga2 и безагентный мониторинг серверов Windows средствами WMI
На сегодняшний день, далеко не каждый доволен используемой системой мониторинга ИТ инфраструктуры, а у некоторых она попросту отсутствует. Многие из них имеют явные проблемы с удобством использования, сложностью конфигурации и невысокой производительностью. Именно поэтому, предлагаю взглянуть на новый форк Nagios — Icinga 2, который готов порадовать нас модульной архитектурой, удобным web-интерфейсом, генерацией отчетов и превосходной скоростью работы!
О самой системе
На первый взгляд Icinga 2 сразу располагает к себе приятным на вид веб интерфейсом, с большим количеством различных представлений хостов и сервисов (различные списки, календарь, сетка), но это далеко не все плюсы данной системы мониторинга.
Стиль конфигурации отличается от её предыдущей версии, он имеет обьектно-ориентированный формат (схож с Puppet) и позволяет определять host/service зависимости и отношения parent/child для хостов. Зависимости в Icinga 2 являются прямыми, они могут быть определены как host-host, service-service или смешанными host-service и service-host. Обьем конфигурации может быть сведен к минимуму путем применения шаблонов к обьектам. В процессе эксплуатации системы вы поймете, насколько это удобно. Лично я, всегда был недоволен отсутствием возможности настройки мониторинга через веб интерфейс, в виду запутанности конфигурационных файлов, но в данном случае этому рад.
Icinga2 построена с ориентацией на производительность, имеет многопоточный дизайн и может выполнять тысячи проверок в секунду. Сама система может быть установлена в виде высокодоступного кластера или одиночного экземпляра.
Так же высокодоступные кластеры могут быть объединены в распределенную установку, в которой операции рассредоточены по нескольким сайтам. Репликация может быть изолирована для её осуществления только между основной и вторичной зоной. Вторичные зоны могут быть как полноценными экземплярами Icinga 2, с локальной базой данных IDO и пользовательским интерфейсом, так и простыми экземплярами выполняющими проверки.
Icinga 2 поставляется с несколькими движками и практически любой аддон может быть легко интегрирован, в частности модуль Perfdata включен изначально. Например, Icinga 2 предлагает интеграцию популярных инструментов графического отображения производительности, таких как PNP4Nagios, inGraph и Graphite.
Настройка
Установку самой Icinga 2 рассматривать нет смысла, так как она проста и предельно понятно описана в документации, в моем случае она установлена на CentOS 7 и PostgreSQL. Вначале, не забудьте установить EPEL:
yum install epel-release
Так же при её настройке через веб интерфейс необходимо использовать две базы, а не одну (иначе возникнет ошибка создания пользователя).
Для полноценного мониторинга средствами WMI нам понадобится несколько плагинов и подготовленный Windows Server.
Вначале установим wmic и Сheck WMI Plus используя пошаговое руководство, располагающееся здесь.
Далее потребуется подготовить Windows Server к обработке входящих WMI запросов, для этого вводим в командной строке:
winrm quickconfig
Пользователь от имени которого будем подключаться к серверу должен находиться в группе локальных администраторов, а так же не забываем про межсетевой экран.
Для проверки, два раза запускаем:
/opt/nagios/bin/plugins/check_wmi_plus.pl -m checkcpu -H HOST -u USER -p PASS
Теперь перейдем к конфигурации самой Icinga 2.
Основные конфигурационные файлы располагаются в /etc/icinga2/conf.d/
Подготовим группу для наших Windows серверов, добавив в файл groups.conf следующее:
object HostGroup "windows-servers" {
display_name = "Windows Servers"
assign where host.vars.os == "Windows"
}
В данную группу будут попадать все хосты в конфигурации которых присутствует элемент:
host.vars.os = "Windows"
Опишем использование плагина Check WMI Plus, для этого откроем commands.conf и добавим следующее содержимое:
object CheckCommand "check_wmi" {
import "plugin-check-command"
command = [ WmiPluginDir + "/check_wmi_plus.pl" ]
arguments = {
"--inidir" = "$wmi_inidir$"
"-H" = "$host.name$"
"-A" = "$wmi_authfile_path$"
"-m" = "$check_mode$"
"-s" = "$wmi_submode$"
"-a" = "$wmi_arg1$"
"-o" = "$wmi_arg2$"
"-3" = "$wmi_arg3$"
"-4" = "$wmi_arg4$"
"-y" = "$wmi_delay$"
"-w" = "$wmi_warn$"
"-c" = "$wmi_crit$"
"--nodatamode" = {
set_if = "$wmi_nodatamode$"
}
}
vars.wmi_authfile_path = "/etc/icinga2/wmi.auth"
vars.wmi_inidir = "/opt/nagios/bin/plugins/check_wmi_plus.d"
vars.wmi_nodatamode = false
}
Создадим файл авторизации для плагина (/etc/icinga2/wmi.auth) со следующим содержимым:
username=user@domain.domain
password=pass
domain=
Зададим значение константе в файле constants.conf:
const WmiPluginDir = "/opt/nagios/bin/plugins"
Создадим шаблон для наших сервисов в templates.conf:
template Service "wmi-service" {
import "generic-service"
check_command = "check_wmi"
check_interval = 1m
retry_interval = 1m
}
Здесь можно задать желаемый интервал проверок.
На странице плагина есть примеры конфигурации сервисов для Nagios, нам же, остается немного их отредактировать.
Например, добавим в файл services.conf следующий сервис:
apply Service "MSSQL: General Statistics" {
import "wmi-service"
vars.check_mode = "checksql"
vars.wmi_submode = "general"
vars.wmi_arg1 = host.vars.sql
assign where host.vars.sql
ignore where host.vars.disable_wmi
}
Добавим хост в файл hosts.conf:
object Host "sql" {
address = "X.X.X.X"
check_command = "hostalive"
vars.os = "Windows"
vars.sql = "MSSQL***_MSSQL***"
}
# *** - название экземпляра SQL сервера
В данном примере сервис «MSSQL: General Statistics» будет применяться к хосту, у которого в конфигурации задана переменная vars.sql, а её значение будет использовано в WMI запросе, в качестве аргумента.
Остается только сделать графическое представление собираемых данных, для этого нам потребуется Graphite и его веб-модуль для нашей Icinga 2.
Установим Graphite:
yum install graphite-web
/usr/bin/graphite-manage syncdb --noinput
/usr/bin/graphite-build-index
/usr/bin/chown -R apache:apache /var/lib/graphite-web
yum install python-carbon python-whisper
systemctl enable carbon-cache
systemctl start carbon-cache
systemctl restart httpd
Редактируем настройки apache для vhost по своему усмотрению.
Включаем использование Graphite в Icinga 2:
icinga2 feature enable graphite
systemctl restart icinga2
Скачиваем веб-модуль отсюда. Распаковываем в папку /usr/share/icingaweb2/modules и переименовываем корневую папку модуля в graphite(иначе возникнет ошибка). Создаем конфигурационный файл /etc/icingaweb2/modules/graphite/config.ini со следующим содержимым:
[graphite]
metric_prefix = icinga
base_url = http://172.18.200.15/render?
Теперь, остается включить веб-модуль (Configuration → Modules → graphite → enable) и насладиться результатом:
PS: В следующей части рассмотрим мониторинг сетевого оборудования.