Формирование Alarm при наступлении порогового количества событий

Started by 7novds, February 06, 2017, 10:15:32 AM

Previous topic - Next topic

7novds

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

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

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

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

Tatjana Dubrovica

Можно но сложно.
В 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);