NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: inspirit on February 27, 2013, 09:54:37 AM

Title: обновление до 1.2.6
Post by: inspirit on February 27, 2013, 09:54:37 AM
Добрый день Виктор.
Вчера пытался обновить свой 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 - куда копать ?
Title: Re: обновление до 1.2.6
Post by: Victor Kirhenshtein on February 27, 2013, 10:02:22 AM
Похоже что 1.2.2 не мог нормально статусы портов прчитать, поэтому они и были UNKNOWN. Сейчас как раз все правильно. Чтобы убрать статус CRITICAL на портах, статус которых не интересует, можно поменять им expected state на IGNORE. Это можно делать даже автоматически через configuration poll hook, используя функцию SetInterfaceExpectedState (http://wiki.netxms.org/wiki/NXSL:SetInterfaceExpectedState (http://wiki.netxms.org/wiki/NXSL:SetInterfaceExpectedState)).
Title: Re: обновление до 1.2.6
Post by: inspirit on February 27, 2013, 10:52:28 AM
Мм..в общем видимо, раз теперь все правильно работает, нужно понять, как сделать что бы Netxms не подсвечивал красненьким порты у коммутаторов которые в находятся в Down. Или хотя бы не менял общий статус ноды на CRITICAL из за одного порта в DOWN. (Но так же хочется видеть статус порта UP он или Down - просто что бы он не менял общее состояние ноды). А живость ноды бы определялась по PING, ну вобщем - как раньше.


Можете подробнее написать про SetInterfaceExpectedState и configuration poll hook. Каким образом можно массово сменить ExpectedState на основе скажем BaseOID.
Title: Re: обновление до 1.2.6
Post by: Victor Kirhenshtein on February 27, 2013, 11:50:20 AM
Ну собственно 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. Он будет вызываться для каждой ноды во время опроса.
Title: Re: обновление до 1.2.6
Post by: inspirit on February 27, 2013, 12:10:56 PM
Благодарю Виктор. Сегодня попробую это сделать.