NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: Evgeniy Skoropadskiy on March 03, 2020, 07:24:47 AM

Title: Не отправлять собщения если алерт Acknowledged
Post by: Evgeniy Skoropadskiy on March 03, 2020, 07:24:47 AM
Здравствуйте!

Подскажите, пожалуйста, есть ли возможность настроить отправку сообщений об алертах таким образом, что если этот алерт в статусе Acknowledged то сообщение не отправлять, т.к. о нем уже известно и идут по нему работы?
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Victor Kirhenshtein on March 10, 2020, 10:42:06 AM
Сообщения отправляются по событиям. Можно в правило, в котором происходит отправка сообщения, добавить дополнительный скрипт-фильтр, который проверит наличие и статус соответствующего аларма.
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Evgeniy Skoropadskiy on March 27, 2020, 12:48:03 PM
Спасибо за ответ!
Можете, пожалуйста, написать примерный кусок этого фильтра?
А то я тоже попытался подойти к решению задачи с этой стороны но так и не понял что от куда брать и т.д.
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Victor Kirhenshtein on March 28, 2020, 10:22:52 PM
В аттаче пример правил. Первое правило отсылает сообщение если аларма с заданным ключем нет или он в состоянии "outstanding". Второе правило создает аларм с ключом (или обновляет существующий если аларм с таким клячем уже был).
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Evgeniy Skoropadskiy on March 31, 2020, 06:08:28 AM
Спасибо! Долго попробовал и имеем следующее: уведомления на почту приходят и Acknowledged сбрасывается в Outstanding.
Поможете решить задачу?
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Victor Kirhenshtein on March 31, 2020, 10:01:46 AM
Ну да, я не подумал что аларм сбросится в outstanding на повторном событии. Тут два варианта решения:
1. Сделать такой-же фильтр для генерации алармов - т.е. событие будет просто игнорироваться если аларм уже есть. Тогда можно отсылку нотификации и генерацию аларма объединить в одно правило. Единственный недостаток - счетчик повторов у аларма не будет увеличиваться.
2. Использовать "sticky acknowledge" вместо "acknowledge" для аларма - sticky состояние не будет сбрасываться обратно в outstanding.
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Evgeniy Skoropadskiy on March 31, 2020, 10:03:12 AM
А в фильтре я "руками" не могу увеличивать счетчик?
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Evgeniy Skoropadskiy on March 31, 2020, 03:30:57 PM
Попробовал и объединить в одно правило и использовать sticky: сообщение в любом случае отправляется, а sticky таки не сбрасывается :)
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Evgeniy Skoropadskiy on April 01, 2020, 08:57:33 AM
Перерыл всю доступную документацию и не нашел у объекта 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.

Есть еще какие-то варианты решить мою задачу?
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Victor Kirhenshtein on April 03, 2020, 10:49:23 AM
Похоже что аларм не находится - в этом и проблема. Покажите пожалуйста как сейчас выглядит правило.
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Evgeniy Skoropadskiy on April 03, 2020, 10:51:57 AM
Нивапрос  ;)
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Victor Kirhenshtein on April 03, 2020, 10:56:47 AM
А какая версия сервера? Но expandString должен работать, поскольку иначе была бы ошибка в той строке.
Попробуйте еще в trace добавить результат expandString, и потом сравните в аларм логе что ключ действительно совпадает с алармом.
Title: Re: Не отправлять собщения если алерт Acknowledged
Post by: Evgeniy Skoropadskiy on April 23, 2020, 07:59:51 AM
Спасибо за решение, работает!