Перейти к основному содержанию

Zabbix — мониторим изменение хэша файла

Zabbix

Иногда требуется следить за валидностью версии файла. Это может быть какой-то файл конфигурации или просто документ. В стандартных шаблонах операционной системы Linux есть некоторый подобный механизм, который, к примеру, определяет факт изменения файла /etc/password.

Вот что-то подобное сделаем и в домене Windows для сетевых шар.

Настройка агента

У нас будет сервер, на котором будет выполняться PowerShell скрипт, который будет ходить по сетевым папкам и смотреть, не изменился ли нужный нам файлик. На этом сервере настроим пользовательскую переменную, которую будем мониторить сервером Zabbix. У меня Zabbix 5.

Для начала напишем скрипт C:\zabbix\scripts\get_hash.ps1. Содержимое скрипта не просто простое, а очень простое:

Get-FileHash $args[0] -Algorithm $args[1] | Select-Object Hash | Where-Object {!($_.psiscontainer)} | foreach {$_.Hash}

В современных серверных ОС вам придётся подписать скрипт своим сертификатом.

Подписать PowerShell скрипт с помощью сертификата

Создаём файл конфигурации для пользовательской переменной userparameter_gethash.conf:

UserParameter=gethash.hash[*],powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\scripts\get_hash.ps1" "$1" "$2"

Ну и запускаем заббикс агент от имени доменного пользователя, которому разрешён доступ к проверяемым файлам. Он же локальный администратор текущего сервера, чтобы ещё и сам сервер мониторить.

Настройка сервера

Напишем шаблон для мониторинга. Он у меня уже готов.

В шаблоне один элемент данных, у которого в препроцессинге можно настроить список файлов, которые нужно мониторить. Формат JSON:

var FilesList = { 
"data": [
 {
   "{#NAME}": "SERVER 1 share TXT",
   "{#FILEPATH}": "//server1.domain.local/public/test.txt",
   "{#HASHALGORYTHM}": "MD5",
   "{#VALIDHASH}": "198F3BCD41211373CADE66535627B4C0"
 },
 {
   "{#NAME}": "SERVER 2 share DOCX",
   "{#FILEPATH}": "//server2.domain.local/public/data.docx",
   "{#HASHALGORYTHM}": "MD5",
   "{#VALIDHASH}": "C004111F4994F88204FF2192C019F991"
 }
] };
return JSON.stringify(FilesList)

Здесь:

  • NAME — название файла
  • FILEPATH — путь к файлу, локальный или сетевой
  • HASHALGORYTHM — алгоритм хэширования (SHA1, SHA256, SHA384, SHA512, MD5)
  • VALIDHASH — правильный хэш файла, собственно, если хэш будет другой, значит, файл кто-то изменил

Вот вам в помощь инструмент для определения хэша файла:

Windows 10 — вычислить хэш-сумму файла в командной строке

Хэш-суммы в контекстном меню Windows (MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512)

Дополнительно можно настроить макросы:

  • {$GETHASH_DISCOVERY_PERIOD} — как часто на низком уровне искать новые файлы, которые вы добавили в препроцессинге, по умолчанию 10 минут
  • {$GETHASH_HISTORY_PERIOD} — срок хранения истории, по умолчанию пол года
  • {$GETHASH_NODATA_PERIOD} — когда поднимать панику, если файла нет или хэш не определяется, по умолчанию 30 минут
  • {$GETHASH_REQUEST_PERIOD} — как часто мониторить хэш, по умолчанию 3 минуты

Триггер проверяет последние два значения хэша, если они оба отличаются, то срабатывает. Т.е. по умолчанию через 6 минут.

Привязываем шаблон к нашему хосту с агентом и радуемся ночным звонкам...

 

Похожие материалы

Zabbix шаблон для мониторинга RAID контроллеров LSI в Windows

Делюсь полезным шаблоном для мониторинга RAID контроллеров LSI (Broadcom, Avago). Мониторим с помощью утилиты storcli. Шаблон делал сам.

Zabbix шаблон для мониторинга RAID контроллеров Intel RSTe и VROC в Windows

Делюсь полезным шаблоном для мониторинга программных RAID контроллеров Intel RST (Rapid Storage Technology), Intel RSTe (Intel Rapid Enterprise), Intel VROC (Virtual RAID on CPU).