NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: Akira on August 17, 2015, 09:38:05 AM

Title: Как можно при отсутствии данных со счетчика, записать свое значение?
Post by: Akira on August 17, 2015, 09:38:05 AM
Есть счетчик. Пишет каждую минуту.
При перезагрузке устройства, не делать пропуск в несколько минут в базе данных, а писать "0".
Это для примера. Может и не "0", а что-то свое.
Title: Re: Как можно при отсутствии данных со счетчика, записать свое значение?
Post by: Victor Kirhenshtein on August 17, 2015, 11:38:05 PM
Можно сделать script DCI, который будет делать сбор данных и подставлять константу в случае ошибки. Для SNMP может выглядеть например так:


snmp = CreateSNMPTransport($node);
if (snmp == null)
   return -1; // error indicator
v = SNMPGet(snmp, ".1.3.6.1.2.1.1.1.0");  // actual OID can be read from script parameter
if (v == null)
   return -1; // error indicator
return v->value;

Title: Re: Как можно при отсутствии данных со счетчика, записать свое значение?
Post by: Akira on August 18, 2015, 08:18:49 AM
А для обычного DCI, не SNMP?
Можно transformation script?
Title: Re: Как можно при отсутствии данных со счетчика, записать свое значение?
Post by: Victor Kirhenshtein on August 18, 2015, 09:24:26 AM
transformation script не подходит, он не вызовется если входных данных нет. Для агентских DCI подход тот-же, только заменить SNMPGet на AgentReadParameter. В будущем можно пожалуй добавить опцию в DCI для вызова transformation script в случае ошибки с $1 выставленным в null скажем - это упростит настройку множества таких параметров.