Icinga2 и безагентный мониторинг серверов Windows средствами WMI

от автора

image

На сегодняшний день, далеко не каждый доволен используемой системой мониторинга ИТ инфраструктуры, а у некоторых она попросту отсутствует. Многие из них имеют явные проблемы с удобством использования, сложностью конфигурации и невысокой производительностью. Именно поэтому, предлагаю взглянуть на новый форк Nagios — Icinga 2, который готов порадовать нас модульной архитектурой, удобным web-интерфейсом, генерацией отчетов и превосходной скорость работы!

О самой системе

На первый взгляд Icinga 2 сразу располагает к себе приятным на вид веб интерфейсом, с большим количеством различных представлений хостов и сервисов (различные списки, календарь, сетка), но это далеко не все плюсы данной системы мониторинга.

Стиль конфигурации отличается от её предыдущей версии, он имеет обьектно-ориентированный формат (схож с Puppet) и позволяет определять host/service зависимости и отношения parent/child для хостов. Зависимости в Icinga 2 являются прямыми, они могут быть определены как host-host, service-service или смешанными host-service и service-host. Обьем конфигурации может быть сведен к минимуму путем применения шаблонов к обьектам. В процессе эксплуатации системы вы поймете, насколько это удобно. Лично я, всегда был недоволен отсутствием возможности настройки мониторинга через веб интерфейс, в виду запутанности конфигурационных файлов, но в данном случае этому рад.

Icinga2 построена с ориентацией на производительность, имеет многопоточный дизайн и может выполнять тысячи проверок в секунду. Сама система может быть установлена в виде высокодоступного кластера или одиночного экземпляра.

image

Так же высокодоступные кластеры могут быть объединены в распределенную установку, в которой операции рассредоточены по нескольким сайтам. Репликация может быть изолирована для её осуществления только между основной и вторичной зоной. Вторичные зоны могут быть как полноценными экземплярами 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(иначе возникнет ошибка). Создаем конфигурационный файл со следующим содержимым:

[graphite] metric_prefix = icinga base_url = http://172.18.200.15/render?  

Теперь остается включить веб-модуль (Configuration -> Modules -> graphite -> enable) и насладиться результатом:

PS: В следующей части рассмотрим мониторинг сетевого оборудования.

ссылка на оригинал статьи http://habrahabr.ru/post/262115/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *