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 - glebofff

#1
Ну тут всё просто. Надо понять netxms, прежде, чем что-то от него хотеть. В который раз уж пишу. :-)
#2
I wonder is there any reasons left to use snmp transport in such cases. We can get all interesting information from $node object and its child interfaces:


i = GetInterfaceObject($node, $1);
if (i != null && i->adminState == 1)
{
  return %(true, $1, i->name);
}
return false;
#3
Общие вопросы / Re: Network Maps и status
January 16, 2015, 06:02:12 AM
Это ещё какое решение, просто вам надо бы поглубже посмотреть в сторону nxsl, посоны.

http://wiki.netxms.org/wiki/NXSL:Interface

У объекта Interface появилось свойство alias, есть name, появились незадокументированные методы setStatusPropagation / setStatusCalculation.

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

Тут есть SetInterfaceExpectedState, ManageObject, UnmanageObject.

Cначала прикинем типовой сценарий: вот если это маршрутизатор Cisco, а интерфейс Tu* или Fa*, то этот интерфейс мне не особо критичен, если это Di*, Nu0, Lo* - то вообще игнорим, а вот Gi* мне очень интересны.

Осталось - написать скрипт, который, в зависимости от ваших предпочтений, сделает интерфейсу i:
  - если совсем не интересует - UnmanageObject (i),
  - если интересует, но не совсем - SetInterfaceExpectedState (i, "IGNORE"),
  - если интересует - i->setStatusPropagation (4,1,2,3,3),
  - если интересует очень - оставит всё по-умолчанию.


if (i->node->sysDescription ~= "^Cisco")
{
  if (i->name ~= "^Nu|^Di|^Lo")
  {
    UnmanageObject (i);
  } else  if (i->name ~= "^Fa|^Tu")
  {
    i->setStatusPropagation (4,1,2,3,3);
  } else  if (! i->name ~= "^Gi")
  {
    SetInterfaceExpectedState (i, "IGNORE");
  }
}


Можно без всей этой автоматизации, врукопашную. Но, если узлов тысячи, а тут у некоторых есть такие инсталляции, то придётся тяжко.

PS:

setStatusPropagation (4,1,2,3,3) соответствует картинке, которую я приаттачил.

#4
Сборка юникодовая зачем?
#5
Юникод принципиален, вы с китайцами, чтоль, работаете?
#6
У меня, после того, как поисчезало из дерева объектов всё то, что по-русски забивал, UNICODE сборка не прижилась. После перезапуска сервера пошла ругань на SQL запросы, и так далее.

Сейчас CP1251 + pgsql, и всё ок, но "осадочек" остался. Надо бы ещё потерзать UNICODE, но времени паталогически не хватает.
#7
Общие вопросы / Re: stack chart
December 29, 2013, 11:19:41 AM
О, это было бы неплохо, а то мы тут уже кучу эклипсов перебрали.

Может, в раздел downloads оба? У меня на стационаре Win64, на буке Lin64. :-)
#8
Общие вопросы / Re: stack chart
December 27, 2013, 04:47:07 AM
Пока второй день дрючу ковыряю Eclipse. После Idea жутковато. Хотя бы запустить консоль уже было бы достижением, потому что с зависимостями я там потерялся совсем.
#9
Общие вопросы / Re: stack chart
December 27, 2013, 04:28:49 AM
Я выбираю 1, т.к. было бы интересно посмотреть на костыль. Создавать на каждый DCI свой dummy, суммирующий предыдущие, а потом эти Dummy вывалить на график?

По второму пункту. Что именно подсказывает? Про rrd и min/avg/max разговоры идут давно. Самим пора делать. :-)
#10
Приветики. Продублирую здесь:

1. Нужен push в nxsl, сейчас работает через action / nxapush (за появление -o в котором отдельное спасибо)
https://www.netxms.org/forum/feature-requests/nxsl-improvements/

2. Cisco-related просьба. Хотелось бы надеяться на появление атрибута ifAlias в объекте Interface. UseInterfaceAliases приводит, если честно, к бардаку, как в картах, так и дереве объектов. Сейчас использую Custom Attributes, вызов из хука:


sub ifUpdateAlias(root)
{
transport = CreateSNMPTransport(root);
if (transport == null)
{
println "Failed to create SNMP transport, exit";
}

foreach(o : GetObjectChildren(root))
{
if (classof(o) == "Interface")
{
index = o->ifIndex;
value = SNMPGetValue(transport, "1.3.6.1.2.1.31.1.1.1.18." . index);
if (value != null)
{
   SetCustomAttribute (o, "ifAlias", value);
}
}
}
}


3. Чтение / запись Comments, Status Calculation из nxsl.

4. https://www.netxms.org/forum/oe-oo/filtering-script-for-rule-in-event-processing-policy/msg12217/#msg12217
QuoteКогда-то раньше main() был обязателен, теперь уже нет. Но старая форма все равно поддерживается.

Было бы неплохо, если бы main() вызывался при включении скрипта директивой use.
#11
У меня такое было, когда я удалял "левые" клоны узлов, появившиеся в результате network discovery. Т.е. оставишь одну нужную ноду, и появляется "unknown". Лечилось перезапуском сервера.

Возможно, сислоги действительно приходят с другого IP, неизвестного NetXMS. У меня перед NetXMS прослойка из rsyslog, который раскладывает логи по каталогам с IP-адресом устройства.
#12
nxevent + trace - куда прямее?
#13
enp, настоятельно рекомендую уже быстрее проникнуться концепцией NetXMS.

Передать $event из командной строки нельзя, но можно сгенерировать событие (из скрипта - PostEvent, из командной строки - утилитой nxevent), на которое среагирует обработчик, в котором есть фильтрующий скрипт.

Создай тестовый объект, тестовое событие, тестовый обработчик, и т.д.
#14
Общие вопросы / Re: nxpush vs nxapush
December 19, 2013, 10:30:11 AM
Плюс - очень острой стала необходимость в push непосредственно из nxsl, как это обсуждалось в https://www.netxms.org/forum/feature-requests/nxsl-improvements/
#15
Общие вопросы / Re: nxpush vs nxapush
December 16, 2013, 11:49:57 AM
А у меня немного другое затруднение. Хотелось бы иметь возможность в nxevent указать объект не только по его ID, но и как в nxpush - по системному имени, IP, dns.