Zabbix триггеры: парсинг лога по timestamp и его и мониторинг

Пример парсинга лога на удалённой машине по timestamp.

Создаётся Item для хоста, с которого будет проверяться лог.

Ключ Item:

log["/var/bash_scripts/test.log","error","UTF-8","10",skip]

Log time format. yyyypMMpddphhpmm соответствует штампу в лог файле test.log. Его содержимое:

....

2017-10-02_15-57 : timestamp
2017-10-02_15-58 : timestamp
2017-10-02_15-59 : timestamp
2017-10-02_16-00 : timestamp

....

Файл test.log формируется скриптом:

#!/bin/sh
log=/var/bash_scripts/test.log
DATE=`date +"%Y-%m-%d_%H-%M"`
echo "$DATE : timestamp" >> $log

Чтобы созданный Item начал собирать информацию по искомому слову «error» (указано в поле «key» при создании Item), в файл test.log надо поместить строчку с датой (timestamp) и приписать слово «error». Можно сделать скриптом или добавить новые строки в файл вручную.

#!/bin/sh
log=/var/bash_scripts/test.log
DATE=`date +"%Y-%m-%d_%H-%M"`
echo "$DATE : timestamp  - error 3" >> $log

В разделе мониторинга Latest Data можно наблюдать за обновлением данных.

*При выполнении данных действий по написанной инструкции, Item не получал данные с лога. Начал получать только тогда, когда я поставил в логе двоеточие после timestamp. Когда двоеточие снова убрал, Item остался рабочим. С чем связано, не разобрался.

Чтобы реагировать на появлением «error» в тестовом файле логов test.log, создаётся тригер для этого же хоста.

Триггер работает по выражению:

{storage:log["/var/bash_scripts/test.log","error","UTF-8","10",skip].count(#10,"error",regexp)}>0

Часть выражения count(#10,»error»,regexp)}>0 считает кол-во найденных «error» в последних десяти значениях Item, которые он взял с файла test.log. Если кол-во «error» будет больше 0 (т.е. появилась минимум одна ошибка), то триггер сработает.

Ещё я использовал такое выражение триггера:

{proxmox.office:log["/var/bash_scripts/rsync_gamework.log","error","UTF-8","10",skip].logsource(error)}=0

Созданный триггер не восстанавливается автоматически, но его можно закрыть вручную. Чтобы он восстанавливался автоматически, необходимо изменить условия его срабатывания. Я написал отдельную развёрнутую статью по этому вопросу, т.к. он требует отдельных разъяснений.


На тот случай, если лог по каким-то причинам перестанет обновляться, можно настроить Item на мониторинг времени изменения файла.

vfs.file.time[/var/log/sync_barman_ftp_err.log,modify]

Для этого Item создаётся триггер, которой сработает, если файл не обновится за какой-то период времени. В данном примере это одни сутки.

Выражение восстановления триггера содержит проверку на изменение файла за последнюю минуту. Т.е. если файл изменился и бэкап выполнен, то в течение минуты триггер восстановится.


Поддерживаемые функции триггеров — https://www.zabbix.com/documentation/3.0/ru/manual/appendix/triggers/functions

Добавить комментарий

Ваш адрес email не будет опубликован.