Добрый день.
Очень надеюсь на помощь форумчан.
Zabbix 3.0.27.
Item раз в 5 минут проверяет содержимое *.log-файла по ключу:
Item связан с триггером выражением:
В целом такая логика работает и устраивает нас.
Но есть загвоздка в получении уведомлений по почте. Если item разово выгружает сразу несколько строк (а такое бывает часто), то, насколько я понимаю, триггер среагирует на первую пришедшую строку и проигнорирует остальные.
А хотелось бы получить по почте только последнее значение (error 3 в примере), но чтобы при этом в мониторинге Zabbix для историчности отображались все строки, которые выгрузил item.
По-разному менял макросы в тексте рассылки — результат одинаков. Пробовал следующие макросы:
По всем макросам рассылка приходит только с первой строкой.
В абстрактном примере ниже item разово выгрузит строки 3-5, триггер сработает на первую же строку и в письме я получу только «Exception error 1», а ошибки 2 и 3 не будут браться в расчёт.
В русском help имеется уточнение: «Zabbix не гарантирует точный порядок значений, если в истории существуют более двух значений менее чем за секунду».
Если проверять мой item в «Мониторинге», то действительно, все данные выгружаются разово и все в течение одной секунды.
Вопрос знатокам. Это уточнение из help — это непреложная истина и нет вообще никаких вариантов сделать то, что я пытаюсь сделать? Возможно, я что-то делаю не так? Возможно, за прошедшее время уже появилось решение и просто я не смог его нагуглить?
Заранее спасибо за ответы и помощь.
Очень надеюсь на помощь форумчан.
Zabbix 3.0.27.
Item раз в 5 минут проверяет содержимое *.log-файла по ключу:
log["/[path]/test.log","[Ee]xception|ORA-","UTF-8",100,"skip"]
{HOSTNAME:log["/[path]/test.log","[Ee]xception|ORA-","UTF-8",100,"skip"].iregexp(exception|ora-)}=1
and
{HOSTNAME:log["/[path]/test.log","[Ee]xception|ORA-","UTF-8",100,"skip"].nodata(60)}<>1
and
{HOSTNAME:log["/[path]/test.log","[Ee]xception|ORA-","UTF-8",100,"skip"].nodata(60)}<>1
Но есть загвоздка в получении уведомлений по почте. Если item разово выгружает сразу несколько строк (а такое бывает часто), то, насколько я понимаю, триггер среагирует на первую пришедшую строку и проигнорирует остальные.
А хотелось бы получить по почте только последнее значение (error 3 в примере), но чтобы при этом в мониторинге Zabbix для историчности отображались все строки, которые выгрузил item.
По-разному менял макросы в тексте рассылки — результат одинаков. Пробовал следующие макросы:
• {{HOST.HOST}:{ITEM.KEY}.last()}
• {{HOST.HOST}:{ITEM.KEY}.last(#1-9)}
• {ITEM.VALUE}
• {ITEM.VALUE1-9}
• {ITEM.LASTVALUE}
• {ITEM.LASTVALUE1-9} [Примечание. Да, я знаю, что этот макрос указывает на N-й элемент данных, а не на N-ое значение. Но попробовать-то стоило]
• {{HOST.HOST}:{ITEM.KEY}.last(#1-9)}
• {ITEM.VALUE}
• {ITEM.VALUE1-9}
• {ITEM.LASTVALUE}
• {ITEM.LASTVALUE1-9} [Примечание. Да, я знаю, что этот макрос указывает на N-й элемент данных, а не на N-ое значение. Но попробовать-то стоило]
В абстрактном примере ниже item разово выгрузит строки 3-5, триггер сработает на первую же строку и в письме я получу только «Exception error 1», а ошибки 2 и 3 не будут браться в расчёт.
[String 1] OK DATA 1
[String 2] OK DATA 2
[String 3] Exception error 1
[String 4] Exception error 2
[String 5] Exception error 3
[String 2] OK DATA 2
[String 3] Exception error 1
[String 4] Exception error 2
[String 5] Exception error 3
Если проверять мой item в «Мониторинге», то действительно, все данные выгружаются разово и все в течение одной секунды.
Вопрос знатокам. Это уточнение из help — это непреложная истина и нет вообще никаких вариантов сделать то, что я пытаюсь сделать? Возможно, я что-то делаю не так? Возможно, за прошедшее время уже появилось решение и просто я не смог его нагуглить?
Заранее спасибо за ответы и помощь.