У Zabbix есть функция vfs.file.cksum для проверки контрольной суммы файла. Для одного-двух файлов можно вручную настроить и не париться. А когда файлов много, хочется автоматизировать этот процесс.
Также у Zabbix есть функция vfs.dir.get. С её помощью можно рекурсивно получить информацию о всех файлах и каталогах. Указываем каталог веб сервера, в моём случае
/etc/angie и получаем информацию обо всех файлах в директории в формате json. Примерно такую:[ { "basename": "angie.conf", "pathname": "/etc/angie/angie.conf", "dirname": "/etc/angie", "type": "file", "user": "root", "group": "root", "permissions": "0644", "uid": 0, "gid": 0, "size": 5910, "time": { "access": "2025-01-27T22:12:26+0300", "modify": "2024-08-19T16:04:34+0300", "change": "2024-08-19T16:04:34+0300" }, "timestamp": { "access": 1738005146, "modify": 1724072674, "change": 1724072674 } }, { "basename": "angie.conf.orig", "pathname": "/etc/angie/angie.conf.orig", "dirname": "/etc/angie", "type": "file", "user": "root", "group": "root", "permissions": "0644", "uid": 0, "gid": 0, "size": 1230, "time": { "access": "2024-10-01T19:11:57+0300", "modify": "2023-11-20T20:42:55+0300", "change": "2024-08-19T15:43:30+0300" }, "timestamp": { "access": 1727799117, "modify": 1700502175, "change": 1724071410 } }]Дальше этот вывод можно распарсить в правиле автообнаружения, настроить макросы, добавить прототипы элементов данных и триггеры.
На выходе я получил айтемы для каждого файла из директории
/etc/angie. По ним собирается информация о размере, датах, правах и т.д. Если меняется контрольная сумма, то срабатывает триггер. Плюс отдельно сделал для примера айтемы, где хранится размер файлов. Это просто вам для демонстрации возможностей, чтобы этот же шаблон можно было использовать для мониторинга за бэкапами или какими-то другими файлами, где нужно следить ещё и за размером. Там логика триггеров будет другая, но сама идея с автообнаружением и прототипами триггеров такая же. Дополнительно сделал триггер, который сработает, если для айтема не поступают данные. Это случится, если файл удалят.
Обращаю внимание на описание триггеров в шаблоне. Там показан пример, как в описание выводить данные из айтемов. Я прямо в описании вывожу последнее заначение хэша и предыдущее. По аналогии туда можно выводить значения из разных айтемов, которые будут полезны в информации о триггере.
Настроить подобное меня надоумила вот эта запись в блоге File Integrity Monitoring with Zabbix. Там только сама идея описана в общих словах, без точной реализации. Я уже по мотивам сделал шаблон и потестировал.
В шаблоне нужно будет поменять единственный элемент данных - Check dir. Указать в нём свой каталог. А дальше правило автообнаружения все айтемы на основе файлов создаст само.
При желании сюда же можно контроль за именем файла и изменением прав доступа прикрутить, но мне особо не нужно это.
Если у кого-то есть вопросы по мониторингу тех или иных вещей в Zabbix, задавайте. Чем смогу, помогу. Я чего только в нём не мониторил.
⇨ Ссылка на шаблон
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#zabbix

