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. Support (Russian)
  3. Как правильно создать шаблон

Как правильно создать шаблон

Scheduled Pinned Locked Moved Support (Russian)
7 Posts 2 Posters 7.9k 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.
  • H
    H
    Harun
    wrote on last edited by
    #1

    Бьюсь, не могу разобраться, как правильно создать шаблон с 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?

    1 Reply Last reply
    0
    • H
      H
      Harun
      wrote on last edited by
      #2

      Покопался в примерах, сделал такое:

      SNMP Walk - OID
      Base SNMP OID = .1.3.6.1.2.1.2.2.1.1

      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 true;
      return false;
      

      Работает!

      Есть вопрос. Каким способом в Description добавлять имя интерфейса? Сейчас Description = SignalToNoise {instance}, что неинформативно.

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

        Из фильтра можно возвращать измененый 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} там где надо подставить имя интерфейса.

        1 Reply Last reply
        0
        • H
          H
          Harun
          wrote on last edited by
          #4

          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;
          

          Спасибо за помощь, всё работает как надо!

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

            Логично на самом деле. Тип тоже можно ведь достать из объекта интерфейса - поле ifType.

            1 Reply Last reply
            0
            • H
              H
              Harun
              wrote on last edited by
              #6

              Тогда всё значительно упрощается

              i = GetInterfaceObject($node, $1);
              if ( i != null && i->adminState == 1 && i->ifType == 129)
              {
                return %(true, $1, i->name);
              }
              return false;
              
              1 Reply Last reply
              0
              • H
                H
                Harun
                wrote on last edited by
                #7

                После обновления до версии 2.0-RC1 шаблон перестал работать, видит только первый интерфейс, а остальные пропали.
                Видимо это та же проблема:
                https://www.netxms.org/forum/announcements/netxms-2-0-rc1-released/msg17520/#msg17520

                2.0-RC2 - исправлено

                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