NetXMS Support Forum

Please login or register.

Login with username, password and session length

Author Topic: Формирование Alarm при наступлении порогового количества событий  (Read 1820 times)

7novds

  • Jr. Member
  • **
  • Posts: 51
    • View Profile

Сформулировать одним словом не могу, попробую описать:

Оборудование ( коммутатор ) присылает SNMP Trap о неуспешной авторизации пользователя который подключается к удаленной консоли. В целом это нормально, так как сменив пароль я еще в течении двух трех дней ввожу старый по привычке. Но если количество таких trap`ов превышает например 10 в час тут стоит подумать и посмотреть.

Было бы не плохо формировать аларм при достижении некого критического количество событий, так же было бы не плохо если бы это количество можно было бы считать не в рамках одной ноды, а вообще.

Опять же, если кто-то шарится по всей сети пытаясь авторизоваться на железе. В этом случае сообщения будут приходить от разных нод, но все равно ситуация интересная.
Logged

Tatjana Dubrovica

  • Global Moderator
  • Full Member
  • *****
  • Posts: 167
    • View Profile

Можно но сложно.
В EPP нужно написать скрипт который (во время прихода события о неправильном логине) будет сохранять список пришедших трапов за последний час в строку и в случае если их было больше 10 генерить другое событие который уже будет создавать аларм. Строку можно хранить в Situations, которые в релизе 2.1-M3 мы заменим на PersistentStorage. Если в NXSL использовать посик Situations по имени, то переход на PersistentStorage будет не заметен.
Вот пример который делает похожую задачу в пределах 1 узла и хранит значения в CustomAttribute узла:

array attr;

for (i = 0; i < 5; i++)
{
   attr = GetCustomAttribute($node, "collectedEventTime" . i);
}

step = GetCustomAttribute($node, "collectedEventStep");

for (i = 0; i < 5; i++) {
   if(attr == null)
   {
      SetCustomAttribute($node, "collectedEventTime" . i, time());
      SetCustomAttribute($node, "collectedEventStep", i);
      return;
   }
}

step++;
if(step > 4)
   step = 0;   

//Cehck that value that we will change occured more than 5 minutes ago
if((time() - attr[step]) < 300)
{
   //generate alarm
   PostEvent($node, "MARK_EVENT_AS_CRITICAL", null, "Event marked as critical");
}

//set new time value
SetCustomAttribute($node, "collectedEventTime" . step, time());
SetCustomAttribute($node, "collectedEventStep", step);

Logged