Добрый день! Прошу помочь.
Возникла потребность делать не более 1 оповещения раз в 15 минут исходя из данных в текстовом логе (+в тексте оповещения нужен сам текст строчки из лога). Если за 15 минут хотя бы один раз появляется сообщение в логах с уровнем Fatal – высылать только одно оповещение с текстом из лога в эти 15 минут (самое первое, самое последнее, из середины - без разницы, любое сообщение в этот временной промежуток). Если не было ни одного сообщения с уровнем Fatal за 15 минут – ничего не делать.
Почему именно так: если высылать все сообщения подряд, то можно заспамить (был случай 10 тыс. фатальных ошибок в логе за один день). Если высылать только в первый раз, когда событие случилось (trigger event generation mode = Single), то можно пропустить повтор проблемы через несколько часов\дней, не всегда есть возможность вручную изменить статус триггера, да и желания вручную менять статус триггера тоже нет (при этом сообщения Fatal - Info могут чередоваться между собой в логе через каждую секунду в течение суток, и делать Recovery в Trigger по уровню ошибки в логе бесполезно).
Более конкретно:
Сервер zabbix 5.0.9, активный агент zabbix, читает логи из файла. Пример лога:
Как сейчас реализовано - через log.count:
Создан item с update interval = 15m, key:
Данное решение не устраивает, потому что в тексте оповещения нет самого сообщения из лога, а только количество посчитанных строк с фатальным условием (за 15 минут). Пример оповещения:
Пытался сделать с помощью настроек Steps в Action ; с помощью nodata(); recovery expression в триггер – сделать single триггер и выключить его через 15 минут; через custom intervals в item. Ни один способ не привел к успешному результату, хотя вроде простой запрос.
Возникла потребность делать не более 1 оповещения раз в 15 минут исходя из данных в текстовом логе (+в тексте оповещения нужен сам текст строчки из лога). Если за 15 минут хотя бы один раз появляется сообщение в логах с уровнем Fatal – высылать только одно оповещение с текстом из лога в эти 15 минут (самое первое, самое последнее, из середины - без разницы, любое сообщение в этот временной промежуток). Если не было ни одного сообщения с уровнем Fatal за 15 минут – ничего не делать.
Почему именно так: если высылать все сообщения подряд, то можно заспамить (был случай 10 тыс. фатальных ошибок в логе за один день). Если высылать только в первый раз, когда событие случилось (trigger event generation mode = Single), то можно пропустить повтор проблемы через несколько часов\дней, не всегда есть возможность вручную изменить статус триггера, да и желания вручную менять статус триггера тоже нет (при этом сообщения Fatal - Info могут чередоваться между собой в логе через каждую секунду в течение суток, и делать Recovery в Trigger по уровню ошибки в логе бесполезно).
Более конкретно:
Сервер zabbix 5.0.9, активный агент zabbix, читает логи из файла. Пример лога:
{"time":"2021-04-19T13:49:03.610Z","level":"INFO","host":"host1","m sg":"Соединение: попытка 3 из 3"}
{"time":"2021-04-19T13:49:03.610Z","level":"INFO","host":"host1","m sg":"Соединение: попытка 2 из 3"}
{"time":"2021-04-19T13:49:06.890Z","level":"FATAL","host":"host2"," msg":"Таймаут: таймаут получения данных"}
{"time":"2021-04-19T13:49:03.610Z","level":"INFO","host":"host1","m sg":"Соединение: попытка 2 из 3"}
{"time":"2021-04-19T13:49:06.890Z","level":"FATAL","host":"host2"," msg":"Таймаут: таймаут получения данных"}
Как сейчас реализовано - через log.count:
Создан item с update interval = 15m, key:
log.count["D:\Logs\log_json.log","Fatal|FATAL"]
На основании него создан триггер с event generation mode = multiple.Данное решение не устраивает, потому что в тексте оповещения нет самого сообщения из лога, а только количество посчитанных строк с фатальным условием (за 15 минут). Пример оповещения:
Problem: _Log Fatal Count Trigger
Problem started at 17:10:03 on 2021.04.18
Problem name: _Log Fatal Count Trigger
Host: host1
Severity: Information
Operational data: 2
Original problem ID: 74918
Problem started at 17:10:03 on 2021.04.18
Problem name: _Log Fatal Count Trigger
Host: host1
Severity: Information
Operational data: 2
Original problem ID: 74918
Пытался сделать с помощью настроек Steps в Action ; с помощью nodata(); recovery expression в триггер – сделать single триггер и выключить его через 15 минут; через custom intervals в item. Ни один способ не привел к успешному результату, хотя вроде простой запрос.
Comment