NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: Akira on March 27, 2012, 08:29:36 AM

Title: Отрицатильные значения с сетевых интерфейсов
Post by: 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"?
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: SKYnv on March 27, 2012, 10:11:23 AM
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/
я поднимал этот вопрос там.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: Akira on March 27, 2012, 10:33:05 AM
Спасибо. Эту ветку я находил и читал.
Почему такое случается понял.
Не понял как мне написать transformation script, чтоб работало.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: SKYnv on March 27, 2012, 02:17:53 PM
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

но у меня там вылезла другая проблема, возможно конечно что дело в другом, но пока она актуальна. Отрицательных значений нет.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: Victor Kirhenshtein on March 28, 2012, 01:23:36 AM
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 бита, то при проходе счетчика через ноль как раз такой эффект и будет.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: 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?
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: SKYnv on March 29, 2012, 07:32:50 AM
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/ ждем патча.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: 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/ ждем патча.

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

А мне хочется восстановить данные из другого счетчика.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: SKYnv on March 29, 2012, 10:03:31 AM
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 вариант о двух действиях.

чтобы данные восстановить, они должны где-то быть. Обычно после рестарта все обнуляется.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: Akira on March 29, 2012, 10:24:21 AM
Quote from: SKYnv on March 29, 2012, 10:03:31 AM
это 1 вариант о двух действиях.

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

Да я собственно прошу помощи в написании скрипта.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: SKYnv on March 29, 2012, 01:14:28 PM
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;
}
}
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: Akira on March 29, 2012, 04:35:59 PM
Quote from: SKYnv on March 29, 2012, 01:14:28 PM
могу предложить их просто  занулять или менять на любое другое число...

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


А данные из другого счетчика взять нельзя?
Title: Re: Отрицатильные значения с сетевых интерф&#
Post by: SKYnv on March 29, 2012, 04:56:50 PM
Quote from: Akira on March 29, 2012, 04:35:59 PM


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



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


наверно так...
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: Akira on March 30, 2012, 10:40:45 AM
Так. Ближе. А как взять сумму последних 60 значений? Я что-то в документации не нашел.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: SKYnv on March 30, 2012, 01:20:20 PM
Quote from: Akira on March 30, 2012, 10:40:45 AM
Так. Ближе. А как взять сумму последних 60 значений? Я что-то в документации не нашел.
Если вы собираете статистику каждый час, то есть за час то это как бы и есть сумма всех значений, делим на 60 получаем среднее за минуту...
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: Akira on April 01, 2012, 01:12:11 PM
Quote from: SKYnv on March 30, 2012, 01:20:20 PM
Quote from: Akira on March 30, 2012, 10:40:45 AM
Так. Ближе. А как взять сумму последних 60 значений? Я что-то в документации не нашел.
Если вы собираете статистику каждый час, то есть за час то это как бы и есть сумма всех значений, делим на 60 получаем среднее за минуту...

Вы не поняли проблему
У меня есть счетчик 1 - тупо дельта каждый час, но иногда глюкавое отрицательное значение.
У есть счетчик 2 - каждую минуту, средняя в секунду.

Я хочу при сбойном значении счеткика 1, восстановить из счетчика 2 значение, воспользовавшись данными за прошедший час.
Сейчас я это делаю скриптом в SQL, а хочу сразу в NetXMS.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: SKYnv on April 01, 2012, 07:57:52 PM
думаю никак.
Title: Re: Отрицатильные значения с сетевых интерфейсов
Post by: Victor Kirhenshtein on April 01, 2012, 08:04:15 PM
Quote from: Akira on April 01, 2012, 01:12:11 PM
Quote from: SKYnv on March 30, 2012, 01:20:20 PM
Quote from: Akira on March 30, 2012, 10:40:45 AM
Так. Ближе. А как взять сумму последних 60 значений? Я что-то в документации не нашел.
Если вы собираете статистику каждый час, то есть за час то это как бы и есть сумма всех значений, делим на 60 получаем среднее за минуту...

Вы не поняли проблему
У меня есть счетчик 1 - тупо дельта каждый час, но иногда глюкавое отрицательное значение.
У есть счетчик 2 - каждую минуту, средняя в секунду.

Я хочу при сбойном значении счеткика 1, восстановить из счетчика 2 значение, воспользовавшись данными за прошедший час.
Сейчас я это делаю скриптом в SQL, а хочу сразу в NetXMS.

Da, skriptami takoe sdelat' nel'zja. Mne nravitsja ideja, ja dobavlju funkcii dostupa k iztoricheskim dannim DCI iz skriptov.