Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

  1. Home
  2. Feature Requests
  3. Автоматический сбор данных с сенсоров Cisco.

Автоматический сбор данных с сенсоров Cisco.

Scheduled Pinned Locked Moved Feature Requests
russian
4 Posts 2 Posters 62.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T
    T
    token
    wrote on last edited by
    #1

    Понадобилось иметь информацию об оптических модулях установленных в коммутатор. В процессе разбирательств образовался алгоритм позволяющий собирать все данные со всех сенсоров устройства, что в последствии оказалось весьма удобным. Возможно кому-то будет интересно...

    Попутный вопрос: Подскажите, как менять имя инстанции в процессе работы фильтра 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 Но сделать это у меня не получается, видимо чего-то недопонимаю... Решение в посте ниже.


    CSen_General.png

    CSen_Instance.png

    CSen_Transfom.png

    1 Reply Last reply
    0
    • T
      T
      token
      wrote on last edited by
      #2

      "А ларчик просто открывался"... © И.А. Крылов

      Скрипт 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), чего с ними делать пока не решил 🙂

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


      CSen_result.png

      1 Reply Last reply
      0
      • V
        V
        Victor Kirhenshtein
        wrote on last edited by
        #3

        А сделайте экспорт шаблона - мы бы его добавили как стандартный.

        1 Reply Last reply
        0
        • T
          T
          token
          wrote on last edited by
          #4

          Пропустил сообщение про экспорт шаблона.

          Экспортированный тепмлейт.


          CSensors.xml

          1 Reply Last reply
          0

          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
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          • Login

          • Don't have an account? Register

          • Login or register to search.
          Powered by NodeBB Contributors
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups