Заметил странную ситуацию как устройство с большим количеством портов отмечается как critical.
Во вложении log.
Проблема в том что SNMP agent отключился в 08:46:21, а node down появилось только в 8:49:27.
Все это время netxms по одному помечал все интерфпейсы как UNKNOWN.
Это более чем странно, ведь Он уже знает что SNMP agent не отвечает.
А еще все эти сообщения вылезли в лог в одно время - когда произошло node down
Кстати было бы классно, если лог можно было бы просто скопировать :)
Про долгие проверки каждого интерфейса - это баг. А в лог они попадают в одно время с SYS_NODE_DOWN поскольку их придерживает механизм корреляции событий - чтобы можно было все SYS_IF_DOWN скоррелировать с SYS_NODE_DOWN и через event policy пропустить только SYS_NODE_DOWN.
Quote from: Victor Kirhenshtein on February 08, 2008, 12:48:21 PM
Про долгие проверки каждого интерфейса - это баг. А в лог они попадают в одно время с SYS_NODE_DOWN поскольку их придерживает механизм корреляции событий - чтобы можно было все SYS_IF_DOWN скоррелировать с SYS_NODE_DOWN и через event policy пропустить только SYS_NODE_DOWN.
Надоело ждать решения проблемы - сделал сам, вроде пока никаких проблем с этим не наблюдается:
Если кого-то интересует:
Находим в interface.cpp в функции StatusPoll (строка 254) строчку вида:
if (bNeedPoll && (pNode->Flags() & NF_IS_SNMP) &&
(!(pNode->Flags() & NF_DISABLE_SNMP)))
и меняем ее на
if (bNeedPoll && (pNode->Flags() & NF_IS_SNMP) &&
(!(pNode->Flags() & NF_DISABLE_SNMP)) && (!(pNode->RuntimeFlags() & NDF_SNMP_UNREACHABLE)))
Теперь если SNMP agent недоступен опрос интерфейса будет пропущен - не совсем красиво, но хотя бы теперь быстрее работает.
Просто не успел до этого добраться, времени дико не хватает... Спасибо, вставлю в основной код. :) Решение абсолютно правильное.