Как можно при отсутствии данных со счетчика, записать свое значение?

Started by Akira, August 17, 2015, 09:38:05 AM

Previous topic - Next topic

Akira

Есть счетчик. Пишет каждую минуту.
При перезагрузке устройства, не делать пропуск в несколько минут в базе данных, а писать "0".
Это для примера. Может и не "0", а что-то свое.

Victor Kirhenshtein

Можно сделать 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;


Akira


Victor Kirhenshtein

transformation script не подходит, он не вызовется если входных данных нет. Для агентских DCI подход тот-же, только заменить SNMPGet на AgentReadParameter. В будущем можно пожалуй добавить опцию в DCI для вызова transformation script в случае ошибки с $1 выставленным в null скажем - это упростит настройку множества таких параметров.