Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - SKYnv

#181
Общие вопросы / Re: вопросик.
September 11, 2012, 05:12:04 AM
Quote from: Victor Kirhenshtein on September 10, 2012, 11:44:05 PM
Сделал. Если в Script Library есть скрипт с названием Hook::ConfigurationPoll, то он запускается для каждой ноды в коне полла.
спасибо.
#182
Общие вопросы / Re: Баги 1.2.3-rc4
September 10, 2012, 07:28:32 PM
бесконечный цикл рушит сервер. Хотя в некоторых нет. Посмотрю еще.

udp1
итак в общем пока такой порядок.

1)nxadm -i
2) exec infiniteLoopScript
3) ctrl+c чтобы оборвать в консоли выполнение
4) ну а дальше открываем любой скрипт крупный в библиотеке, закрываем его, Webui Предложит сохранить, сохраняем.
5) сервер упал.

udp2
хм во всех падючих скриптах присутствовал "i--"

udp3
Угу

for (i=20; i!=0; i--)
{
println(i);
if (i==100) break;
}


вот такой лог выполнения
Quote
netxmsd: exec test
20
21
22
...
99
100
INFO: Script finished with rc=0
баг или я от бессонной ночи что-то упускаю опять?
#183
Общие вопросы / Re: скрипт.
September 10, 2012, 04:43:35 PM
Quote from: Victor Kirhenshtein on September 10, 2012, 03:16:37 PM
Это оказался забавный баг в парсере - он "i-1" воспринимает как два токена, а не три: идентификатор i и константу "-1". Если после - поставить пробел, то все будет работать как надо. Я добавлю в багтрекер, но исправлю уже только в 1.2.4 - 1.2.3 уже запакована.
ну воооот ) а я часок потратил на перебор всех возможных вариантов ) даже вон типы провепил на всяк случай ))
спасибо )
#184
Общие вопросы / скрипт.
September 10, 2012, 03:06:07 PM
писал сейчас скриптик в котором нужно будет нужный оид найти обрезать не нужно и как-то обозвать и чтобы не городить множество Substr решил сделать процедурку.

sub exchar(str,len)
{
i= length(str)-len;

println(typeof(length(str)). " value->".length(str));
println(typeof(len). " value->".len);
println(typeof(i). " value->".i);
test=i-1;

return substr(str,len,i);

}


ошибка в строке test=i-1; и вообще любая попытка что-то сделать с данным значением приводит к ошибке.

в логе пишеться следующее, не пойму, что не так?
Quote[10-Sep-2012 18:00:24] Error compiling library script TestSNMP (ID: 10012): syntax error, unexpected T_INT32
#185
Общие вопросы / Re: Баги 1.2.3-rc4
September 10, 2012, 09:13:26 AM
если в скрипте допустить некоторые ошибки, например забыть закрыть строку ";" или обрамить String кавычками
то в nxadm exec будет выводиться сообщение "script not found", а не собственно ошибка.
#186
Quote from: Victor Kirhenshtein on September 08, 2012, 01:50:06 PM
Это уже можно делать. Для экспорта: Tools -> Export configuration. Для импорта: Tools -> Import Configuration. И есть топик в форуме, где можно делится своими шаблонами: https://www.netxms.org/forum/general-support/sharing-standard-templates-for-netxms/.

ну тогда собственно дело за малым, нужно сделать что-то типа import manager И включать в стандартную поставку наряду с мибами проверенные темплтейты. И например сделать во автоматический импорт тимплтейта в раздел тимплтейты если в корневом дереве присутствуют устройства для которых этот тимлтейт собственно написан.
#187
Quote from: user318 on September 08, 2012, 03:38:07 PM
Quoteну я же подробно написал для вас, и вернуть null имхо некорректно. на графике будет провал.
Ну и пусть будет. Ведь мы получили некорректное значение и в этом его смысл и есть. :)
Ну в смысле тут зависит от предпочтений - как мы потом этими значениями будем пользоваться. Но мне кажется, что менять неправильные значения на похожие на правильные всё же может выйти боком.

ну как вариант делать в скрипте trace(1, "incorrect value ".$1) чтобы знать об этом, а график отображать нормально. Некорректное значение может быть много с чем связано, причем вероятность того что проблемы в железе имхо очень низкая.
#188
Quote from: user318 on September 08, 2012, 01:23:30 PM
Да, понятно, что трансформацией можно купировать. Я так пока и делаю. При переполнении или сбросе счётчиков тоже скачки происходят и там такое делал уже. Но как-то надо это исправить, наверное.

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

Quoteскрипт простенький
У меня проще:
Quotesub main()
{
    if ($1 > 1000000000000)
        return NULL;
    else
        return $1;
}
:)

ну я же подробно написал для вас, и вернуть null имхо некорректно. на графике будет провал.
#189
Quote from: user318 on September 07, 2012, 07:37:43 PM
У меня такая же фигня сейчас на нескольких серверах.
Версия агента 1.2.2, ядро 3.4.5-hardened, Gentoo.
была уже не одна тема про пики, потом попробую поискать если напимните как вариант решения предлагаю это

http://wiki.netxms.org/wiki/NXSL_Function_Reference#Data_Collection

в скрипте сравниваете с максимально возможно границей, если больше то заменяете значение на
GetMaxDCIValue

скрипт простенький

sub main()
{
   ErrValue = 100000000;
   if $1 > ErrValue
    return  GetMaxDCIValue($node, FindDCIByName($node, "DCI: System.CPU.Usage.IoWait"), 0, time());
    trace(1, "Processor max load ". value . "%");
}


Честно говоря не знаю можно ли использовать $DCI заместо FindDCIByName($node, "DCI: System.CPU.Usage.IoWait") чтобы сократить запись, это нужно у Виктора спрашивать. Ну в принципе и все наверно )
#190
Неплохо бы улучшить функциональность темплтейтов. Добавить возможность экспотра в xml, добавить возможность импорта с xml. Тогда netxms можно будет поставлять с темлтейтами созданными сообществом. Вообще на сообщество всегда полезно некоторые функции перекладывать )). Это во-первых ускорит и облегчит внедрение netxms как с нуля, так и интеграцию нового оборудования в уже существующую сеть.

что именно должно быть в Xml?

1) конечно же object oid к кому применим тимлтейт
2) собственно dci и настройки для них
3) transformation scripts для нужных dci

Вроде ничего не забыл, остальное обычно индивидуально.
#191
Общие вопросы / Re: Баги 1.2.3-rc4
September 07, 2012, 07:33:29 PM
WebUI алярмы не копируются в буфер.

еще (решено, проблемы была в конфликте ip адресов и netxms таким образом реагировал на это)
несколько нод словили странный глюк. У них мак адрес меняется на минут 20, потом возвращается обратно, в ялярм логе висят сообщении смены мака туда сюда постоянно.

#192
Общие вопросы / вопросик.
September 07, 2012, 07:27:21 PM
есть ли евент который сработает на ноду после завершения конфигурейшн пола, чтобы повесить на него скрипт сбора дополнительных данных и корректного переименования?
Если нет то можно к 1.2.3 добавить ) ну очень нужно )
спасибо.
#193
Quote from: user318 on September 07, 2012, 06:54:09 PM
Было бы хорошо, если бы EternalParameter учитывали код возврата. И если он не 0, то считалось, что параметр не удалось прочитать. А то сейчас вроде если скритп возвращает пустую сточку, например, то в консоли я вижу, что пришёл какой-то мусор. А хотелось бы иметь возможность из скрипта "сообщать" о сбое при опросе параметра.
internal

eternal эт о вечность ))

ну так вы проверяйте значение которое приходит на null "" или " "

вот не далее как сегодня писал скрипт

sub main()
{
    transport = CreateSNMPTransport($node);
      if (transport == null)
         return -1;
           
       oid_loc = ".1.3.6.1.2.1.1.6.0";  // location
       oid_uptime = ".1.3.6.1.2.1.1.3.0";  // uptime
       oid_name = ".1.3.6.1.2.1.1.5.0";  // sysname

         location = SNMPGetValue(transport, oid_loc);
         sysname = SNMPGetValue(transport, oid_name);
         uptime = SNMPGetValue(transport, oid_uptime);

           if (location != null && location !="" && location!=" ")
            {
               RenameObject($node, location);
            //   trace(1 ,"Object renamed to ".location);
            }
            else
             {
               RenameObject($node, $node->ipAddr);
             }

            if (sysname != null && sysname !="" && sysname !=" ")
             {
               SetCustomAttribute($node, "sysname", sysname);
           //    trace(1 ,"Set custom attribute sysname to ".sysname);
             }

             if (uptime != null)
              {
               SetCustomAttribute($node, "uptime", SecondsToUptime(uptime/100));
           //    trace(1 ,"Set custom attribute uptime ".SecondsToUptime(uptime/100));
              }


который не работал как нужно без нескольких доработок
во-первых проверки (sysname != null && sysname !="" && sysname !=" ")
хоть по стандарту там и нультерминальная строка, на практике там может быть хрен знает что, но данная проверка позволила избавиться от всех ошибок что возникали.
и во-вторых SecondsToUptime(uptime/100), так-как было лень писать процедеру для перевода тиков в аптайм взял готовую для секунд и зделал тики секундуми )
#194
Общие вопросы / Re: Object node
September 06, 2012, 04:35:07 PM
Quote from: djaksons on September 06, 2012, 03:22:37 PM
Никто не подскажет почему после авто добавления объекта он не попал в нужную подсеть?



Удаляю а они снова в корень добавляются, можно ли их как-нибудь переместить в нужную подсеть.
Видимо вы тоже словили этот https://www.radensolutions.com/chiliproject/issues/45. Я пока на время исключил данные адреса из autidiscovery фильтром и добавляю вручную.
#195
Общие вопросы / Re: Вопрос по DCI
September 05, 2012, 09:00:59 PM
Quote from: inspirit on September 05, 2012, 08:37:59 PM
У меня при выполнении данного скрипта пишет

ERROR: Script finished with error: Error 14 in line 10: Function or operation argument is not an object.

Что за.. ошибся где ?

Это значит что где-то с аргументами ошибся
для отлаки можешь return'ов понаткать в коде или println