Не отправлять собщения если алерт Acknowledged

Started by Evgeniy Skoropadskiy, March 03, 2020, 07:24:47 AM

Previous topic - Next topic

Evgeniy Skoropadskiy

Здравствуйте!

Подскажите, пожалуйста, есть ли возможность настроить отправку сообщений об алертах таким образом, что если этот алерт в статусе Acknowledged то сообщение не отправлять, т.к. о нем уже известно и идут по нему работы?

Victor Kirhenshtein

Сообщения отправляются по событиям. Можно в правило, в котором происходит отправка сообщения, добавить дополнительный скрипт-фильтр, который проверит наличие и статус соответствующего аларма.

Evgeniy Skoropadskiy

Спасибо за ответ!
Можете, пожалуйста, написать примерный кусок этого фильтра?
А то я тоже попытался подойти к решению задачи с этой стороны но так и не понял что от куда брать и т.д.

Victor Kirhenshtein

В аттаче пример правил. Первое правило отсылает сообщение если аларма с заданным ключем нет или он в состоянии "outstanding". Второе правило создает аларм с ключом (или обновляет существующий если аларм с таким клячем уже был).

Evgeniy Skoropadskiy

Спасибо! Долго попробовал и имеем следующее: уведомления на почту приходят и Acknowledged сбрасывается в Outstanding.
Поможете решить задачу?

Victor Kirhenshtein

Ну да, я не подумал что аларм сбросится в outstanding на повторном событии. Тут два варианта решения:
1. Сделать такой-же фильтр для генерации алармов - т.е. событие будет просто игнорироваться если аларм уже есть. Тогда можно отсылку нотификации и генерацию аларма объединить в одно правило. Единственный недостаток - счетчик повторов у аларма не будет увеличиваться.
2. Использовать "sticky acknowledge" вместо "acknowledge" для аларма - sticky состояние не будет сбрасываться обратно в outstanding.

Evgeniy Skoropadskiy

А в фильтре я "руками" не могу увеличивать счетчик?

Evgeniy Skoropadskiy

Попробовал и объединить в одно правило и использовать sticky: сообщение в любом случае отправляется, а sticky таки не сбрасывается :)

Evgeniy Skoropadskiy

Перерыл всю доступную документацию и не нашел у объекта Event метод expandString() у других объектов тоже.
Сделал дебаг в фильтре:
trace(0, "Alarm " . alarm);
Получаем:
*I* [                   ] Alarm
А если:
trace(0, "Alarm " . alarm->state);
То:
*E* [                   ] Failed to execute evaluation script for event processing policy rule #23 (Error 14 in line 2: Function or operation argument is not an object)

Из чего следует, что в целом я не получаю объект Alarm.

Есть еще какие-то варианты решить мою задачу?

Victor Kirhenshtein

Похоже что аларм не находится - в этом и проблема. Покажите пожалуйста как сейчас выглядит правило.

Evgeniy Skoropadskiy


Victor Kirhenshtein

А какая версия сервера? Но expandString должен работать, поскольку иначе была бы ошибка в той строке.
Попробуйте еще в trace добавить результат expandString, и потом сравните в аларм логе что ключ действительно совпадает с алармом.

Evgeniy Skoropadskiy

Спасибо за решение, работает!