
Понадобилось настроить мониторинг внесения изменений в конфигурационные файлы. Нужно было отловить факт того, что кто-то изменил файл или свойства файла.
Для этих челей был создан шаблон, позволяющий мониторить изменения в файлах (к которым имеет достут агент заббикса). При этом достаточно добавить в шаблон нужные данные для мониторинга и прицепить шаблон к требуемым хостам. Т.е. управление полностью из заббикса.
Скачать шаблон для Zabbix 5: zbx5-files.
Импортируем шаблон. Настраиваем макросы.
- {$FILE_DISCOVERY_PERIOD} — периодичность опроса файлов, по умолчанию 15 минут
- {$FILE_HISTORY_PERIOD} — сколько хранить историю, по умолчанию 180 дней
- {$FILE_TREND_PERIOD} — тренды, по умолчанию 180 дней

Всего два элемента. Элемент One служебный, он нужен для того, чтобы не обращаться к агенту для генерации данных низкоуровневого обнаружения. Второй элемент данных File List, он нам и нужен.

Заходим в File List. Переходим на вкладку препроцессинга.

Редактируем JavaScript.

Внутри у нас JSON вида:
var FileList = {
"data": [
{
"{#SERVER}": "ALL",
"{#FILEPATH}": "/etc/passwd"
},
{
"{#SERVER}": "Zabbix server",
"{#FILEPATH}": "/etc/testing.txt"
}
] };
return JSON.stringify(FileList)
Здесь и ведётся база файлов, которые нужно проверять.
В {#SERVER}
указываем имя хоста на сервере Zabbix, внутри которого находится нужный нам файл. Вместо имени хоста можно написать ALL
, тогда файл будет мониториться на всех хостах, к которым прикреплён шаблон.
В {#FILEPATH}
указываем путь к файлу. Для примера я указал /etc/passwd
для всех серверов и несуществующий файл /etc/testing.txt
для Zabbix server.
Если теперь прицепить шаблон к серверу Zabbix, то увидим нечто подобное:
Теперь можно добавить и другие хосты со своими файлами. Каждый хост фильтруем весь JSON и выбирает только свои файлы или файлы, помеченные для всех.
Файлы ставятся на мониторинг с помощью низкоуровневого обнаружения.

Триггеры срабатывают:
- На отсутствие файла
- На дату изменения файла
- На дату изменения свойств файла
- На изменение MD5 хеша файла
