NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: parovoZZ on April 14, 2015, 02:16:57 PM

Title: Значение одного параметра поделить на значение другого параметра
Post by: parovoZZ on April 14, 2015, 02:16:57 PM
Всем привет!
Есть IP камера. Камера отдаёт uptime и количество IP пакетов. Как теперь поделить последнее на первое с целью получения текущей скорости пересылки пакетов?
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: Alex Kirhenshtein on April 14, 2015, 03:43:04 PM
добавить transformation script по примеру такого:
return $1 / GetDCIValueByName($node, "System.CPU.Count");

$1 - текущее значение DCI, "System.CPU.Count" в этом примере – имя второго DCI, надо заменить на нужное.
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: parovoZZ on April 17, 2015, 10:01:47 AM
Спасибо!
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: parovoZZ on April 17, 2015, 11:44:29 PM
Как я понял, GetDCIValueByName должен ссылаться на параметр из DataCollection? Т.е. если этого параметра в этом списке нет, то идёт ошибка - Value is NULL.

Ещё вопрос - где можно посмотреть значения $1...$9 и всех прочие функции?
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: kozlov_ao on April 18, 2015, 12:34:09 AM
Quoteдолжен ссылаться на параметр из DataCollection
Да, именно так.

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

Quoteгде можно посмотреть значения
За ХЗ сколько лет работы с NX, пользовался только $1... а вообще, описание макросов есть тут: https://wiki.netxms.org/wiki/UM:Event_Processing#Macros_for_Event_Processing
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: parovoZZ on April 18, 2015, 01:11:36 AM
Почему параметра нет? Он есть. Но только не в DataCollection)))

Тогда такой вопрос - в DataCollection все значения собираются в разное время. А как бы их синхронизировать? К примеру, в проце 12 ядер. Мы получаем все значения в разное время, а для вычисления средней загрузки процессора лучше их получить с минимальным разбросом по времени.
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: kozlov_ao on April 18, 2015, 09:49:10 AM
QuoteНо только не в DataCollection
а где? :) приведенное Алексом выражение ищет данные в пределах ноды.

QuoteА как бы их синхронизировать?
вроде никак.. ну либо подгонять по времени )) Есть же параметр, который вычисляет среднюю загрузку проца по всем ядрам сразу.
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: Alex Kirhenshtein on April 18, 2015, 10:35:40 PM
На мой взгляд, если надо подгонять по секундам – то что-то не так в постановке задачи,  её надо как-то иначе решать.

Примерно подогнать можно при помощи custom schedule c правилом "* * * * *", запросы будут шедулиться раз в минуту, в 00 секунд. Но это не гарантирует, что их соберут именно в это время.
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: kozlov_ao on April 19, 2015, 12:24:20 AM
Дак в том то и дело...
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: Alex Kirhenshtein on April 19, 2015, 01:16:44 AM
Можно еще сделать scripted DCI с кодом типа val1=AgentReadParameter($node, "Sample.DCI(1)");
val2=AgentReadParameter($node, "Sample.DCI(2)");
...
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: parovoZZ on April 20, 2015, 11:32:42 AM
Quote from: kozlov_ao on April 18, 2015, 09:49:10 AM
Есть же параметр, который вычисляет среднюю загрузку проца по всем ядрам сразу.

Ну вот на каких-то машинах он доступен, на каких-то нет. Параметр System.CPU.Usage5. Если его добавить вручную, то получаю Unsupported...
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: Alex Kirhenshtein on April 20, 2015, 12:39:41 PM
Какая операционная система?

Quote from: parovoZZ on April 20, 2015, 11:32:42 AM
Ну вот на каких-то машинах он доступен, на каких-то нет. Параметр System.CPU.Usage5. Если его добавить вручную, то получаю Unsupported...
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: parovoZZ on April 20, 2015, 02:07:20 PM
Windows Server 2008 Build 6001 Service Pack 1 Intel IA-32
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: kozlov_ao on April 20, 2015, 02:14:07 PM
Не... нужна ОС машин, на которые есть параметр и на которых нет...
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: parovoZZ on April 20, 2015, 02:29:02 PM
Абсолютно такая же ось...

У меня ещё вопрос.
Нельзя ли в сообщение события вставить значение параметра SNMP? Т.е. %2 - это ссылка на Description, а нельзя ли в само поле Description вставить ссылку на параметр?
Title: Re: Значение одного параметра поделить на значение другого параметра
Post by: kozlov_ao on April 20, 2015, 02:44:10 PM
Ниче не понял :)
Вот, смотри что тебе нужно:
   %1 - Parameter name
   %2 - Item description
   %3 - Data collection item ID
   %4 - Instance
   %5 - Threshold value
   %6 - Actual value