Значение одного параметра поделить на значение другого параметра

Started by parovoZZ, April 14, 2015, 02:16:57 PM

Previous topic - Next topic

parovoZZ

Всем привет!
Есть IP камера. Камера отдаёт uptime и количество IP пакетов. Как теперь поделить последнее на первое с целью получения текущей скорости пересылки пакетов?

Alex Kirhenshtein

добавить transformation script по примеру такого:
return $1 / GetDCIValueByName($node, "System.CPU.Count");

$1 - текущее значение DCI, "System.CPU.Count" в этом примере – имя второго DCI, надо заменить на нужное.


parovoZZ

Как я понял, GetDCIValueByName должен ссылаться на параметр из DataCollection? Т.е. если этого параметра в этом списке нет, то идёт ошибка - Value is NULL.

Ещё вопрос - где можно посмотреть значения $1...$9 и всех прочие функции?

kozlov_ao

Quoteдолжен ссылаться на параметр из DataCollection
Да, именно так.

QuoteТ.е. если этого параметра в этом списке нет
А зачем дергать данные из параметра, которого нет??

Quoteгде можно посмотреть значения
За ХЗ сколько лет работы с NX, пользовался только $1... а вообще, описание макросов есть тут: https://wiki.netxms.org/wiki/UM:Event_Processing#Macros_for_Event_Processing

parovoZZ

Почему параметра нет? Он есть. Но только не в DataCollection)))

Тогда такой вопрос - в DataCollection все значения собираются в разное время. А как бы их синхронизировать? К примеру, в проце 12 ядер. Мы получаем все значения в разное время, а для вычисления средней загрузки процессора лучше их получить с минимальным разбросом по времени.

kozlov_ao

QuoteНо только не в DataCollection
а где? :) приведенное Алексом выражение ищет данные в пределах ноды.

QuoteА как бы их синхронизировать?
вроде никак.. ну либо подгонять по времени )) Есть же параметр, который вычисляет среднюю загрузку проца по всем ядрам сразу.

Alex Kirhenshtein

На мой взгляд, если надо подгонять по секундам – то что-то не так в постановке задачи,  её надо как-то иначе решать.

Примерно подогнать можно при помощи custom schedule c правилом "* * * * *", запросы будут шедулиться раз в минуту, в 00 секунд. Но это не гарантирует, что их соберут именно в это время.

kozlov_ao


Alex Kirhenshtein

Можно еще сделать scripted DCI с кодом типа val1=AgentReadParameter($node, "Sample.DCI(1)");
val2=AgentReadParameter($node, "Sample.DCI(2)");
...

parovoZZ

Quote from: kozlov_ao on April 18, 2015, 09:49:10 AM
Есть же параметр, который вычисляет среднюю загрузку проца по всем ядрам сразу.

Ну вот на каких-то машинах он доступен, на каких-то нет. Параметр System.CPU.Usage5. Если его добавить вручную, то получаю Unsupported...

Alex Kirhenshtein

Какая операционная система?

Quote from: parovoZZ on April 20, 2015, 11:32:42 AM
Ну вот на каких-то машинах он доступен, на каких-то нет. Параметр System.CPU.Usage5. Если его добавить вручную, то получаю Unsupported...


kozlov_ao

Не... нужна ОС машин, на которые есть параметр и на которых нет...

parovoZZ

Абсолютно такая же ось...

У меня ещё вопрос.
Нельзя ли в сообщение события вставить значение параметра SNMP? Т.е. %2 - это ссылка на Description, а нельзя ли в само поле Description вставить ссылку на параметр?