Мониторинг серверов Windows с помощью агента Zabbix

В этой статье мы рассмотрим особенности использования Zabbix для мониторинга Windows хостов, начиная с установки агента, подключения Windows узла к Zabbix серверу, до сбора специфических метрик и настройки алертов.

Установка Zabbix агента в Windows

Итак, у нас имеется хост с Windows Server 2022, который мы хотим мониторить через Zabbix. Для этого на хосте нужно установить и настроить агент Zabbix. Скачать MSI установщик с агентом Zabbix нужно с официального сайта (https://www.zabbix.com/download_agents). Выберите версию Zabbix агента в зависимости от версии Windows. Доступен как MSI установщик, так и бинарные файлы для ручного распространения агента. Обратите внимание, что доступны версии Zabbix Agent 1 и Agent2, но для современных систем имеет смысл использовать Agent 2 (если ваш сервер Zabbix поддерживает его).

скачать zabbix агент для windows

При установке MSI пакета с агентом Zabbix нужно указать имя компьютера (HostName) и IP адрес/ DNS имя вашего сервера Zabbix.

В нашем случае клиент Zabbix находится за NAT и напрямую с сервера не доступен, поэтому мы не может использовать режим стандартный (пассивный) режим агента (подключение сервера к клиенту на порт 10050 ). Поэтому нужно использовать Active режим работы агента. Для этого в поле Server for active checks указать адрес вашего сервера Zabbix (или прокси, если используется).

установка MSI агента zabbix 2 в windows

Для TLS шифрования трафика между сервером и клиентом мы воспользуемся PSK (Pre-Shared Key). Задайте идентификатор PSK ключа (позволит вам идентифицировать ключ), затем сгенерируйте рандомное значение PSK с помощью PowerShell и вставьте его в поле установщика агента.

[guid]::NewGuid().ToString("N")

сгенерировать PSK ключ при установке агента zabbix

После установки проверьте, что в списке служб появилась служба Zabbix Agent 2.

служба Zabbix Agent 2

Настройка агента Zabbix в Windows хранятся в файле "C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf" . В дальнейшем любые изменения в конфигурацию агента вносятся через этот текстовый файл. В нашем случае задано всего несколько параметров:

LogFile=C:\Program Files\Zabbix Agent 2\zabbix_agent2.log – лог действий агента

Server=123.45.67.8 – адрес сервера Zabbix для пассивных проверок (запросы с любых других серверов Zabbix будут отклоняться)

ServerActive=123.45.67.8 — адрес сервера Zabbix (или прокси) для активных проверок

Hostname=S-DC01 – имя хоста, под которым он будет виден на сервере Zabbix

TLSConnect=psk – включено обязательное шифрование трафика TLS

TLSAccept=psk

TLSPSKIdentity=PSK_s_dc01 – идентфикатор PSK

TLSPSKFile=C:\Program Files\Zabbix Agent 2\psk.key – текстовый файл, в котором хранится созданный вами ранее ключ PSK

Конфигурационный файл zabbix_agent2.conf

После внесения любых изменений в конфигурационный файл Zabbix, нужно перезапускать службу:

Restart-Service "Zabbix Agent 2"

Проверьте, что с Windows хоста доступен ваш сервер Zabbix по порту 10051:

Test-NetConnection 123.45.67.8 -Port 10051

Проверить доступность Zabbix сервера по порту 10051 для активных проверок

Добавление нового узла Windows на сервере Zabbix

После того, как агент Zabbix установлен на Windows Server, можно добавить новый узел в веб интерфейсе сервера Zabbix.

  1. Перейдите в Configuration -> Hosts -> Create Host
  2. Укажите имя хоста (должно соответствовать hostname , заданному в агенте)
  3. Назначьте хосту нужный шаблон (для начала можно выбрать стандартный шаблон Windows by Zabbix agent active) и группу хостов, к которой он должен относится.
  4. Добавьте интерфейс Add -> тип Agent . Укажите IP/адрес агента для пассивных проверок (если используется). Добавление Windows хоста в Zabbix
  5. Затем переходим на вкладку Encryption, разрешаем подключение только по ключу, копируем название и значение PSK ключа, созданного на клиенте. Параметры PSK шифрования для агента Zabbix

Если все настроено корректно, то через несколько минут в разделе Monitoring -> Latest Data вы должны увидеть данные, полученные с Windows сервера через агента Zabbix.

Проверить, что Zabbix сервер получает данные с хоста Windows

Сбор метрик с Windows узла через Zabbix

Далее рассмотрим, как настроить мониторинг только определенных метрик на сервере Windows. Допустим, вы хотите отслеживать только доступность агента Zabbix на сервере, занятое место в (%) на дисках и количество активных сетевых подключений к веб серверу.

Во встроенных шаблонах Zabbix может содержаться большое количество элементов. Кроме того, за счет функции низкоуровневого обнаружения (Low Level Discovery, LLD), Zabbix может добавлять для хоста десятки дополнительных элементов (отдельные item-ы для каждой службы, по несколько метрик для каждого обнаруженного диска, сетевого интерфейса и т.д.). Если вам не нужные некоторые данные, вы можете отключить их как в самом шаблоне (глобально), так и в настройках конкретного узла Zabbix.

Правила автообнаружения можно отключить как в самом шаблоне, так и для конкретного хоста. Перейдите в Hosts -> выберите ваш хост Windows -> Items -> вкладка Discovery Rules. Например, я решил отключить правила Low Level Discovery для служб, сетевых интерфейсов и физических дисков.

Отключение некоторых Discovery Rules для Windows хоста в Zabbix

Затем на вкладке Items можно временно отключить или совсем удалить некоторые метрики для хоста.

Таким образом мы получаем значения следующих метрик:

  • Занятое место на дисках через встроенные ключи vfs.fs.size[C:,pused] и vfs.fs.size[G:,pused]
  • Доступность агента Zabbix – через ключ agent.ping

Отключение некоторых метрики в настройках хоста в Zabbix

Следующую метрику — количество активных HTTPS подключений к Windows серверу, мы получим непосредственно из Windows с помощью PowerShell. Для этого на хосте Windows будет выполняться команда или скрипт, которая будет получать необходимые данные, а Zabbix агент передавать их в виде метрики на сервер.

На хосте Windows нужно отредактировать файл конфигурации агента (zabbix_agent2.conf) и создать параметр (метрику), который будет отправлять агент:

UserParameter=ActiveHTTPSSessions,powershell -NoProfile -ExecutionPolicy bypass -Command "(Get-NetTCPConnection -LocalPort 443|measure).count"

Вместо параметра -Command можно использовать параметр -File и указать путь к файлу PowerShell скрипта на диске (*.PS1).

Также увеличьте в конфигурации Timeout=30 (значение по умолчанию 3 секунды, чего не всегда хватает для медленных PowerShell команд/скриптов).

Настройка метрики UserParameter в агенте, который полуачает данные из powershell скрипта

Перезапустите агент:

Restart-Service "Zabbix Agent 2"

Проверьте с помощью встроенной утилиты zabbix_get.exe, что вы можете получить значение вашей метрики от агента Zabbix:

cd 'C:\Program Files\Zabbix Agent 2\'

.\zabbix_get.exe -s 127.0.0.1 -p 10050 --tls-connect=psk --tls-psk-identity="SRV01_PreShared_Key" --tls-psk-file="C:\Program Files\Zabbix Agent 2\psk.key" -k ActiveHTTPSSessions

Проверить через zabbix_get.exe , что агент отдает значение новой метрики

Теперь новую метрику можно добавить в шаблон (для массового использования), либо на конкретный узел Zabbix.

Перейдите на вкладку Items и добавьте:

  • Имя: Количество HTTPS сессий
  • Type: Zabbix Agent (active)
  • Key: ActiveHTTPSSessions
  • Type of information: Numeric (unsigned)
  • Update Interval: 5m
  • History: 90d
  • Trenfd: 365d

Создать собственную метрику в Zabbix

Проверьте на сервере Zabbix, что в Monitoring -> Latest data появились значение метрики из PowerShell скрипта.

Теперь создадим триггер, который будет генерировать warning, когда количество активных HTTPS сессий к серверу Windows превысило 400 (возможная DDoS атака на веб сервер Windows).

Идем на вкладку Trigger и создаем новый триггер:

  • Name: Аномально высокое количество HTTPS сессий
  • Problem expression: last(/SRV01/ActiveHTTPSSessions,#3)>=400 (последние три проверки вернули, что количество сессий более 400)
  • Recovery expression: last(/SRV01/ActiveHTTPSSessions,#2)< 400 (если две последние проверки вернули, что количество подключений меньше, считаем что метрика восстановилась в нормальное состояние)

создать свой триггер для метрики в zabbix

Итак, мы показали, как вручную установить и настроить агент Zabbix на сервере Windows, получить с него данные с помощью стандартных метрик и отключили часть ненужных. Также рассмотрено настройка получения произвольного значения через агент Zabbix и PowerShell скрипта на Windows и отправка значения в виде метрики на сервер Zabbix.


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)