Отладка скриптов в Event Processing Policy

Started by goa, June 14, 2011, 08:59:59 AM

Previous topic - Next topic

goa

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

Столкнулся с небольшой трудностью в настройке.

Условия задачи:
Есть сервер NetXMS - A, он подключен через vpn шлюз B к сети с узлами C,D,E,F,G...
В объектах создан контейнер В1, содержащий узлы CDEFG.
Необходимо обрабатывать события таким образом, чтобы при падении шлюза В, не генерировались алармы от C,D,E,F,G.

Решение:

1. Создаю Situation "VpnBStatus".
2. В Event Processing Policy создаю правило, которое, при получении SYS_NODE_DOWN от шлюза В, выставляет атрибут "status" в "down" для instance B.
3. В Event Processing Policy создаю правило, которое, при получении SYS_NODE_UP от шлюза В, выставляет атрибут "status" в "up" для instance B.
4. В Event Processing Policy создаю правило, которое, при получении SYS_NODE_DOWN от контейнера В1, выполняет скрипт


s = FindSituation("VPNBStatus", "B");
if (s != NULL)
{
if (s->status == "down")
return false; // Don't match rule
}
return true; // Match rule


Выставляю в опциях "Stop processing"

Отключаю vpn шлюз В и жду. После появления аларма от шлюза В, алармы от CDEFG все равно генерируются. Как буд-то скрипт не выполняется. Существует ли инструмент отладки?

И, до кучи. Алармы от узлов удаленной сети CDEFG начинают генерироваться раньше,  чем от шлюза В. Как это исправить? Выставлял разные периоды опроса состояния(для В меньше, для CDEFG больше), не помогает.


Спасибо.

Victor Kirhenshtein

Nastroeno vrode vse pravil'no. Pohoze problema imenno v tom, chto snachala oprashivajutsja uzli za vpn gateway'em, a potom on sam. Vlijat' na porjadok oprosa osobo nel'zja. Ja podumaju chto s etim mozno sdelat'.

Dlja otladki scriptov mozno ispol'zovat' funkciju trace - ona vivodit soobschenie v log servera. Format takoj:

trace(debug_level, message)

Esli debug level 0, to budet generitsja INFO message.

Privedennij vishe script s trace'ami mozet vigljadet' tak:


s = FindSituation("VPNBStatus", "B");
if (s != NULL)
{
   trace(0, "Situation instance found, status=" . s->status);
   if (s->status == "down")
      return false; // Don't match rule
}
else
{
   trace(0, "Situation instance not found");
}
return true; // Match rule


goa

Виктор, спасибо за ответ.

Всё времени нет разбираться с этим вопросом. Уверен, что получится, и как только получится, отпишу.