Мониторинг APC
-
-
@comfortal said in Мониторинг APC:
И еще вопрос как можно сменить отображение имени ноды в Entire Network, на ip адрес, по умолчанию он показывает SNMP sysName, причем не у всех свитчей, и у меня в списке есть 40 свитчей с названием H3C, так же это доставляет не удобство при поиске по мак адресу, пишет H3C порт такой то?
Присоединяюсь, вопрос актуальный.
-
-
@sergey_t said in Мониторинг APC:
ошибку выдает

посмотрите пож повнимательнеедобавляю в скрипт указанные строки, скрипт компилируется и в логах вижу ошибку:
"Script (Hook::ConfigurationPoll) execution error: Error 30 in line 8: Unknown object's method"8 строка это именно первая строка скрипта
-
@sergey_t said in Мониторинг APC:
@sergey_t said in Мониторинг APC:
ошибку выдает

посмотрите пож повнимательнеедобавляю в скрипт указанные строки, скрипт компилируется и в логах вижу ошибку:
"Script (Hook::ConfigurationPoll) execution error: Error 30 in line 8: Unknown object's method"8 строка это именно первая строка скрипта
Вот https://prnt.sc/217j1mu скрин скрипта, у меня работает, название объектов брал отсюда https://www.netxms.org/documentation/nxsl-latest/#class-netobj
-
-
-
С какой-то из недавних версий configuration poll появился не только на нодах, но еще как минимум на кластерах. Поэтому, если такие объекты в системе есть, то скрипт будет на них тоже запускаться и расстраиваться что там нет каких-то вещей, которые есть на нодах. Попробуйте так:
if (classof($object) == "Node") { $object->enableEtherNetIP(false); $object->enableAgent(false); } -
@filipp-sudanov said in Мониторинг APC:
С какой-то из недавних версий configuration poll появился не только на нодах, но еще как минимум на кластерах. Поэтому, если такие объекты в системе есть, то скрипт будет на них тоже запускаться и расстраиваться что там нет каких-то вещей, которые есть на нодах. Попробуйте так:
if (classof($object) == "Node") { $object->enableEtherNetIP(false); $object->enableAgent(false); }Прописал именно так, ошибки больше нет
-
-
Это тоже можно сделать в configuration poll - вот например для нод с определенным SNMP Object ID:
if (classof($object) == "Node" and $node->snmpOID == ".1.3.6.1.4.1.14988.1") $node->rename($node->ipAddr); -
@filipp-sudanov said in Мониторинг APC:
Это тоже можно сделать в configuration poll - вот например для нод с определенным SNMP Object ID:
if (classof($object) == "Node" and $node->snmpOID == ".1.3.6.1.4.1.14988.1") $node->rename($node->ipAddr);Спасибо, помогло
-
Получилось вот так:
if (classof($object) == "Node" and capabilities == "0x00000001")
{
$object->enableEtherNetIP(false);
$object->enableAgent(false);
$node->rename($node->ipAddr);
$node->setAlias($node->snmpSysName);
}
/* Для принтеров Kyocera установить alias из SysLocation */
if (classof($object) == "Node" and $node->snmpOID == ".1.3.6.1.4.1.1347.41") $node->setAlias($node->snmpSysLocation);Появились еще вопросы:
- Правильно я понял, что указывая capabilities == "0x00000001" скрипт будет выбирать устройства только с SNMP?
- Как там же получить значение oid=.1.3.6.1.4.1.318.1.1.1.1.1.2.0 и вставить его в алиас, просто в ИПБ APC у нас не везде используется SysLocation
-
В capabilites кроме младшего бита, который isSNMP могут быть взведены еще какие-то биты. Поэтому лучше проверять накладывая битовую маску бинарным and:
if ($node->capabilities & 0x00000001)Пример чтения значения по SNMP есть тут: https://www.netxms.org/documentation/nxsl-latest/#_read_snmp_value_from_node
-
-
Для дебага эту строчку можно переписать так:
trace(0, "$1: " . $1)
o = FindObject($1);
trace(0, "Found object: " . o->name);
transport = o->createSNMPTransport();здесь мы сначала проверим, что в $1 есть название или ID объекта а потом проверим, что FindObject действительно смог найти объект. А $1 вообще откуда в вашем скрипте должне был присвоен? Если это configuration poll, то там выставляются $node и $object и надо так:
transport = $node->createSNMPTransport();
-
Спасибо, сделал так:
transport = $node->createSNMPTransport();
if (transport == null)
{
println "Failed to create SNMP transport, exit";
return 1;
}value = SNMPGetValue(transport, ".1.3.6.1.4.1.318.1.1.1.1.1.2.0");
if (value == null)
{
println "Failed to issue SNMP GET request";
return 2;
}
else
{
$node->setAlias(value);
return 0;
}
И получил то что мне нужно, просто в программировании несилен и просто скопировал строчки из предложенного примера, а $1 оказывается пусто
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login