NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: zeratyl on May 21, 2019, 10:28:06 AM

Title: Гибкая настройка уведомлений
Post by: zeratyl on May 21, 2019, 10:28:06 AM
Добрый день.

Пытаюсь решить задачу настройки уведомлений по важности события, делаю как на скриншотах, и тут возникает проблема если использовать SYS_THRESHOLD_REARMED как общее для завершения событий, то приходят лишние уведомления, если не использовать то не приходят уведомления о завершении. В противном случае нужно использовать на каждый триггер своё собственное завершающее событие, что совсем не удобно. Есть какое-то простое решение?
Title: Re: Гибкая настройка уведомлений
Post by: Victor Kirhenshtein on May 21, 2019, 02:58:17 PM
Можно помимо генерации аларма делать запись с таким-же ключом в persistent storage, и в правиле отсылки почты по SYS_THRESHOLD_REARMED проверять наличие такого ключа, и только если он есть выполнять отсылку.
Title: Re: Гибкая настройка уведомлений
Post by: zeratyl on May 21, 2019, 04:24:13 PM
Работает, спасибо за идею!

Простой код, может кому-то понадобится при решении похожей задачи:

sub main() {

alarm_status = false;

alarm_ps_status = ReadPersistentStorage("%<dciId>_%i");

if (alarm_ps_status != null) {
alarm_status = true;
}

return alarm_status;

}
Title: Re: Гибкая настройка уведомлений
Post by: Victor Kirhenshtein on May 21, 2019, 04:31:17 PM
А точно работает? ReadPersistentStorage на делает подстановку, т.е. будет искаться ключ %<dciId>_%i, а не скажем 127_313.
Title: Re: Гибкая настройка уведомлений
Post by: zeratyl on May 21, 2019, 05:12:54 PM
Понаблюдал предварительно, в ps записи добавляются и удаляются, в соответствии с настроенными событиями. Видимо работает.
Title: Re: Гибкая настройка уведомлений
Post by: zeratyl on May 21, 2019, 10:31:14 PM
Вы правы, не работает, попробую переделать.
Title: Re: Гибкая настройка уведомлений
Post by: Victor Kirhenshtein on May 21, 2019, 10:34:32 PM
Похоже это следствие ошибки в ReadPersistentStorage - если записи с заданным ключом нет, то возвращается пустая строка, а не NULL. Правильным вариантом кода будет

ReadPersistentStorage($event->dciId . "_0x" . right(d2x($node->id), 8, "0"));

Предварительно можно еще проверить что $event->dciId не NULL.
Title: Re: Гибкая настройка уведомлений
Post by: zeratyl on May 21, 2019, 10:46:41 PM
Спасибо! Проверю.
Title: Re: Гибкая настройка уведомлений
Post by: zeratyl on May 22, 2019, 02:10:58 PM
Теперь работает корректно, спасибо!

Итоговый вариант:

sub main() {

alarm_status = false;

alarm_ps_status = ReadPersistentStorage($event->dciId . "_0x" . right(d2x($node->id), 8, "0"));

if ((alarm_ps_status != null) && (alarm_ps_status == "1")) {
alarm_status = true;
}

return alarm_status;

}