NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: enp on December 20, 2013, 08:40:53 AM

Title: Active Discovery bugs
Post by: enp on December 20, 2013, 08:40:53 AM
Здравствуйте!

Включил Active Discovery для сети 192.168.191.0/24, но он нашел ноды из сети 10.11.80.0/22, которые точно не имеют интерфейсов в сети 192.168.191.0/24 - см. приложенную картинку. Есть две ноды, присутствующие в обеих сетях - но они давно добавлены вручную. Я что-то неправильно сделал или это баг?

Да, найденные ноды видны только в Entire network и не видны Infrastructure Services. Как поместить их в какой-нибудь контейнер в Infrastructure Services?
Title: Re: Active Discovery bugs
Post by: kozlov_ao on December 20, 2013, 08:54:55 AM
Приветствую!
Нет, это не баг. Просто наверняка имеется какой-либо маршрут и т.п. шляпа, например, на сеть провайдера. В моей практике часто встречаются ситуации, когда сетка провайдера просматривается по SNMP... как то они не беспокоятся о безопасности ))
Чтобы ловились только твои хосты - пропиши фильтр.

Чтобы хосты раскидывались по Infrastructure Services - можно создать правила авто-маппинга (properties - automatic bind rules)... ну или в ручную, тыкаешь правой кнопкой по нужной папке и выбираешь "Bind..."
Title: Re: Active Discovery bugs
Post by: enp on December 20, 2013, 09:17:00 AM
Quote from: kozlov_ao on December 20, 2013, 08:54:55 AM
Чтобы ловились только твои хосты - пропиши фильтр.

А в чем тогда разница между Active Discovery Targets и Address Filters?

Quote from: kozlov_ao on December 20, 2013, 08:54:55 AM
Чтобы хосты раскидывались по Infrastructure Services - можно создать правила авто-маппинга (properties - automatic bind rules)...

А как написать правило: класть в этот контейнер те ноды, которых нет ни в каких других контейнерах?
Title: Re: Active Discovery bugs
Post by: kozlov_ao on December 20, 2013, 09:21:43 AM
В таргет, он прошерстит все что сможет, начиная с указанного диапазона + все зависимости.. это позволит составить карту сети.
Фильтр ему аппетит немного попортит...

QuoteА как написать правило: класть в этот контейнер те ноды, которых нет ни в каких других контейнерах?
ммм... ну тут я пас )) ни разу не ходил от обратного :)
Title: Re: Active Discovery bugs
Post by: enp on December 20, 2013, 09:26:31 AM
Active Discovery Targets - обязательный параметр или достаточно Address Filters?
Title: Re: Active Discovery bugs
Post by: enp on December 20, 2013, 09:29:07 AM
А как хотя бы вручную добавить ноду в контейнер, если она видна исключительно в Entire Network? Там у нод ничего похожего по смыслу в контекстном меню я не вижу.
Title: Re: Active Discovery bugs
Post by: kozlov_ao on December 20, 2013, 09:33:22 AM
тыкай не по ноде, а по папке в Infrastructure Services
Title: Re: Active Discovery bugs
Post by: enp on December 20, 2013, 09:36:37 AM
Quote from: kozlov_ao on December 20, 2013, 09:33:22 AM
тыкай не по ноде, а по папке в Infrastructure Services

понял, спасибо
Title: Re: Active Discovery bugs
Post by: enp on December 20, 2013, 11:21:57 AM
Quote from: enp on December 20, 2013, 09:26:31 AM
Active Discovery Targets - обязательный параметр или достаточно Address Filters?

Кстати, ни одного не достаточно. В обоих параметрах у меня 192.168.191.0/24, Filter / Custom script для фильтрации выглядит так:


trace(0, "New node address = " . $1->ipAddr);
return false;


В логе:

Dec 20 13:16:17 monitor netxmsd[11538]: New node address = 10.11.80.71


Предполагать, что Filter выполняется раньше, чем Active Discovery Targets и Address Filters, вроде глупо - или это так? Я могу, наверное, и в скрипте фильтровать по сети/диапазону - но зачем тогда нужны Active Discovery Targets и Address Filters? Мне бы хотелось, чтобы не интересующие меня сети вообще не опрашивались - это можно сделать?
Title: Re: Active Discovery bugs
Post by: kozlov_ao on December 20, 2013, 11:27:47 AM
Обязательный Target, Filter - не обязательный...

Фильтруй так:
Title: Re: Active Discovery bugs
Post by: enp on December 20, 2013, 12:43:48 PM
Все правильно, в документации http://wiki.netxms.org/wiki/UM:Network_Discovery написано:

Quote"Address Filters" Section

In this section you can define address ranges for automatically generated discovery filter. This list has no effect if discovery is off or filter is not set to "Automatically generated script".

Т.е. без галочки "Accept node if it is within given range or subnet" писать что-либо в Address Filters нет никакого смысла.

Active Discovery Targets нужен только для активного опроса с помощью ICMP. Соответственно, ноды из других подсетей я вижу благодаря обязательным "ARP and routing information". Не помешал бы, кстати, вариант "Active only".

С учетом необходимости добавления новых нод в специально выделенный для этих целей контейнер мне, видимо, нужен такой Filter / Custom script:


if (AddrInSubnet($1->ipAddr, "192.168.191.0", "255.255.255.0")) {
BindObject(FindObject("Discovered"), $node);
return true;
} else {
return false;
}
Title: Re: Active Discovery bugs
Post by: kozlov_ao on December 20, 2013, 12:52:59 PM
Я показал как сделано у меня... как сделаете Вы - решать вам.
У меня ноды разных типов раскидываются по разным контейнерам.
Title: Re: Active Discovery bugs
Post by: enp on December 21, 2013, 12:20:35 PM
Quote from: enp on December 20, 2013, 12:43:48 PM
С учетом необходимости добавления новых нод в специально выделенный для этих целей контейнер мне, видимо, нужен такой Filter / Custom script:


if (AddrInSubnet($1->ipAddr, "192.168.191.0", "255.255.255.0")) {
BindObject(FindObject("Discovered"), $1);
return true;
} else {
return false;
}


Нет, не работает - Function or operation argument is not an object на строчке с BindObject. Подозрение на то, что в $1 попадает экземпляр NewNode, а ожидается Node или NetObj. Можно ли преобразовать NewNode в Node или при выполнении скрипта Node еще не существует и задача нерешаемая?

Можно, конечно, сделать иначе: периодически выбирать ноды без контейнеров и их уже складывать в контейнер через Java API - но эта идея мне совсем не нравится.
Title: Re: Active Discovery bugs
Post by: enp on December 21, 2013, 01:18:13 PM
Я попробовал зайти еще с одной стороны и написал такой скрипт в Automatic Bind Rules для контейнера Discovered:

parents = GetNodeParents($node);

foreach(p : parents)
trace(1, "Parent object: name='" . p->name . "' id=" . p->id);

if (p == null)
return true;
else
return false;


Еще не успело ничего найтись, как в этот контейнер были добавлена куча нод, принадлежащая другим контейнерам. Т.е. функция GetNodeParents для них вернула null. Что же тогда понимается под родителями нод и есть ли способ узнать, принадлежит ли нода какому-либо контейнеру?
Title: Re: Active Discovery bugs
Post by: Victor Kirhenshtein on December 28, 2013, 05:25:28 PM
Проверьте что CheckTrustedNodes в настройках сервера выставлен в 0.
Title: Re: Active Discovery bugs
Post by: enp on December 30, 2013, 12:08:26 PM
Quote from: Victor Kirhenshtein on December 28, 2013, 05:25:28 PM
Проверьте что CheckTrustedNodes в настройках сервера выставлен в 0.
CheckTrustedNodes

Нет, как раз CheckTrustedNodes = 1. Спасибо, при следующих попытках попробую поменять.