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"?
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/
я поднимал этот вопрос там.
Спасибо. Эту ветку я находил и читал.
Почему такое случается понял.
Не понял как мне написать transformation script, чтоб работало.
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
но у меня там вылезла другая проблема, возможно конечно что дело в другом, но пока она актуальна. Отрицательных значений нет.
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 бита, то при проходе счетчика через ноль как раз такой эффект и будет.
Я собираю .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?
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/ ждем патча.
Quote from: SKYnv on March 29, 2012, 07:32:50 AM
решение по данной проблеме было вчера найдено предложено в теме https://www.netxms.org/forum/oe-oo/eee-to-transformation-script/ ждем патча.
Видел.
Там предлагается два варианта. Игнорировать или менять местами последнее с предпоследним.
В обоих случаях потеря данных.
А мне хочется восстановить данные из другого счетчика.
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 вариант о двух действиях.
чтобы данные восстановить, они должны где-то быть. Обычно после рестарта все обнуляется.
Quote from: SKYnv on March 29, 2012, 10:03:31 AM
это 1 вариант о двух действиях.
чтобы данные восстановить, они должны где-то быть. Обычно после рестарта все обнуляется.
Да я собственно прошу помощи в написании скрипта.
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;
}
}
Quote from: SKYnv on March 29, 2012, 01:14:28 PM
могу предложить их просто занулять или менять на любое другое число...
sub main()
{
if $1 > value then
{
return 0;
}
}
А данные из другого счетчика взять нельзя?
Quote from: Akira on March 29, 2012, 04:35:59 PM
А данные из другого счетчика взять нельзя?
sub main()
{
if $1 > value then
{
return GetDCIValue($node, FindDCIByDescription($node, "DCI description"));
}
}наверно так...
Так. Ближе. А как взять сумму последних 60 значений? Я что-то в документации не нашел.
Quote from: Akira on March 30, 2012, 10:40:45 AM
Так. Ближе. А как взять сумму последних 60 значений? Я что-то в документации не нашел.
Если вы собираете статистику каждый час, то есть за час то это как бы и есть сумма всех значений, делим на 60 получаем среднее за минуту...
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.
думаю никак.
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.