Автоматический сбор данных с сенсоров Cisco.
-
Понадобилось иметь информацию об оптических модулях установленных в коммутатор. В процессе разбирательств образовался алгоритм позволяющий собирать все данные со всех сенсоров устройства, что в последствии оказалось весьма удобным. Возможно кому-то будет интересно...
Попутный вопрос: Подскажите, как менять имя инстанции в процессе работы фильтра Instance Discovery. [SOLVED]
Понадобятся данные из 4-х SNMP OID-ов:
.1.3.6.1.4.1.9.9.91.1.1.1.1.4 - значение сенсоров
.1.3.6.1.2.1.47.1.1.1.1.7 - имена физических устройств.
.1.3.6.1.4.1.9.9.91.1.1.1.1.1 - тип физического устройства, если у OID-а есть значение, то это сенсор. По цифре значения определяется единица измерения (Volts,Ampers,Watts...)
.1.3.6.1.4.1.9.9.91.1.1.1.1.3 - точность сенсоров (количество знаков после запятой)Создаем Template, в нем DCI со следующими параметрами:
Description = {instance-name}
Paramater = .1.3.6.1.4.1.9.9.91.1.1.1.1.4.{instance}
Origin = SNMP, Data type = Floating Point NumberВ Instance Discovery определяем инстанции:
Instance discovery method = SNMP Walk - OIDs
Base SNMP OID = 1.3.6.1.2.1.47.1.1.1.1.7Нужно разрешать только сенсоры имеющие единицы измерений, поэтому на Instance Discovery ставится фильтр:
transport = CreateSNMPTransport($node); SensorType = SNMPGetValue(transport, ".1.3.6.1.4.1.9.9.91.1.1.1.1.1.".$1); if (typeof(SensorType) == "null") { return false; } return true;Для правильного вывода данных нужно установить "запятую" на место:
sub_oid = right($dci->name,4); transport = CreateSNMPTransport($node); prec = SNMPGetValue(transport, ".1.3.6.1.4.1.9.9.91.1.1.1.1.3.".sub_oid); if (prec == 1) { return $1/10; } if (prec == 2) { return $1/100; } if (prec == 3) { return $1/1000; } return $1;Темплейт можно автоматом привязывать к узлу. Automatic Apply Rules = return $node->sysDescription like "Cisco *";
Для полного счастья не мешало бы добавлять в имя инстанции единицы измерения, из .1.3.6.1.4.1.9.9.91.1.1.1.1.1
Но сделать это у меня не получается, видимо чего-то недопонимаю...Решение в посте ниже.



-
"А ларчик просто открывался"...
И.А. КрыловСкрипт Instance Discovery:
transport = CreateSNMPTransport($node); SensorType = SNMPGetValue(transport, ".1.3.6.1.4.1.9.9.91.1.1.1.1.1.".$1); if (typeof(SensorType) == "null") { return false; } switch (SensorType) { case "1": MU = "other"; break; case "2": MU = "unknown"; break; case "3": MU = ", VAC"; break; case "4": MU = ", VDC"; break; case "5": MU = ", mA"; break; case "6": MU = ", W"; break; case "7": MU = ", Hz"; break; case "8": MU = ", ˚C"; break; case "9": MU = ", %RH"; break; case "10": MU = ", RPM"; break; case "11": MU = ", CMM"; break; case "14": MU = ", dBm"; break; } return %(true,$1,$2.MU);Пропущены значения 12 (truthvalue) и 13 (specialEnum), чего с ними делать пока не решил

Картинка с результатом прилагается.

-
А сделайте экспорт шаблона - мы бы его добавили как стандартный.
-
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