NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: comfortal on November 18, 2021, 02:17:45 PM

Title: Мониторинг APC
Post by: comfortal on November 18, 2021, 02:17:45 PM
Скажите почему система может не считывать данные с UPS APC, из 15 установленных устройств определилось только одно, с остальных данные не получаются. Так же у них есть разница в SNMP Object ID, у работающего SNMP Object ID=.1.3.6.1.4.1.318.1.3.2.7, а у не рабочих SNMP Object ID=.1.3.6.1.4.1.318.1.3.2.9.

И еще вопрос как можно сменить отображение имени ноды в Entire Network, на ip адрес, по умолчанию он показывает SNMP sysName, причем не у всех свитчей, и у меня в списке есть 40 свитчей с названием H3C, так же это доставляет не удобство при поиске по мак адресу, пишет H3C порт такой то?
Title: Re: Мониторинг APC
Post by: comfortal on November 26, 2021, 02:15:31 PM
Разобрался с APC, в исправил автоматические применяемые правила, добавил в поиск по snmpOID строчку, "|| ( $node->snmpOID == ".1.3.6.1.4.1.318.1.3.2.9" )", шаблон применился к проблемным UPS.

Остался вопрос по множественному редактированию параметров, как все-таки изменить "Имя объекта" на IP?

Может кому понадобиться, для массового отключения опроса по NetXMS agent и EtherNet/IP нужно, в скрипт Hook::ConfigurationPoll, из Библиотеки скриптов, вставить строчки:
$object->enableEtherNetIP(false);
$object->enableAgent(false);
Title: Re: Мониторинг APC
Post by: sergey_t on November 29, 2021, 10:39:06 AM
ошибку выдает :(
посмотрите пож повнимательнее
Title: Re: Мониторинг APC
Post by: МшлМшл on November 30, 2021, 04:03:23 PM
Quote from: sergey_t on November 29, 2021, 10:39:06 AM
ошибку выдает :(
посмотрите пож повнимательнее

У меня нормально скомпилировался скрипт.
Title: Re: Мониторинг APC
Post by: МшлМшл on November 30, 2021, 04:16:56 PM
Quote from: comfortal on November 18, 2021, 02:17:45 PM
И еще вопрос как можно сменить отображение имени ноды в Entire Network, на ip адрес, по умолчанию он показывает SNMP sysName, причем не у всех свитчей, и у меня в списке есть 40 свитчей с названием H3C, так же это доставляет не удобство при поиске по мак адресу, пишет H3C порт такой то?
Присоединяюсь, вопрос актуальный.
Title: Re: Мониторинг APC
Post by: comfortal on November 30, 2021, 04:57:39 PM
Quote from: sergey_t on November 29, 2021, 10:39:06 AM
ошибку выдает :(
посмотрите пож повнимательнее

Ошибку где и какую?
Title: Re: Мониторинг APC
Post by: sergey_t on December 01, 2021, 08:32:52 AM
Quote from: sergey_t on November 29, 2021, 10:39:06 AM
ошибку выдает :(
посмотрите пож повнимательнее

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

8 строка это именно первая строка скрипта
Title: Re: Мониторинг APC
Post by: comfortal on December 01, 2021, 09:18:39 AM
Quote from: sergey_t on December 01, 2021, 08:32:52 AM
Quote from: sergey_t on November 29, 2021, 10:39:06 AM
ошибку выдает :(
посмотрите пож повнимательнее

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

8 строка это именно первая строка скрипта

Вот https://prnt.sc/217j1mu (https://prnt.sc/217j1mu) скрин скрипта, у меня работает, название объектов брал отсюда https://www.netxms.org/documentation/nxsl-latest/#class-netobj (https://www.netxms.org/documentation/nxsl-latest/#class-netobj)
Title: Re: Мониторинг APC
Post by: sergey_t on December 01, 2021, 11:08:41 AM
очередной раз, скопировал - вставил, скомпилировал и все, ошибки нет !
Title: Re: Мониторинг APC
Post by: sergey_t on December 01, 2021, 12:59:20 PM
не, опять вылезла :(
Title: Re: Мониторинг APC
Post by: Filipp Sudanov on December 03, 2021, 06:18:49 PM
С какой-то из недавних версий configuration poll появился не только на нодах, но еще как минимум на кластерах. Поэтому, если такие объекты в системе есть, то скрипт будет на них тоже запускаться и расстраиваться что там нет каких-то вещей, которые есть на нодах. Попробуйте так:

if (classof($object) == "Node")
{
  $object->enableEtherNetIP(false);
  $object->enableAgent(false);
}
Title: Re: Мониторинг APC
Post by: sergey_t on December 06, 2021, 09:52:05 AM
Quote from: Filipp Sudanov on December 03, 2021, 06:18:49 PM
С какой-то из недавних версий configuration poll появился не только на нодах, но еще как минимум на кластерах. Поэтому, если такие объекты в системе есть, то скрипт будет на них тоже запускаться и расстраиваться что там нет каких-то вещей, которые есть на нодах. Попробуйте так:

if (classof($object) == "Node")
{
  $object->enableEtherNetIP(false);
  $object->enableAgent(false);
}



Прописал именно так, ошибки больше нет
Title: Re: Мониторинг APC
Post by: comfortal on December 07, 2021, 02:34:53 PM
Остался еще вопрос по поводу множественного редактирования, как изменить название ноды на IP, если нод с одинаковым именем более 100?
Title: Re: Мониторинг APC
Post by: Filipp Sudanov on December 07, 2021, 05:04:24 PM
Это тоже можно сделать в configuration poll - вот например для нод с определенным SNMP Object ID:
if (classof($object) == "Node" and $node->snmpOID == ".1.3.6.1.4.1.14988.1") $node->rename($node->ipAddr);
Title: Re: Мониторинг APC
Post by: comfortal on December 09, 2021, 04:14:53 PM
Quote from: Filipp Sudanov on December 07, 2021, 05:04:24 PM
Это тоже можно сделать в configuration poll - вот например для нод с определенным SNMP Object ID:
if (classof($object) == "Node" and $node->snmpOID == ".1.3.6.1.4.1.14988.1") $node->rename($node->ipAddr);

Спасибо, помогло
Title: Re: Мониторинг APC
Post by: comfortal on December 10, 2021, 02:50:12 PM
Получилось вот так:

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);

Появились еще вопросы:
Title: Re: Мониторинг APC
Post by: Filipp Sudanov on December 10, 2021, 04:45:51 PM
В capabilites кроме младшего бита, который isSNMP могут быть взведены еще какие-то биты. Поэтому лучше проверять накладывая битовую маску бинарным and:
if ($node->capabilities & 0x00000001)

Пример чтения значения по SNMP есть тут: https://www.netxms.org/documentation/nxsl-latest/#_read_snmp_value_from_node


Title: Re: Мониторинг APC
Post by: comfortal on December 20, 2021, 03:20:08 PM
Почему то у меня ошибка в строке: transport = FindObject($1)->createSNMPTransport();

Error 14 in line 40: Function or operation argument is not an object
Title: Re: Мониторинг APC
Post by: Filipp Sudanov on December 25, 2021, 11:49:44 AM
Для дебага эту строчку можно переписать так:

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();
Title: Re: Мониторинг APC
Post by: comfortal on December 25, 2021, 06:42:04 PM
Спасибо, сделал так:

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 оказывается пусто