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

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 контроллеров Intel RSTe и VROC в Windows

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

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

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