Отрицатильные значения с сетевых интерфейсов

Started by Akira, March 27, 2012, 08:29:36 AM

Previous topic - Next topic

Akira

28-Dec-2011 11:59:01   503850560
28-Dec-2011 10:59:01   795522378
28-Dec-2011 09:59:00   598589222
28-Dec-2011 08:59:00   9223372036854775807
28-Dec-2011 07:59:00   273392862
28-Dec-2011 06:59:00   163655688
28-Dec-2011 05:59:01   43122668
28-Dec-2011 04:59:01   86841056

Я так понимаю, происходит это когда предыдущее значение было больше, чем текущее.

Как можно сделать, чтобы при такой ситуации, просто считалось, что предыдущее значение = "0"?

SKYnv

Quote from: Akira on March 27, 2012, 08:29:36 AM
28-Dec-2011 11:59:01   503850560
28-Dec-2011 10:59:01   795522378
28-Dec-2011 09:59:00   598589222
28-Dec-2011 08:59:00   9223372036854775807
28-Dec-2011 07:59:00   273392862
28-Dec-2011 06:59:00   163655688
28-Dec-2011 05:59:01   43122668
28-Dec-2011 04:59:01   86841056

Я так понимаю, происходит это когда предыдущее значение было больше, чем текущее.

Как можно сделать, чтобы при такой ситуации, просто считалось, что предыдущее значение = "0"?
https://www.netxms.org/forum/oe-oo/eee-to-transformation-script/
я поднимал этот вопрос там.

Akira

Спасибо. Эту ветку я находил и читал.
Почему такое случается понял.
Не понял как мне написать transformation script, чтоб работало.

SKYnv

Quote from: Akira on March 27, 2012, 10:33:05 AM
Спасибо. Эту ветку я находил и читал.
Почему такое случается понял.
Не понял как мне написать transformation script, чтоб работало.


Я использую такой
sub main()
{
return ((uint64($1)*8)/(1 << 20));
}

это для перевода в МегаБиты.
собираю параметр .1.3.6.1.2.1.31.1.1.1.6 тип uint64

но у меня там вылезла другая проблема, возможно конечно что дело в другом, но пока она актуальна. Отрицательных значений нет.

Victor Kirhenshtein

Quote from: Akira on March 27, 2012, 08:29:36 AM
28-Dec-2011 11:59:01   503850560
28-Dec-2011 10:59:01   795522378
28-Dec-2011 09:59:00   598589222
28-Dec-2011 08:59:00   9223372036854775807
28-Dec-2011 07:59:00   273392862
28-Dec-2011 06:59:00   163655688
28-Dec-2011 05:59:01   43122668
28-Dec-2011 04:59:01   86841056

Я так понимаю, происходит это когда предыдущее значение было больше, чем текущее.

Как можно сделать, чтобы при такой ситуации, просто считалось, что предыдущее значение = "0"?

Само по себе новое значение меньше предыдущего проблем вызывать не должно. Еcли параметр определен как unsigned и размер правильный, то все будет в порядке. Проблема может быть в несовпадении размера данных в DCI и на ноде - если реально данные 32 бита, а DCI определен как 64 бита, то при проходе счетчика через ноль как раз такой эффект и будет.

Akira

Я собираю .1.3.6.1.2.1.31.1.1.1.6 и значение DCI Unsigned Int64
И все-равно бывает. При рестарте оборудования, например.

Можете помочь с Transformation Script?

Задача:
Каждый час собирается дельта на интерфейсе DCI - id 4366.
На том же интерфейсе собирается каждую минуту "average per second" - id 4364.

Как должен выглядить скрипт, чтобы если последнее значение счетчика 4366 получается 9223372036854775807, большое вобщем,
то можно было бы взять данные за 60 минут со счетчика 4364 по формуле (сумма значений счетчика 4364 за последние 60 минут)*60 и грубо восстановить значение счетчика 4366?

SKYnv

Quote from: Akira on March 29, 2012, 07:09:09 AM
Я собираю .1.3.6.1.2.1.31.1.1.1.6 и значение DCI Unsigned Int64
И все-равно бывает. При рестарте оборудования, например.

Можете помочь с Transformation Script?

Задача:
Каждый час собирается дельта на интерфейсе DCI - id 4366.
На том же интерфейсе собирается каждую минуту "average per second" - id 4364.

Как должен выглядить скрипт, чтобы если последнее значение счетчика 4366 получается 9223372036854775807, большое вобщем,
то можно было бы взять данные за 60 минут со счетчика 4364 по формуле (сумма значений счетчика 4364 за последние 60 минут)*60 и грубо восстановить значение счетчика 4366?

решение по данной проблеме было вчера найдено предложено в теме https://www.netxms.org/forum/oe-oo/eee-to-transformation-script/ ждем патча.

Akira

Quote from: SKYnv on March 29, 2012, 07:32:50 AM
решение по данной проблеме было вчера найдено предложено в теме https://www.netxms.org/forum/oe-oo/eee-to-transformation-script/ ждем патча.

Видел.
Там предлагается два варианта. Игнорировать или менять местами последнее с предпоследним.
В обоих случаях потеря данных.

А мне хочется восстановить данные из другого счетчика.

SKYnv

Quote from: Akira on March 29, 2012, 08:36:15 AM
Quote from: SKYnv on March 29, 2012, 07:32:50 AM
решение по данной проблеме было вчера найдено предложено в теме https://www.netxms.org/forum/oe-oo/eee-to-transformation-script/ ждем патча.

Видел.
Там предлагается два варианта. Игнорировать или менять местами последнее с предпоследним.
В обоих случаях потеря данных.

А мне хочется восстановить данные из другого счетчика.
это 1 вариант о двух действиях.

чтобы данные восстановить, они должны где-то быть. Обычно после рестарта все обнуляется.

Akira

Quote from: SKYnv on March 29, 2012, 10:03:31 AM
это 1 вариант о двух действиях.

чтобы данные восстановить, они должны где-то быть. Обычно после рестарта все обнуляется.

Да я собственно прошу помощи в написании скрипта.

SKYnv

Quote from: Akira on March 29, 2012, 10:24:21 AM
Quote from: SKYnv on March 29, 2012, 10:03:31 AM
это 1 вариант о двух действиях.

чтобы данные восстановить, они должны где-то быть. Обычно после рестарта все обнуляется.

Да я собственно прошу помощи в написании скрипта.
могу предложить их просто  занулять или менять на любое другое число...

sub main()
{
if $1 > value then
{
return 0;
}
}

Akira

Quote from: SKYnv on March 29, 2012, 01:14:28 PM
могу предложить их просто  занулять или менять на любое другое число...

sub main()
{
if $1 > value then
{
return 0;
}
}


А данные из другого счетчика взять нельзя?

SKYnv

Quote from: Akira on March 29, 2012, 04:35:59 PM


А данные из другого счетчика взять нельзя?



sub main()
{
if $1 > value then
{
return GetDCIValue($node, FindDCIByDescription($node, "DCI description"));
}
}


наверно так...

Akira

Так. Ближе. А как взять сумму последних 60 значений? Я что-то в документации не нашел.

SKYnv

Quote from: Akira on March 30, 2012, 10:40:45 AM
Так. Ближе. А как взять сумму последних 60 значений? Я что-то в документации не нашел.
Если вы собираете статистику каждый час, то есть за час то это как бы и есть сумма всех значений, делим на 60 получаем среднее за минуту...