Как правильно создать шаблон
-
Бьюсь, не могу разобраться, как правильно создать шаблон с Instance Dicsovery.
Например, мне нужно снимать сигнал/шум для некоторых интерфейсов по условию:
Для всех интерфейсов, у которых ifTable.ifEntry.ifType = 129 нужно создавать DCI SNMP OID .1.3.6.1.2.1.10.127.1.1.4.1.5.<ID>, где <ID> - id интерфейса.
В Data Parametr я ввожу .1.3.6.1.2.1.10.127.1.1.4.1.5.{instance}, в Instance Dicsovery добавляю в поле Base SNMP OID .1.3.6.1.2.1.2.2.1.3 (ifTable.ifEntry.ifType), ставлю метод SNMP Walk - OIDs. Как теперь правильно создать filter script?
-
Покопался в примерах, сделал такое:
SNMP Walk - OID
Base SNMP OID = .1.3.6.1.2.1.2.2.1.1transport = CreateSNMPTransport($node); if (transport == null) return false; x = SNMPGet(transport, ".1.3.6.1.2.1.2.2.1.3." . $1); if (x == null) return false; if (x->value == "129") return true; return false;Работает!
Есть вопрос. Каким способом в Description добавлять имя интерфейса? Сейчас Description = SignalToNoise {instance}, что неинформативно.
-
Из фильтра можно возвращать измененый instance и instance name. Можно попробовать такой скрипт:
transport = CreateSNMPTransport($node); if (transport == null) return false; type = SNMPGet(transport, ".1.3.6.1.2.1.2.2.1.3." . $1); if (type == null) return false; if (type->value != 129) return false; name = SNMPGetValue(transport, ".1.3.6.1.2.1.2.2.1.2." . $1); // ifDescr if (name == null) name = $1; // use interface index as fallback return %(true, $1, name);и в параметре использовать {instance-name} там где надо подставить имя интерфейса.
-
https://www.netxms.org/forum/configuration/interface-names-in-instance-discovery/msg15724/#msg15724
Тут советуют следующее - зачем запрашивать по SNMP лишнюю информацию, если она есть в самой системе. Окончательный вариант:transport = CreateSNMPTransport($node); if (transport == null) return false; x = SNMPGet(transport, ".1.3.6.1.2.1.2.2.1.3." . $1); if (x == null) return false; if (x->value != 129) return false; i = GetInterfaceObject($node, $1); if (i != null && i->adminState == 1) { return %(true, $1, i->name); } return false;Спасибо за помощь, всё работает как надо!
-
Логично на самом деле. Тип тоже можно ведь достать из объекта интерфейса - поле ifType.
-
-
После обновления до версии 2.0-RC1 шаблон перестал работать, видит только первый интерфейс, а остальные пропали.
Видимо это та же проблема:
https://www.netxms.org/forum/announcements/netxms-2-0-rc1-released/msg17520/#msg175202.0-RC2 - исправлено
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login