обновление до 1.2.6

Started by inspirit, February 27, 2013, 09:54:37 AM

Previous topic - Next topic

inspirit

Добрый день Виктор.
Вчера пытался обновить свой Netxms 1.2.2 до 1.2.6
В общем, после установки libtre-dev все нормально собралось. И установилось.

Базу обновил - все без ошибок.

Попробовал запустить - все запустилось.

Захожу. Все коммутаторы горят красным. Причина - интерфейсы коммутаторов которые находятся не в UP - имеют статус CRITICAL(В 1.2.2 порты которые в DOWN имеют статус Unknown и красным не помечены).

Пробовал делать Pool status. Configuration pool - все отрабатывает без ошибок.
Пробовал делать Unmanage/Manage для ноды - Эффекта не дало.

Пришлось откатиться на 1.2.2 - куда копать ?

Victor Kirhenshtein

Похоже что 1.2.2 не мог нормально статусы портов прчитать, поэтому они и были UNKNOWN. Сейчас как раз все правильно. Чтобы убрать статус CRITICAL на портах, статус которых не интересует, можно поменять им expected state на IGNORE. Это можно делать даже автоматически через configuration poll hook, используя функцию SetInterfaceExpectedState (http://wiki.netxms.org/wiki/NXSL:SetInterfaceExpectedState).

inspirit

Мм..в общем видимо, раз теперь все правильно работает, нужно понять, как сделать что бы Netxms не подсвечивал красненьким порты у коммутаторов которые в находятся в Down. Или хотя бы не менял общий статус ноды на CRITICAL из за одного порта в DOWN. (Но так же хочется видеть статус порта UP он или Down - просто что бы он не менял общее состояние ноды). А живость ноды бы определялась по PING, ну вобщем - как раньше.


Можете подробнее написать про SetInterfaceExpectedState и configuration poll hook. Каким образом можно массово сменить ExpectedState на основе скажем BaseOID.

Victor Kirhenshtein

Ну собственно expected state для того и нужен - если он DOWN или IGNORE, то порт в состоянии DOWN будет иметь статус NORMAL, и соответственно вся нода. При этом состояние можно видеть в закладкaх Ports и Interfaces - в Ports он будет красным, а в Interfaces в колонке Oper Status будет DOWN.

Можно написать такой hook:


foreach(i : GetNodeInterfaces($node))
{
   if (i->ifIndex > 1)
      SetInterfaceExpectedState(i, "IGNORE");
}


Поставит IGNORE для всех портов с индексом больше 1 (ifIndex - это последний элемент в OID'ах из .1.3.6.1.2.1.2.2.1).

Чтобы сделать hook на configuration poll, надо в библиотеке скриптов создать скрипт с именем Hook::ConfigurationPoll. Он будет вызываться для каждой ноды во время опроса.

inspirit

Благодарю Виктор. Сегодня попробую это сделать.