Авторы: Никита Зубарев - DevOps Team Leader компании Hostkey, Айрат Сягитов - специалист отдела DevOps компании Hostkey
Ранее мы рассказали о том, как выполняется мониторинг Linux-систем. Теперь рассмотрим, как настроить Windows Server.
В одной из прошлых статей мы говорили об интеграции FreeIPA с Active Directory. В процессе разработки решения, описанного в этой статье, у нас возникла потребность снимать метрики с серверов Windows-инфраструктуры. В данной статье мы рассмотрим, как можно наладить мониторинг для серверов с ОС Windows, используя существующую систему, построенную на связке Prometheus + Grafana + Alertmanager. Собирать будем общие системные метрики: cpu, ram, hdd.
Экспортер WMI также можно использовать для мониторинга сайтов и приложений IIS, сетевых интерфейсов, служб и даже локальной температуры.
Установка Windows Exporter для мониторинга служб Windows
Для установки Windows Exporter необходимо выполнить несколько действий:
Скачать последнюю версию Windows Exporter с GitHub, выбрав архив .zip или .tar.gz.
Создать папку с именем "Prometheus" на диске C или в другом месте.
Распаковать скачанный архив Windows Exporter. В нем находится файл windows_exporter.exe.
Скопировать windows_exporter.exe в папку “Prometheus”.
Затем необходимо создать конфигурационный файл YAML для Windows Exporter. Он позволит указать службы, которые необходимо поставить на мониторинг.
В нашем примере это сервис LicenseManager.
Windows Exporter можно запустить двумя способами: вручную и в качестве службы Windows.
1. Для запуска вручную необходимо:
Открыть командную строку от имени администратора.
Перейти в папку с windows_exporter.exe, например: cd C:\Prometheus.
Запустить Windows Exporter с указанием конфигурационного файла с помощью команды: .\windows_exporter.exe --config.windowsconfig="kms.yml".
Теперь Windows Exporter будет работать в режиме мониторинга в текущей сессии.
2. Для настройки как службы Windows необходимо:
Открыть командную строку от имени администратора.
Создать службу Windows Exporter командой:
sc create WindowsExporter binPath= "C:\Prometheus\windows_exporter.exe --config.windowsconfig=C:\Prometheus\kms.yml" start= auto.
Запустить службу командой sc start WindowsExporter:
A:\Windows\system32>sc create WindowsExporter binpath= "C:\Prometheus\windows_exporter.exe --config.windowsconfig=C:\Prometheus\windows_exporter.yml"=auto
[SC] CreateService: success
A:\Windows\system32>sc start WindowsExporter
Подробную информацию о средстве экспорта WMI можно посмотреть на GitHub.
После установки необходимого экспортера следует перейти в панель «Службы Windows» (достаточно просто ввести «Службы» в меню поиска Windows) и найти в списке запись WMI exporter. Далее необходимо проверить, что сервис работает правильно.
Если экспортер запущен, он должен начать предоставлять метрики на http://localhost:9182/metrics, по аналогии с Node Exporter. Остается подключить сбор метрик в Prometheus, добавить дашборд и настроить алертинг:
Добавить в prometheus.yml:
- job_name: 'Windows_Infra'
static_configs:
- targets: ['”localhost”:9182']
Добавить Grafana dashboard, который отслеживает отображение информационной панели, подключает и оптимизирует вывод подробной сводки ресурсов. В результате получаем визуальную панель по каждому хосту:
Осталось описать rule_files, добавив необходимые метрики:
groups:
- name: Windows_Infra
rules:
- alert: InstanceDown
expr: up{job="Windows_Infra"} == 0
for: 5m
labels:
severity: page
annotations:
summary: "Instance {{ .instance }} down"
description: "{{ .instance }} of job {{ .job }} has been down for more than 5 minutes."
- alert: DiskSpaceUsage
expr: 100.0 - 100 * (windows_logical_disk_free_bytes{job="Windows_Infra"} / windows_logical_disk_size_bytes{job="Windows_Infra"}) > 90
for: 10m
labels:
severity: high
annotations:
summary: "Disk Space Usage (instance {{ $labels.instance }})"
description: "Disk Space on Drive is used more than 90%\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
Аналогичным образом добавляем другие необходимые параметры. При настроенном Alertmanager сообщения нотификаций автоматически будут приходить в подключенные системы.
Как видите, мониторинг серверов Windows можно легко выполнить с помощью Prometheus и Grafana. Это решение значительно упрощает процесс управления большим парком машин и позволяет оперативно решать проблемы, возникающие при администрировании серверного оборудования в нашей компании.В следующих статьях рассмотрим задачу подключения служб Windows.
Арендуйте выделенные и виртуальные серверы с моментальным деплоем в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.
high_panurg
А много у вас серверов, вы на каждый руками ставите?
Может лучше было бы написать скрипт, который ставит службу или GPO?
Как вы добавляете новые таргеты в prometheus? Тоже каждый раз вручную?
dasgutenberg
Мы разработали скрипт, который при развертывании сервера автоматически устанавливает и настраивает службу мониторинга. Что касается добавления новых целей (таргетов) для мониторинга в Prometheus - мы тоже автоматизировали этот процесс. Prometheus у нас динамически подгружает конфигурационный файл targets.json. Этот файл регулярно обновляется отдельной программой из нашей системы учета серверов.
Таким образом, в конфигурацию Prometheus попадают данные только по актуальным на данный момент серверам. Подробнее об этом подходе можно прочитать в нашей статье на Хабр
high_panurg
Почему бы не ставить consul для обнаружения новых хостов автоматически?