Nagios: мониторинг виртуальных Windows серверов

Рассмотрим один из способов организации мониторинга OC Windows, установленной на Linux сервере в качестве виртуального. Для этих целей будем использовать Nagios и утилиту для windows — NSClient++

Сначала на виртуальную машину устанавливаем утилиту NSClient++. При установке нужно задать пароль для доступа к данным, которые отдает утилита по запросу, но при этом не стоит задавать разрешенные хосты для доступа. Во-первых, это позволит избежать проблемы, когда вы не знаете с какого хоста будет происходить мониторинг и, во-вторых, при изменении адреса Nagios не будет необходимости вносить изменения по всем virtual Windows. Но в любом случае это можно изменить в файле настроек NSC.ini.

После установки утилиты необходимо проверить файл C:Program FilesNSClient++NSC.ini, в котором должны быть раскоментированы следующие модули:

[modules]
FileLogger.dll — логирует события в лог
CheckSystem.dll — позволяет проверять системные параметры, cpu, memory etc
CheckDisk.dll — проверка диска, наличие свободного места
NSClientListener.dll — разрешает утилите слушать на порту

Все необходимые ярлыки после установки находятся в системном меню. Теперь можно запускать проверку и, если все хорошо и никаких ошибок не появилось, то можно запускать сервис. После любых изменений в файле настроек нужно рестартовать сервис.

Теперь можно настраивать фаервол хост-сервера. Добавляем правила для проброса пакетов во внутреннюю сеть на порт 12489. Этот порт используется утилитой NSClient++ по умолчанию. Обращаю внимание на используемый протокол, это должен быть TCP. Также правила для фаервола лучше вставлять в начало таблицы, а не добавлять, т.к. в случае добавления правил они будут находится внизу таблицы и могут перекрываться другими правилами. Это очень актуально в случае виртуальных машин, поскольку при реализации любой из схем виртуализации всегда будет достаточно большое количество правил, добавленных в фаервол host-server.

EXT_IP – IP хост-сервера, на который Nagios будет делать запросы
INT_IP – IP virtual Windows, которая находится во внутренней сети

iptables -t nat -I PREROUTING 1 -d EXT_IP -p tcp --dport 12489 -j DNAT --to-destination INT_IP:12489
iptables -t nat -I POSTROUTING 1 -s INT_IP -p tcp --sport 12489 -j SNAT --to-source EXT_IP:12489
iptables -I FORWARD 1 -p tcp --dport 12489 -j ACCEPT

Не забываем выполнить iptables-save чтобы ничего не потерялось после первого же рестарта.

Теперь можно переходить к настройке сервиса в Nagios.
Во-первых, устанавливаем на host-server плугин для Nagios nagios-plugins-nt, если его не было до этого.
Во-вторых, перед настройкой сервисов в Nagios, стоит убедиться что все работает правильно. Для этого из командной строки запускаем:

[root@host-server ~]# /usr/lib64/nagios/plugins/check_nt -H EXT_IP -p 12489 -s pass -v USEDDISKSPACE -w 30 -c 40 -d SHOWALL -l c
c: - total: 49.90 Gb - used: 29.63 Gb (59%) - free 20.27 Gb (41%) | 'c: Used Space'=29.63Gb;14.97;19.96;0.00;49.90

Для примера взята строка проверки свободного места на диске C. Если все нормально, можно переходить к настройке сервисов в Nagios.

В Nagios есть достаточно много, предварительно настроенных сервисов для работы с NSClient. В windows.cfg содержится много записей типа:

define service{
use                     generic-service
host_name               winserver
service_description     NSClient++ Version
check_command           check_nt!CLIENTVERSION
}

Как видно, здесь используется check_nt, который мы запускали из командной строки. В
commands.cfg команда check_nt определяется следующим образом:

# 'check_nt' command definition
define command{
command_name    check_nt
command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
}

Таким образом, преднастроенных сервисов уже достаточно много для того, чтобы охватить большинство параметров на virtual Windows. Более сложные проверки, которые принимают параметры, выглядят следующим образом:

define service{
use                     generic-service
host_name               winserver
service_description     CPU Load
check_command           check_nt!CPULOAD!-l 5,80,90
}

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

Документация:
Monitoring Windows Machines
Официальный сайт документации NSClient++

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

Ваш e-mail не будет опубликован.