Ad Widget
Collapse
Мониторинг вновь создаваемого лог файла.
Collapse
X
-
Подождите, зачем проверку еще и в тригере устраивать? У вас элемент активной проверки (т.е. на стороне агента) ищет строку "FALED" и отправляет на сервер в случае совпадения. Вам надо всего лишь nodata()=0 для триггера.Например, искать в ней заведомо присуствующую строку "FAILED":Comment
-
Как я писал выше, у нас фильтр на "проблемную" строку указан прямо в ключе элемента данных, т.е. любое новое значение, пересылаемое агентом Zabbix, заведомо будет содержать строку "FAILED" и являться индикатором проблемы.
Триггер требует какого-то условия, чтобы срабатывать при поступлении нового значения. В данном случае, поскольку нужно реагировать на любое новое значение, то можно прописать самое простое условие. Я предложил сравнивать длину значения - она явно будет ненулевой, поскольку значение содержит, как минимум, подстроку "FAILED". Но с таким же успехом можно прописать и любое другое условие, которое в расках данной задачи будет выполняться всегда. Я упомянул str("FAILED")=1, но с ткаим же успехом можно указать, например, count(#1)>0 или какую-нибудь ещё тавтологию.
Автор темы хотел бы ручного закрытия проблемы (закрывает дежурный оператор, когда разберётся).
Триггерная функция nodata() требует обязательного параметра (длина периода для проверки). Для данной задачи она плоха тем, что:- по истечении этого периода проблема закроется автоматически, что противоречит поставленной задаче (закрывать вручную);
- создаёт совершенно ненужную дополнительную нагрузку (поскольку триггер с временнЫми функциями пересчитывается каждые 30 секунд, что для данной задачи не нужно);
- не совместима с опцией "Multiple event generation".
Comment
-
Всем спасибо, все заработало так как надо! Большая благодарность всем кто откликнулся.
Но вот шеф немного усложнил задачу)), теперь необходим триггер на зависший job допустим выполнение задания начинается с 1 ночи до 7 утра, и если нет данных в логе "COMPLETED" слать сообщение на емаил
Написал следующий код: {HOST:log["/tmp/logs/etl2.log","COMPLETED",,,skip].nodata(21600)}=1, но действие идет постоянно как только закрываю руками проблему, он заново отсылает сообщение, подскажите пожалуйста правильный код?Comment
-
При такой постановке задачи проверять наличие (вернее, отсутствие) записи в логе надо раз в сутки - в тот момент, когда уже пора бить тревогу.Всем спасибо, все заработало так как надо! Большая благодарность всем кто откликнулся.
Но вот шеф немного усложнил задачу)), теперь необходим триггер на зависший job допустим выполнение задания начинается с 1 ночи до 7 утра, и если нет данных в логе "COMPLETED" слать сообщение на емаил
Пусть это будет, скажем 07:15 утра. Тогда я бы сформулировал условие, например, так:
И выражение восстановления:Code:{HOST:log["/tmp/logs/etl2.log","COMPLETED",,,skip].time()}>=071500 and {HOST:log["/tmp/logs/etl2.log","COMPLETED",,,skip].time()}<071600 and {HOST:log["/tmp/logs/etl2.log","COMPLETED",,,skip].count(7h)}=0
Комментарии:Code:{HOST:log["/tmp/logs/etl2.log","COMPLETED",,,skip].count(1h)}>0
Поскольку триггер содержит временнУю триггерную функцию time(), то вне зависимости от поступающих данных он будет пересчитываться каждые 30 секунд (чтобы отследить момент, когда сработает условие по времени).
Таким образом, реальная проверка будет выполняться в период с 07:15 до 07:16: если за последние 7 часов количество поступивших в лог-файл записей со строкой "COMPLETED" окажется нулевым, то триггер сработает. И останется в состоянии "Проблема" до тех пор, пока либо не появится такая свежая строка в логе (для этого нужно выражение восстановления), либо не будет закрыт вручную. Кроме того, выражения восстановления не даёт триггеру закрыться автоматически после 07:16, а ограничения по времени не позволят сработать триггеру заново после ручного закрытия.Comment
-
Не работает триггер, пробовал изменять условия выражения time() и count() на ближайщее время, сообщений от забикса не приходило и на Dashboard нет ничего.
Код такой:
JOB Hovering "COMPLETED"
{host:log["/tmp/logs/etl2.log","COMPLETED",,,skip].time()}=065900 and {host:log["/tmp/logs/etl2.log","COMPLETED",,,skip].time()}=070000 and {host:log["/tmp/logs/etl2.log","COMPLETED",,,skip].count(6h)}=0Comment
-
Чтобы этот триггер сработал, на часах должно быть 6.59 и 7.00 одновременно. Ситуация маловероятная, но наркологам виднее. Впрочем, даже если оставить одно условие time()=070000, намного лучше не станет. Триггер будет пересчитываться раз в 30 секунд, так что вероятность того, что он пересчитается ровно в 7 часов 0 минут 0 секунд, 1/30.Comment
-
Делать нестрогое сравнение, прверяя время не на точное совпадение, а на интервал (от и до). Пример я приводил в своей предыдущей реплике. Не работает? Тогда давайте разбираться, почему не работает: покажите свой триггер, что высвечивает Latest data по данному айтему за последние сутки, и историю проблем по данному хосту за последние сутки.Comment
-
Предложение - следовать советам более опытных коллег, не менять знаки сравнения. Насколько я понял, вы хотели как раз при отсутствии каких либо данных получить эскалацию. Т.е. для проверки не надо формировать вообще никаких сообщений, сдвинуть интервал на ближайшее время (все верно) и count (!) поставить 5 мин. Тогда в течении 5 мин в заданном интервале времени ожидайте.Comment
Comment