Ad Widget

Collapse

Разные SNMPINDEX в запросах. Сопоставление. Шаблон Huawei VRP Switch

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • DimOriN
    Junior Member
    • Apr 2024
    • 15

    #1

    Разные SNMPINDEX в запросах. Сопоставление. Шаблон Huawei VRP Switch


    Добрый день.

    Есть необходимость отслеживать ACCESS порты на коммутаторах. Пока-что просто добавить ACCESS VLANID в название интерфейса (ITEM'a). А так же открыт любым предложениям и лучшим практикам на фильтрацию триггеров по ACCESS VLANID, по изменению на порту ACCESS VLANID и другие, связанные с этим параметром идеи.

    Имеется Netwrok Interface Discovery
    Code:
    discovery[{#IFOPERSTATUS},1.3.6.1.2.1.2.2.1.8,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7,{#IFALIAS},1.3.6.1.2.1.31.1.1.1.18,{#IFNAME},1.3.6.1.2.1.31.1.1.1.1,{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFTYPE},1.3.6.1.2.1.2.2.1.3]
    При исполнении получаю такой вывод:
    Code:
    [
    {"{#SNMPINDEX}":"1","{#IFOPERSTATUS}":"1","{#IFADM INSTATUS}":"1","{#IFALIAS}":"","{#IFNAME}":"InLoop Back0","{#IFDESCR}":"InLoopBack0","{#IFTYPE}":"24" },
    {"{#SNMPINDEX}":"2","{#IFOPERSTATUS}":"1","{#IFADM INSTATUS}":"1","{#IFALIAS}":"","{#IFNAME}":"NULL0" ,"{#IFDESCR}":"NULL0","{#IFTYPE}":"1"},
    {"{#SNMPINDEX}":"3","{#IFOPERSTATUS}":"1","{#IFADM INSTATUS}":"1","{#IFALIAS}":"","{#IFNAME}":"Consol e9/0/0","{#IFDESCR}":"Console9/0/0","{#IFTYPE}":"1"},
    {"{#SNMPINDEX}":"5","{#IFOPERSTATUS}":"2","{#IFADM INSTATUS}":"1","{#IFALIAS}":"","{#IFNAME}":"Vlanif 1","{#IFDESCR}":"Vlanif1","{#IFTYPE}":"53"},
    {"{#SNMPINDEX}":"6","{#IFOPERSTATUS}":"2","{#IFADM INSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAME }":"GigabitEthernet0/0/1","{#IFDESCR}":"GigabitEthernet0/0/1","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"7","{#IFOPERSTATUS}":"2","{#IFADM INSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAME }":"GigabitEthernet0/0/2","{#IFDESCR}":"GigabitEthernet0/0/2","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"8","{#IFOPERSTATUS}":"1","{#IFADM INSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAME }":"GigabitEthernet0/0/3","{#IFDESCR}":"GigabitEthernet0/0/3","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"9","{#IFOPERSTATUS}":"2","{#IFADM INSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAME }":"GigabitEthernet0/0/4","{#IFDESCR}":"GigabitEthernet0/0/4","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"10","{#IFOPERSTATUS}":"1","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/5","{#IFDESCR}":"GigabitEthernet0/0/5","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"11","{#IFOPERSTATUS}":"2","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/6","{#IFDESCR}":"GigabitEthernet0/0/6","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"12","{#IFOPERSTATUS}":"1","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/7","{#IFDESCR}":"GigabitEthernet0/0/7","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"13","{#IFOPERSTATUS}":"2","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/8","{#IFDESCR}":"GigabitEthernet0/0/8","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"14","{#IFOPERSTATUS}":"2","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"","{#IFNAME}":"Gigab itEthernet0/0/9","{#IFDESCR}":"GigabitEthernet0/0/9","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"15","{#IFOPERSTATUS}":"2","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/10","{#IFDESCR}":"GigabitEthernet0/0/10","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"16","{#IFOPERSTATUS}":"2","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/11","{#IFDESCR}":"GigabitEthernet0/0/11","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"17","{#IFOPERSTATUS}":"1","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/12","{#IFDESCR}":"GigabitEthernet0/0/12","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"18","{#IFOPERSTATUS}":"1","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/13","{#IFDESCR}":"GigabitEthernet0/0/13","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"19","{#IFOPERSTATUS}":"2","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"","{#IFNAME}":"Gigab itEthernet0/0/14","{#IFDESCR}":"GigabitEthernet0/0/14","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"20","{#IFOPERSTATUS}":"2","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/15","{#IFDESCR}":"GigabitEthernet0/0/15","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"21","{#IFOPERSTATUS}":"2","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"","{#IFNAME}":"Gigab itEthernet0/0/16","{#IFDESCR}":"GigabitEthernet0/0/16","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"22","{#IFOPERSTATUS}":"2","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/17","{#IFDESCR}":"GigabitEthernet0/0/17","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"23","{#IFOPERSTATUS}":"1","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/18","{#IFDESCR}":"GigabitEthernet0/0/18","{#IFTYPE}":"6"},
    {"{#SNMPINDEX}":"24","{#IFOPERSTATUS}":"2","{#IFAD MINSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAM E}":"GigabitEthernet0/0/19","{#IFDESCR}":"GigabitEthernet0/0/19","{#IFTYPE}":"6"},
    ...
    ]
    Как видно в списке есть интерфейсы Loopback, Null, Console, VLAN'ов и т.д.
    Обращу внимание, что у физических портов имеется параметр {#IFTYPE}":"6"

    Есть замечательный OID в коммутаторах Huawei:
    Code:
    [root@zabbix ~]# snmpwalk -v2c -c xxx 192.168.0.1 1.3.6.1.2.1.17.7.1.4.5.1.1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.1 = Gauge32: 2036
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.2 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.3 = Gauge32: 2036
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.4 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.5 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.6 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.7 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.8 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.9 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.10 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.11 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.12 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.13 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.14 = Gauge32: 1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.15 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.16 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.17 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.18 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.19 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.20 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.21 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.22 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.23 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.24 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.25 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.26 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.27 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.28 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.29 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.30 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.31 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.32 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.33 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.34 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.35 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.36 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.37 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.38 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.39 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.40 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.41 = Gauge32: 1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.42 = Gauge32: 1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.43 = Gauge32: 1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.44 = Gauge32: 1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.45 = Gauge32: 1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.46 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.47 = Gauge32: 2048
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.48 = Gauge32: 1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.49 = Gauge32: 1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.50 = Gauge32: 1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.51 = Gauge32: 1
    SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.52 = Gauge32: 1
    SNMP-индексы соответствуют физическим портам, где 1-48 - GE0/0/1-GE0/0/48, а 49-52 - XGE0/0/1-X0/0/4
    Из этого вывода видно, какой access vlanid на портах соответственно.

    Вот собственно и проблема. У данных запросов разные SNMPINDEXы. Подскажите куда можно копнуть, чтобы сопоставить данные параметры, чтобы в конце концов собрался ITEM типа GigabitEthernet 0/0/1 (***CCTV*** VID: 2048) Link status ...
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Originally posted by DimOriN
    Как видно в списке есть интерфейсы Loopback, Null, Console, VLAN'ов и т.д.
    Обращу внимание, что у физических портов имеется параметр {#IFTYPE}":"6"
    Точнее говоря, "{#IFTYPE}":"6" означает, что тип интерфейса - ethernetCsmacd.
    На всякий случай, остальные типы:
    1 - other
    24 - softwareLoopback
    53 - propVirtual
    Originally posted by DimOriN
    SNMP-индексы соответствуют физическим портам, где 1-48 - GE0/0/1-GE0/0/48, а 49-52 - XGE0/0/1-X0/0/4
    А где видно, что 1-48 - это именно GE0/0/1-GE0/0/48, а не как-то иначе?
    Там рядом есть ещё одна таблица с их именами, идентичными {#IFNAME} или {#IFDESCR}?

    Comment

    • DimOriN
      Junior Member
      • Apr 2024
      • 15

      #3
      Originally posted by Kos
      Там рядом есть ещё одна таблица с их именами, идентичными {#IFNAME} или {#IFDESCR}?
      Это видно из конфигурации портов. Данная таблица полностью соответствует ACCESS VLANID, прописанными на портах. Рядом там ничего нет (просмотрел все на два OID уровня выше 1.3.6.1.2.1.17.7.1.4)

      Comment

      • DimOriN
        Junior Member
        • Apr 2024
        • 15

        #4
        Может быть есть пример шаблона где нечто подобное реализовано?

        Comment

        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #5
          Ну, моя мысль была такой.
          Чтобы реализовать ваши "хотелки", нужно, чтобы исходный JSON для автообнаружения имел бы LLD-макрос, содержащий идентификатор VLAN-а, т.е. что-то вроде следующего (см. окончания строк справа):
          Code:
          [
          {"{#SNMPINDEX}":"6","{#IFOPERSTATUS}":"2","{#IFADM INSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAME }":"GigabitEthernet0/0/1","{#IFDESCR}":"GigabitEthernet0/0/1","{#IFTYPE}":"6","{#VLAN}":"2036"},
          {"{#SNMPINDEX}":"7","{#IFOPERSTATUS}":"2","{#IFADM INSTATUS}":"1","{#IFALIAS}":"***User***","{#IFNAME }":"GigabitEthernet0/0/2","{#IFDESCR}":"GigabitEthernet0/0/2","{#IFTYPE}":"6","{#VLAN}":"2048"},
          ...
          ]
          Т.е. к тому JSON-у, который у вас есть уже (сгенерированному Zabbix-ом автоматически), добавить ещё одно поле.
          Теоретически, это можно сделать с помощью предобработки с типом JavaScript, написав такой скриптец, который на входе брал бы исходный JSON и что-то ещё, а на выходе давал бы JSON в нужном формате.
          Вопрос только, откуда этот скрипт будет брать недостающие данные и по какому алгоритму добавлять идентификаторы VLAN-ов, чтобы они попадали именно в нужные места, чтобы это происходило автоматически.
          В крайнем случае всегда остаётся возможность прописать это соответствие вручную с помощью какого-то пользовательского макроса, который использовать в JavaScript-е, но это как-то "не по джеждайски": нужно будет такой макрос с таблицей соответствия поддерживать вручную на каждом хосте, это чревато ошибками и т.п. Хотелось бы это как-то автоматизировать.
          Вот здесь, например, про OID 1.3.6.1.2.1.17.7.1.4.5.1 говорится следующее:
          Information controlling VLAN configuration for a port on the device. This is indexed by dot1dBasePort.
          Т.е. в этой таблице индексом является некий dot1dBasePort; осталось понять, что это такое и как его связать с индексами из первой таблицы.
          Last edited by Kos; 08-04-2024, 09:26.

          Comment

          • Kos
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • Aug 2015
            • 3404

            #6
            Похоже, что нужная таблица соответствий должна находиться, начиная с OID 1.3.6.1.2.1.17.1.4.1.2 (ссылка).
            Если это так, то тогда, теоретически, взяв исходный JSON и добавив к нему данные из таблиц с OID-ами 1.3.6.1.2.1.17.7.1.4.5.1.1 и 1.3.6.1.2.1.17.1.4.1.2, можно всё это объединить в одну таблицу, которую представить в виде JSON-а нужного формата. Осталось придумать, как это реализовать. Пока в голову приходит только идея использовать вычисляемый элемент данных (в котором с помощью предобработки и объединять значения трёх других элементов данных, содержащих нужные JSON-ы), но я не уверен, как это будет работать - я никогда не использовать вычисляемые элементы данных для обработки текстовых значений.
            Last edited by Kos; 09-04-2024, 14:23.

            Comment

            • DimOriN
              Junior Member
              • Apr 2024
              • 15

              #7
              Похоже, что нужная таблица соответствий должна находиться, начиная с OID 1.3.6.1.2.1.17.1.4.1.2
              Вы абсолютно правы. Вывод ниже:
              Code:
              SNMPv2-SMI::mib-2.17.1.4.1.2.1 = INTEGER: 8
              SNMPv2-SMI::mib-2.17.1.4.1.2.2 = INTEGER: 9
              SNMPv2-SMI::mib-2.17.1.4.1.2.3 = INTEGER: 10
              SNMPv2-SMI::mib-2.17.1.4.1.2.4 = INTEGER: 11
              SNMPv2-SMI::mib-2.17.1.4.1.2.5 = INTEGER: 12
              SNMPv2-SMI::mib-2.17.1.4.1.2.6 = INTEGER: 13
              SNMPv2-SMI::mib-2.17.1.4.1.2.7 = INTEGER: 14
              SNMPv2-SMI::mib-2.17.1.4.1.2.8 = INTEGER: 15
              SNMPv2-SMI::mib-2.17.1.4.1.2.9 = INTEGER: 16
              SNMPv2-SMI::mib-2.17.1.4.1.2.10 = INTEGER: 17
              SNMPv2-SMI::mib-2.17.1.4.1.2.11 = INTEGER: 18
              SNMPv2-SMI::mib-2.17.1.4.1.2.12 = INTEGER: 19
              SNMPv2-SMI::mib-2.17.1.4.1.2.13 = INTEGER: 20
              SNMPv2-SMI::mib-2.17.1.4.1.2.14 = INTEGER: 21
              SNMPv2-SMI::mib-2.17.1.4.1.2.15 = INTEGER: 22
              SNMPv2-SMI::mib-2.17.1.4.1.2.16 = INTEGER: 23
              SNMPv2-SMI::mib-2.17.1.4.1.2.17 = INTEGER: 24
              SNMPv2-SMI::mib-2.17.1.4.1.2.18 = INTEGER: 25
              SNMPv2-SMI::mib-2.17.1.4.1.2.19 = INTEGER: 26
              SNMPv2-SMI::mib-2.17.1.4.1.2.20 = INTEGER: 27
              SNMPv2-SMI::mib-2.17.1.4.1.2.21 = INTEGER: 28
              SNMPv2-SMI::mib-2.17.1.4.1.2.22 = INTEGER: 29
              SNMPv2-SMI::mib-2.17.1.4.1.2.23 = INTEGER: 30
              SNMPv2-SMI::mib-2.17.1.4.1.2.24 = INTEGER: 31
              SNMPv2-SMI::mib-2.17.1.4.1.2.25 = INTEGER: 32
              SNMPv2-SMI::mib-2.17.1.4.1.2.26 = INTEGER: 33
              SNMPv2-SMI::mib-2.17.1.4.1.2.27 = INTEGER: 34
              SNMPv2-SMI::mib-2.17.1.4.1.2.28 = INTEGER: 35
              SNMPv2-SMI::mib-2.17.1.4.1.2.29 = INTEGER: 36
              SNMPv2-SMI::mib-2.17.1.4.1.2.30 = INTEGER: 37
              SNMPv2-SMI::mib-2.17.1.4.1.2.31 = INTEGER: 38
              SNMPv2-SMI::mib-2.17.1.4.1.2.32 = INTEGER: 39
              SNMPv2-SMI::mib-2.17.1.4.1.2.33 = INTEGER: 40
              SNMPv2-SMI::mib-2.17.1.4.1.2.34 = INTEGER: 41
              SNMPv2-SMI::mib-2.17.1.4.1.2.35 = INTEGER: 42
              SNMPv2-SMI::mib-2.17.1.4.1.2.36 = INTEGER: 43
              SNMPv2-SMI::mib-2.17.1.4.1.2.37 = INTEGER: 44
              SNMPv2-SMI::mib-2.17.1.4.1.2.38 = INTEGER: 45
              SNMPv2-SMI::mib-2.17.1.4.1.2.39 = INTEGER: 46
              SNMPv2-SMI::mib-2.17.1.4.1.2.40 = INTEGER: 47
              SNMPv2-SMI::mib-2.17.1.4.1.2.41 = INTEGER: 48
              SNMPv2-SMI::mib-2.17.1.4.1.2.42 = INTEGER: 49
              SNMPv2-SMI::mib-2.17.1.4.1.2.43 = INTEGER: 50
              SNMPv2-SMI::mib-2.17.1.4.1.2.44 = INTEGER: 51
              SNMPv2-SMI::mib-2.17.1.4.1.2.45 = INTEGER: 52
              SNMPv2-SMI::mib-2.17.1.4.1.2.46 = INTEGER: 53
              SNMPv2-SMI::mib-2.17.1.4.1.2.47 = INTEGER: 54
              SNMPv2-SMI::mib-2.17.1.4.1.2.48 = INTEGER: 55
              SNMPv2-SMI::mib-2.17.1.4.1.2.49 = INTEGER: 56
              SNMPv2-SMI::mib-2.17.1.4.1.2.50 = INTEGER: 57
              SNMPv2-SMI::mib-2.17.1.4.1.2.51 = INTEGER: 58
              SNMPv2-SMI::mib-2.17.1.4.1.2.52 = INTEGER: 59
              Вывод с этого же коммутатора по OIDу из правила Discovery:
              Code:
              [root@утюбикс]# snmpwalk -v2c -c ххх 192.168.99.100 1.3.6.1.2.1.31.1.1.1.1
              IF-MIB::ifName.1 = STRING: InLoopBack0
              IF-MIB::ifName.2 = STRING: NULL0
              IF-MIB::ifName.3 = STRING: Console9/0/0
              IF-MIB::ifName.4 = STRING: MEth0/0/1
              IF-MIB::ifName.6 = STRING: Vlanif1
              IF-MIB::ifName.7 = STRING: Vlanif333
              IF-MIB::ifName.8 = STRING: GigabitEthernet0/0/1
              IF-MIB::ifName.9 = STRING: GigabitEthernet0/0/2
              IF-MIB::ifName.10 = STRING: GigabitEthernet0/0/3
              IF-MIB::ifName.11 = STRING: GigabitEthernet0/0/4
              IF-MIB::ifName.12 = STRING: GigabitEthernet0/0/5
              IF-MIB::ifName.13 = STRING: GigabitEthernet0/0/6
              IF-MIB::ifName.14 = STRING: GigabitEthernet0/0/7
              IF-MIB::ifName.15 = STRING: GigabitEthernet0/0/8
              IF-MIB::ifName.16 = STRING: GigabitEthernet0/0/9
              IF-MIB::ifName.17 = STRING: GigabitEthernet0/0/10
              IF-MIB::ifName.18 = STRING: GigabitEthernet0/0/11
              IF-MIB::ifName.19 = STRING: GigabitEthernet0/0/12
              IF-MIB::ifName.20 = STRING: GigabitEthernet0/0/13
              IF-MIB::ifName.21 = STRING: GigabitEthernet0/0/14
              IF-MIB::ifName.22 = STRING: GigabitEthernet0/0/15
              IF-MIB::ifName.23 = STRING: GigabitEthernet0/0/16
              IF-MIB::ifName.24 = STRING: GigabitEthernet0/0/17
              IF-MIB::ifName.25 = STRING: GigabitEthernet0/0/18
              IF-MIB::ifName.26 = STRING: GigabitEthernet0/0/19
              IF-MIB::ifName.27 = STRING: GigabitEthernet0/0/20
              IF-MIB::ifName.28 = STRING: GigabitEthernet0/0/21
              IF-MIB::ifName.29 = STRING: GigabitEthernet0/0/22
              IF-MIB::ifName.30 = STRING: GigabitEthernet0/0/23
              IF-MIB::ifName.31 = STRING: GigabitEthernet0/0/24
              IF-MIB::ifName.32 = STRING: GigabitEthernet0/0/25
              IF-MIB::ifName.33 = STRING: GigabitEthernet0/0/26
              IF-MIB::ifName.34 = STRING: GigabitEthernet0/0/27
              IF-MIB::ifName.35 = STRING: GigabitEthernet0/0/28
              IF-MIB::ifName.36 = STRING: GigabitEthernet0/0/29
              IF-MIB::ifName.37 = STRING: GigabitEthernet0/0/30
              IF-MIB::ifName.38 = STRING: GigabitEthernet0/0/31
              IF-MIB::ifName.39 = STRING: GigabitEthernet0/0/32
              IF-MIB::ifName.40 = STRING: GigabitEthernet0/0/33
              IF-MIB::ifName.41 = STRING: GigabitEthernet0/0/34
              IF-MIB::ifName.42 = STRING: GigabitEthernet0/0/35
              IF-MIB::ifName.43 = STRING: GigabitEthernet0/0/36
              IF-MIB::ifName.44 = STRING: GigabitEthernet0/0/37
              IF-MIB::ifName.45 = STRING: GigabitEthernet0/0/38
              IF-MIB::ifName.46 = STRING: GigabitEthernet0/0/39
              IF-MIB::ifName.47 = STRING: GigabitEthernet0/0/40
              IF-MIB::ifName.48 = STRING: GigabitEthernet0/0/41
              IF-MIB::ifName.49 = STRING: GigabitEthernet0/0/42
              IF-MIB::ifName.50 = STRING: GigabitEthernet0/0/43
              IF-MIB::ifName.51 = STRING: GigabitEthernet0/0/44
              IF-MIB::ifName.52 = STRING: GigabitEthernet0/0/45
              IF-MIB::ifName.53 = STRING: GigabitEthernet0/0/46
              IF-MIB::ifName.54 = STRING: GigabitEthernet0/0/47
              IF-MIB::ifName.55 = STRING: GigabitEthernet0/0/48
              IF-MIB::ifName.56 = STRING: XGigabitEthernet0/0/1
              IF-MIB::ifName.57 = STRING: XGigabitEthernet0/0/2
              IF-MIB::ifName.58 = STRING: XGigabitEthernet0/0/3
              IF-MIB::ifName.59 = STRING: XGigabitEthernet0/0/4

              Дело в том, что я не особо программист, но простенький скрипт могу накидать на любом языке вооружившись гуглом. Еще у меня нет базового представления как Zabbix движок со всем этим работает. Предобработка/Постобработка/Макоросы/фильры... я только вникаю. Постараюсь что нибудь смастерить с вашей помошью =) Связующая таблица уже получена, осталось её правильно подать.

              По идее мне не особо надо мониторить интерфейсы не IFTYPE=6. Я думаю можно отредактировать дисковер, где SNMPINDEXом будет значение из таблицы выше, по которым уже можно выбрать все необходимые данные.
              Last edited by DimOriN; 09-04-2024, 13:33.

              Comment

              • Kos
                Senior Member
                Zabbix Certified SpecialistZabbix Certified Professional
                • Aug 2015
                • 3404

                #8
                Originally posted by DimOriN
                Вы абсолютно правы. Вывод ниже:
                [...]
                Дело в том, что я не особо программист, но простенький скрипт могу накидать на любом языке вооружившись гуглом. Еще у меня нет базового представления как Zabbix движок со всем этим работает. Предобработка/Постобработка/Макоросы/фильры... я только вникаю. Постараюсь что нибудь смастерить с вашей помошью =) Связующая таблица уже получена, осталось её правильно подать.

                По идее мне не особо надо мониторить интерфейсы не IFTYPE=6. Я думаю можно отредактировать дисковер, где SNMPINDEXом будет значение из таблицы выше, по которым уже можно выбрать все необходимые данные.
                О, отлично.
                Я, в свою очередь, на версии 6.0.28 проверил: вычисляемые элементы данных вполне корректно работают и с текстом тоже.
                Я немного позже попытаюсь ещё чуток поэкспериментировать и развернуть свою мысль подробнее.
                Если я правильно понимаю, то таблицы 1.3.6.1.2.1.17.1.4.1.2 и 1.3.6.1.2.1.17.7.1.4.5.1.1 имеют одинаковые индексы? Тогда это чуть-чуть упрощает задачу (элементов данных нужно будет только два, а не три).

                Для фильтрации (чтобы не создавать из прототипов элементы данных для IFTYPE=6) проще всего использовать фильтр в самом правиле обнаружения (в его настройках есть вкладка для подобного фильтра, только там сравниваемое значение задаётся в виде регулярного выражения).

                Про JavaScript в Zabbix-е я писал в этой реплике.
                Last edited by Kos; 09-04-2024, 17:15.

                Comment

                • DimOriN
                  Junior Member
                  • Apr 2024
                  • 15

                  #9
                  Если я правильно понимаю, то таблицы 1.3.6.1.2.1.17.1.4.1.2 и 1.3.6.1.2.1.17.7.1.4.5.1.1 имеют одинаковые индексы?
                  Нет. Индексов в 1.3.6.1.2.1.17.1.4.1.2 меньше, а вот значения этих индексов соответствуют индексам из 1.3.6.1.2.1.17.7.1.4.5.1.1
                  Code:
                  IF-MIB::ifName.59 = STRING: XGigabitEthernet0/0/4
                  в net.if.discovery (59)
                  Code:
                  SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.52 = Gauge32: 1
                  ACCESS VLAN на XG0/0/4 (52)
                  Code:
                  SNMPv2-SMI::mib-2.17.1.4.1.2.52 = INTEGER: 59
                  связующие данные (52 = 59)

                  Comment

                  • Kos
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • Aug 2015
                    • 3404

                    #10
                    Originally posted by DimOriN
                    Нет. Индексов в 1.3.6.1.2.1.17.1.4.1.2 меньше, а вот значения этих индексов соответствуют индексам из 1.3.6.1.2.1.17.7.1.4.5.1.1
                    Так соответствуют или же их меньше? Я понимаю, что в таблице ifName (она же 1.3.6.1.2.1.31.1.1.1.1, которая используется в net.if.discovery) их больше, но я спрашивал не о ней.

                    Comment

                    • DimOriN
                      Junior Member
                      • Apr 2024
                      • 15

                      #11
                      Добрый день.
                      Прошу прощения за отсутствие.

                      Выкладываю полный вывод команд, чтобы не было недопонимания:
                      Code:
                      [root@ ~]# snmpwalk -v2c -c ЧЧЧ 192.168.0.10 1.3.6.1.2.1.2.2.1.2
                      IF-MIB::ifDescr.1 = STRING: InLoopBack0
                      IF-MIB::ifDescr.2 = STRING: NULL0
                      IF-MIB::ifDescr.3 = STRING: Console9/0/0
                      IF-MIB::ifDescr.4 = STRING: MEth0/0/1
                      IF-MIB::ifDescr.6 = STRING: Vlanif1
                      IF-MIB::ifDescr.7 = STRING: Vlanif2030
                      IF-MIB::ifDescr.8 = STRING: GigabitEthernet0/0/1
                      IF-MIB::ifDescr.9 = STRING: GigabitEthernet0/0/2
                      IF-MIB::ifDescr.10 = STRING: GigabitEthernet0/0/3
                      IF-MIB::ifDescr.11 = STRING: GigabitEthernet0/0/4
                      IF-MIB::ifDescr.12 = STRING: GigabitEthernet0/0/5
                      IF-MIB::ifDescr.13 = STRING: GigabitEthernet0/0/6
                      IF-MIB::ifDescr.14 = STRING: GigabitEthernet0/0/7
                      IF-MIB::ifDescr.15 = STRING: GigabitEthernet0/0/8
                      IF-MIB::ifDescr.16 = STRING: GigabitEthernet0/0/9
                      IF-MIB::ifDescr.17 = STRING: GigabitEthernet0/0/10
                      IF-MIB::ifDescr.18 = STRING: GigabitEthernet0/0/11
                      IF-MIB::ifDescr.19 = STRING: GigabitEthernet0/0/12
                      IF-MIB::ifDescr.20 = STRING: GigabitEthernet0/0/13
                      IF-MIB::ifDescr.21 = STRING: GigabitEthernet0/0/14
                      IF-MIB::ifDescr.22 = STRING: GigabitEthernet0/0/15
                      IF-MIB::ifDescr.23 = STRING: GigabitEthernet0/0/16
                      IF-MIB::ifDescr.24 = STRING: GigabitEthernet0/0/17
                      IF-MIB::ifDescr.25 = STRING: GigabitEthernet0/0/18
                      IF-MIB::ifDescr.26 = STRING: GigabitEthernet0/0/19
                      IF-MIB::ifDescr.27 = STRING: GigabitEthernet0/0/20
                      IF-MIB::ifDescr.28 = STRING: GigabitEthernet0/0/21
                      IF-MIB::ifDescr.29 = STRING: GigabitEthernet0/0/22
                      IF-MIB::ifDescr.30 = STRING: GigabitEthernet0/0/23
                      IF-MIB::ifDescr.31 = STRING: GigabitEthernet0/0/24
                      IF-MIB::ifDescr.32 = STRING: GigabitEthernet0/0/25
                      IF-MIB::ifDescr.33 = STRING: GigabitEthernet0/0/26
                      IF-MIB::ifDescr.34 = STRING: GigabitEthernet0/0/27
                      IF-MIB::ifDescr.35 = STRING: GigabitEthernet0/0/28
                      IF-MIB::ifDescr.36 = STRING: GigabitEthernet0/0/29
                      IF-MIB::ifDescr.37 = STRING: GigabitEthernet0/0/30
                      IF-MIB::ifDescr.38 = STRING: GigabitEthernet0/0/31
                      IF-MIB::ifDescr.39 = STRING: GigabitEthernet0/0/32
                      IF-MIB::ifDescr.40 = STRING: GigabitEthernet0/0/33
                      IF-MIB::ifDescr.41 = STRING: GigabitEthernet0/0/34
                      IF-MIB::ifDescr.42 = STRING: GigabitEthernet0/0/35
                      IF-MIB::ifDescr.43 = STRING: GigabitEthernet0/0/36
                      IF-MIB::ifDescr.44 = STRING: GigabitEthernet0/0/37
                      IF-MIB::ifDescr.45 = STRING: GigabitEthernet0/0/38
                      IF-MIB::ifDescr.46 = STRING: GigabitEthernet0/0/39
                      IF-MIB::ifDescr.47 = STRING: GigabitEthernet0/0/40
                      IF-MIB::ifDescr.48 = STRING: GigabitEthernet0/0/41
                      IF-MIB::ifDescr.49 = STRING: GigabitEthernet0/0/42
                      IF-MIB::ifDescr.50 = STRING: GigabitEthernet0/0/43
                      IF-MIB::ifDescr.51 = STRING: GigabitEthernet0/0/44
                      IF-MIB::ifDescr.52 = STRING: GigabitEthernet0/0/45
                      IF-MIB::ifDescr.53 = STRING: GigabitEthernet0/0/46
                      IF-MIB::ifDescr.54 = STRING: GigabitEthernet0/0/47
                      IF-MIB::ifDescr.55 = STRING: GigabitEthernet0/0/48
                      IF-MIB::ifDescr.56 = STRING: XGigabitEthernet0/0/1
                      IF-MIB::ifDescr.57 = STRING: XGigabitEthernet0/0/2
                      IF-MIB::ifDescr.58 = STRING: XGigabitEthernet0/0/3
                      IF-MIB::ifDescr.59 = STRING: XGigabitEthernet0/0/4
                      Code:
                      [root@ ~]# snmpwalk -v2c -c ЧЧЧ 192.168.0.10 1.3.6.1.2.1.17.7.1.4.5.1.1
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.1 = Gauge32: 2036
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.2 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.3 = Gauge32: 2036
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.4 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.5 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.6 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.7 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.8 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.9 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.10 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.11 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.12 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.13 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.14 = Gauge32: 1
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.15 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.16 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.17 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.18 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.19 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.20 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.21 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.22 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.23 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.24 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.25 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.26 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.27 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.28 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.29 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.30 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.31 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.32 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.33 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.34 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.35 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.36 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.37 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.38 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.39 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.40 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.41 = Gauge32: 1
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.42 = Gauge32: 1
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.43 = Gauge32: 1
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.44 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.45 = Gauge32: 1
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.46 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.47 = Gauge32: 2048
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.48 = Gauge32: 1
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.49 = Gauge32: 1
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.50 = Gauge32: 1
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.51 = Gauge32: 1
                      SNMPv2-SMI::mib-2.17.7.1.4.5.1.1.52 = Gauge32: 1
                      Code:
                      [root@ ~]# snmpwalk -v2c -c ЧЧЧ 192.168.0.10 1.3.6.1.2.1.17.1.4.1.2
                      SNMPv2-SMI::mib-2.17.1.4.1.2.1 = INTEGER: 8
                      SNMPv2-SMI::mib-2.17.1.4.1.2.2 = INTEGER: 9
                      SNMPv2-SMI::mib-2.17.1.4.1.2.3 = INTEGER: 10
                      SNMPv2-SMI::mib-2.17.1.4.1.2.4 = INTEGER: 11
                      SNMPv2-SMI::mib-2.17.1.4.1.2.5 = INTEGER: 12
                      SNMPv2-SMI::mib-2.17.1.4.1.2.6 = INTEGER: 13
                      SNMPv2-SMI::mib-2.17.1.4.1.2.7 = INTEGER: 14
                      SNMPv2-SMI::mib-2.17.1.4.1.2.8 = INTEGER: 15
                      SNMPv2-SMI::mib-2.17.1.4.1.2.9 = INTEGER: 16
                      SNMPv2-SMI::mib-2.17.1.4.1.2.10 = INTEGER: 17
                      SNMPv2-SMI::mib-2.17.1.4.1.2.11 = INTEGER: 18
                      SNMPv2-SMI::mib-2.17.1.4.1.2.12 = INTEGER: 19
                      SNMPv2-SMI::mib-2.17.1.4.1.2.13 = INTEGER: 20
                      SNMPv2-SMI::mib-2.17.1.4.1.2.14 = INTEGER: 21
                      SNMPv2-SMI::mib-2.17.1.4.1.2.15 = INTEGER: 22
                      SNMPv2-SMI::mib-2.17.1.4.1.2.16 = INTEGER: 23
                      SNMPv2-SMI::mib-2.17.1.4.1.2.17 = INTEGER: 24
                      SNMPv2-SMI::mib-2.17.1.4.1.2.18 = INTEGER: 25
                      SNMPv2-SMI::mib-2.17.1.4.1.2.19 = INTEGER: 26
                      SNMPv2-SMI::mib-2.17.1.4.1.2.20 = INTEGER: 27
                      SNMPv2-SMI::mib-2.17.1.4.1.2.21 = INTEGER: 28
                      SNMPv2-SMI::mib-2.17.1.4.1.2.22 = INTEGER: 29
                      SNMPv2-SMI::mib-2.17.1.4.1.2.23 = INTEGER: 30
                      SNMPv2-SMI::mib-2.17.1.4.1.2.24 = INTEGER: 31
                      SNMPv2-SMI::mib-2.17.1.4.1.2.25 = INTEGER: 32
                      SNMPv2-SMI::mib-2.17.1.4.1.2.26 = INTEGER: 33
                      SNMPv2-SMI::mib-2.17.1.4.1.2.27 = INTEGER: 34
                      SNMPv2-SMI::mib-2.17.1.4.1.2.28 = INTEGER: 35
                      SNMPv2-SMI::mib-2.17.1.4.1.2.29 = INTEGER: 36
                      SNMPv2-SMI::mib-2.17.1.4.1.2.30 = INTEGER: 37
                      SNMPv2-SMI::mib-2.17.1.4.1.2.31 = INTEGER: 38
                      SNMPv2-SMI::mib-2.17.1.4.1.2.32 = INTEGER: 39
                      SNMPv2-SMI::mib-2.17.1.4.1.2.33 = INTEGER: 40
                      SNMPv2-SMI::mib-2.17.1.4.1.2.34 = INTEGER: 41
                      SNMPv2-SMI::mib-2.17.1.4.1.2.35 = INTEGER: 42
                      SNMPv2-SMI::mib-2.17.1.4.1.2.36 = INTEGER: 43
                      SNMPv2-SMI::mib-2.17.1.4.1.2.37 = INTEGER: 44
                      SNMPv2-SMI::mib-2.17.1.4.1.2.38 = INTEGER: 45
                      SNMPv2-SMI::mib-2.17.1.4.1.2.39 = INTEGER: 46
                      SNMPv2-SMI::mib-2.17.1.4.1.2.40 = INTEGER: 47
                      SNMPv2-SMI::mib-2.17.1.4.1.2.41 = INTEGER: 48
                      SNMPv2-SMI::mib-2.17.1.4.1.2.42 = INTEGER: 49
                      SNMPv2-SMI::mib-2.17.1.4.1.2.43 = INTEGER: 50
                      SNMPv2-SMI::mib-2.17.1.4.1.2.44 = INTEGER: 51
                      SNMPv2-SMI::mib-2.17.1.4.1.2.45 = INTEGER: 52
                      SNMPv2-SMI::mib-2.17.1.4.1.2.46 = INTEGER: 53
                      SNMPv2-SMI::mib-2.17.1.4.1.2.47 = INTEGER: 54
                      SNMPv2-SMI::mib-2.17.1.4.1.2.48 = INTEGER: 55
                      SNMPv2-SMI::mib-2.17.1.4.1.2.49 = INTEGER: 56
                      SNMPv2-SMI::mib-2.17.1.4.1.2.50 = INTEGER: 57
                      SNMPv2-SMI::mib-2.17.1.4.1.2.51 = INTEGER: 58
                      SNMPv2-SMI::mib-2.17.1.4.1.2.52 = INTEGER: 59

                      Comment

                      • Kos
                        Senior Member
                        Zabbix Certified SpecialistZabbix Certified Professional
                        • Aug 2015
                        • 3404

                        #12
                        DimOriN, спасибо, отлично!
                        А вы не могли бы привести пример вывода для таких двух ключей?
                        В версиях Zabbix 6.X можно даже не создавать реальных элементов данных, а только сделать вид, что начинаешь их создавать, а затем нажать кнопку "Тест".
                        Code:
                        discovery[{#IFDESCR},1.3.6.1.2.1.2.2.1.2]
                        discovery[{#IFVLAN},1.3.6.1.2.1.17.7.1.4.5.1.1,{#IFINDEX},1.3.6.1.2.1.17.1.4.1.2]

                        Comment

                        • DimOriN
                          Junior Member
                          • Apr 2024
                          • 15

                          #13
                          Доброго дня!
                          По первому:
                          Code:
                          [{"{#SNMPINDEX}":"1","{#IFDESCR}":"InLoopBack0"},
                          {"{#SNMPINDEX}":"2","{#IFDESCR}":"NULL0"},
                          {"{#SNMPINDEX}":"3","{#IFDESCR}":"Console9/0/0"},
                          {"{#SNMPINDEX}":"4","{#IFDESCR}":"MEth0/0/1"},
                          {"{#SNMPINDEX}":"6","{#IFDESCR}":"Vlanif1"},
                          {"{#SNMPINDEX}":"7","{#IFDESCR}":"Vlanif2030"},
                          {"{#SNMPINDEX}":"8","{#IFDESCR}":"GigabitEthernet0/0/1"},
                          {"{#SNMPINDEX}":"9","{#IFDESCR}":"GigabitEthernet0/0/2"},
                          {"{#SNMPINDEX}":"10","{#IFDESCR}":"GigabitEthernet0/0/3"},
                          {"{#SNMPINDEX}":"11","{#IFDESCR}":"GigabitEthernet0/0/4"},
                          {"{#SNMPINDEX}":"12","{#IFDESCR}":"GigabitEthernet0/0/5"},
                          {"{#SNMPINDEX}":"13","{#IFDESCR}":"GigabitEthernet0/0/6"},
                          {"{#SNMPINDEX}":"14","{#IFDESCR}":"GigabitEthernet0/0/7"},
                          {"{#SNMPINDEX}":"15","{#IFDESCR}":"GigabitEthernet0/0/8"},
                          {"{#SNMPINDEX}":"16","{#IFDESCR}":"GigabitEthernet0/0/9"},
                          {"{#SNMPINDEX}":"17","{#IFDESCR}":"GigabitEthernet0/0/10"},
                          {"{#SNMPINDEX}":"18","{#IFDESCR}":"GigabitEthernet0/0/11"},
                          {"{#SNMPINDEX}":"19","{#IFDESCR}":"GigabitEthernet0/0/12"},
                          {"{#SNMPINDEX}":"20","{#IFDESCR}":"GigabitEthernet0/0/13"},
                          {"{#SNMPINDEX}":"21","{#IFDESCR}":"GigabitEthernet0/0/14"},
                          {"{#SNMPINDEX}":"22","{#IFDESCR}":"GigabitEthernet0/0/15"},
                          {"{#SNMPINDEX}":"23","{#IFDESCR}":"GigabitEthernet0/0/16"},
                          {"{#SNMPINDEX}":"24","{#IFDESCR}":"GigabitEthernet0/0/17"},
                          {"{#SNMPINDEX}":"25","{#IFDESCR}":"GigabitEthernet0/0/18"},
                          {"{#SNMPINDEX}":"26","{#IFDESCR}":"GigabitEthernet0/0/19"},
                          {"{#SNMPINDEX}":"27","{#IFDESCR}":"GigabitEthernet0/0/20"},
                          {"{#SNMPINDEX}":"28","{#IFDESCR}":"GigabitEthernet0/0/21"},
                          {"{#SNMPINDEX}":"29","{#IFDESCR}":"GigabitEthernet0/0/22"},
                          {"{#SNMPINDEX}":"30","{#IFDESCR}":"GigabitEthernet0/0/23"},
                          {"{#SNMPINDEX}":"31","{#IFDESCR}":"GigabitEthernet0/0/24"},
                          {"{#SNMPINDEX}":"32","{#IFDESCR}":"GigabitEthernet0/0/25"},
                          {"{#SNMPINDEX}":"33","{#IFDESCR}":"GigabitEthernet0/0/26"},
                          {"{#SNMPINDEX}":"34","{#IFDESCR}":"GigabitEthernet0/0/27"},
                          {"{#SNMPINDEX}":"35","{#IFDESCR}":"GigabitEthernet0/0/28"},
                          {"{#SNMPINDEX}":"36","{#IFDESCR}":"GigabitEthernet0/0/29"},
                          {"{#SNMPINDEX}":"37","{#IFDESCR}":"GigabitEthernet0/0/30"},
                          {"{#SNMPINDEX}":"38","{#IFDESCR}":"GigabitEthernet0/0/31"},
                          {"{#SNMPINDEX}":"39","{#IFDESCR}":"GigabitEthernet0/0/32"},
                          {"{#SNMPINDEX}":"40","{#IFDESCR}":"GigabitEthernet0/0/33"},
                          {"{#SNMPINDEX}":"41","{#IFDESCR}":"GigabitEthernet0/0/34"},
                          {"{#SNMPINDEX}":"42","{#IFDESCR}":"GigabitEthernet0/0/35"},
                          {"{#SNMPINDEX}":"43","{#IFDESCR}":"GigabitEthernet0/0/36"},
                          {"{#SNMPINDEX}":"44","{#IFDESCR}":"GigabitEthernet0/0/37"},
                          {"{#SNMPINDEX}":"45","{#IFDESCR}":"GigabitEthernet0/0/38"},
                          {"{#SNMPINDEX}":"46","{#IFDESCR}":"GigabitEthernet0/0/39"},
                          {"{#SNMPINDEX}":"47","{#IFDESCR}":"GigabitEthernet0/0/40"},
                          {"{#SNMPINDEX}":"48","{#IFDESCR}":"GigabitEthernet0/0/41"},
                          {"{#SNMPINDEX}":"49","{#IFDESCR}":"GigabitEthernet0/0/42"},
                          {"{#SNMPINDEX}":"50","{#IFDESCR}":"GigabitEthernet0/0/43"},
                          {"{#SNMPINDEX}":"51","{#IFDESCR}":"GigabitEthernet0/0/44"},
                          {"{#SNMPINDEX}":"52","{#IFDESCR}":"GigabitEthernet0/0/45"},
                          {"{#SNMPINDEX}":"53","{#IFDESCR}":"GigabitEthernet0/0/46"},
                          {"{#SNMPINDEX}":"54","{#IFDESCR}":"GigabitEthernet0/0/47"},
                          {"{#SNMPINDEX}":"55","{#IFDESCR}":"GigabitEthernet0/0/48"},
                          {"{#SNMPINDEX}":"56","{#IFDESCR}":"XGigabitEthernet0/0/1"},
                          {"{#SNMPINDEX}":"57","{#IFDESCR}":"XGigabitEthernet0/0/2"},
                          {"{#SNMPINDEX}":"58","{#IFDESCR}":"XGigabitEthernet0/0/3"},
                          {"{#SNMPINDEX}":"59","{#IFDESCR}":"XGigabitEthernet0/0/4"}]​
                          По второму:
                          Code:
                          [{"{#SNMPINDEX}":"1","{#IFVLAN}":"2036","{#IFINDEX}":"8"},
                          {"{#SNMPINDEX}":"2","{#IFVLAN}":"2048","{#IFINDEX}":"9"},
                          {"{#SNMPINDEX}":"3","{#IFVLAN}":"2036","{#IFINDEX}":"10"},
                          {"{#SNMPINDEX}":"4","{#IFVLAN}":"2048","{#IFINDEX}":"11"},
                          {"{#SNMPINDEX}":"5","{#IFVLAN}":"2048","{#IFINDEX}":"12"},
                          {"{#SNMPINDEX}":"6","{#IFVLAN}":"2048","{#IFINDEX}":"13"},
                          {"{#SNMPINDEX}":"7","{#IFVLAN}":"2048","{#IFINDEX}":"14"},
                          {"{#SNMPINDEX}":"8","{#IFVLAN}":"2048","{#IFINDEX}":"15"},
                          {"{#SNMPINDEX}":"9","{#IFVLAN}":"2048","{#IFINDEX}":"16"},
                          {"{#SNMPINDEX}":"10","{#IFVLAN}":"2048","{#IFINDEX}":"17"},
                          {"{#SNMPINDEX}":"11","{#IFVLAN}":"2048","{#IFINDEX}":"18"},
                          {"{#SNMPINDEX}":"12","{#IFVLAN}":"2048","{#IFINDEX}":"19"},
                          {"{#SNMPINDEX}":"13","{#IFVLAN}":"2048","{#IFINDEX}":"20"},
                          {"{#SNMPINDEX}":"14","{#IFVLAN}":"1","{#IFINDEX}":"21"},
                          {"{#SNMPINDEX}":"15","{#IFVLAN}":"2048","{#IFINDEX}":"22"},
                          {"{#SNMPINDEX}":"16","{#IFVLAN}":"2048","{#IFINDEX}":"23"},
                          {"{#SNMPINDEX}":"17","{#IFVLAN}":"2048","{#IFINDEX}":"24"},
                          {"{#SNMPINDEX}":"18","{#IFVLAN}":"2048","{#IFINDEX}":"25"},
                          {"{#SNMPINDEX}":"19","{#IFVLAN}":"2048","{#IFINDEX}":"26"},
                          {"{#SNMPINDEX}":"20","{#IFVLAN}":"2048","{#IFINDEX}":"27"},
                          {"{#SNMPINDEX}":"21","{#IFVLAN}":"2048","{#IFINDEX}":"28"},
                          {"{#SNMPINDEX}":"22","{#IFVLAN}":"2048","{#IFINDEX}":"29"},
                          {"{#SNMPINDEX}":"23","{#IFVLAN}":"2048","{#IFINDEX}":"30"},
                          {"{#SNMPINDEX}":"24","{#IFVLAN}":"2048","{#IFINDEX}":"31"},
                          {"{#SNMPINDEX}":"25","{#IFVLAN}":"2048","{#IFINDEX}":"32"},
                          {"{#SNMPINDEX}":"26","{#IFVLAN}":"2048","{#IFINDEX}":"33"},
                          {"{#SNMPINDEX}":"27","{#IFVLAN}":"2048","{#IFINDEX}":"34"},
                          {"{#SNMPINDEX}":"28","{#IFVLAN}":"2048","{#IFINDEX}":"35"},
                          {"{#SNMPINDEX}":"29","{#IFVLAN}":"2048","{#IFINDEX}":"36"},
                          {"{#SNMPINDEX}":"30","{#IFVLAN}":"2048","{#IFINDEX}":"37"},
                          {"{#SNMPINDEX}":"31","{#IFVLAN}":"2048","{#IFINDEX}":"38"},
                          {"{#SNMPINDEX}":"32","{#IFVLAN}":"2048","{#IFINDEX}":"39"},
                          {"{#SNMPINDEX}":"33","{#IFVLAN}":"2048","{#IFINDEX}":"40"},
                          {"{#SNMPINDEX}":"34","{#IFVLAN}":"2048","{#IFINDEX}":"41"},
                          {"{#SNMPINDEX}":"35","{#IFVLAN}":"2048","{#IFINDEX}":"42"},
                          {"{#SNMPINDEX}":"36","{#IFVLAN}":"2048","{#IFINDEX}":"43"},
                          {"{#SNMPINDEX}":"37","{#IFVLAN}":"2048","{#IFINDEX}":"44"},
                          {"{#SNMPINDEX}":"38","{#IFVLAN}":"2048","{#IFINDEX}":"45"},
                          {"{#SNMPINDEX}":"39","{#IFVLAN}":"2048","{#IFINDEX}":"46"},
                          {"{#SNMPINDEX}":"40","{#IFVLAN}":"2048","{#IFINDEX}":"47"},
                          {"{#SNMPINDEX}":"41","{#IFVLAN}":"1","{#IFINDEX}":"48"},
                          {"{#SNMPINDEX}":"42","{#IFVLAN}":"1","{#IFINDEX}":"49"},
                          {"{#SNMPINDEX}":"43","{#IFVLAN}":"1","{#IFINDEX}":"50"},
                          {"{#SNMPINDEX}":"44","{#IFVLAN}":"2048","{#IFINDEX}":"51"},
                          {"{#SNMPINDEX}":"45","{#IFVLAN}":"1","{#IFINDEX}":"52"},
                          {"{#SNMPINDEX}":"46","{#IFVLAN}":"2048","{#IFINDEX}":"53"},
                          {"{#SNMPINDEX}":"47","{#IFVLAN}":"2048","{#IFINDEX}":"54"},
                          {"{#SNMPINDEX}":"48","{#IFVLAN}":"1","{#IFINDEX}":"55"},
                          {"{#SNMPINDEX}":"49","{#IFVLAN}":"1","{#IFINDEX}":"56"},
                          {"{#SNMPINDEX}":"50","{#IFVLAN}":"1","{#IFINDEX}":"57"},
                          {"{#SNMPINDEX}":"51","{#IFVLAN}":"1","{#IFINDEX}":"58"},
                          {"{#SNMPINDEX}":"52","{#IFVLAN}":"1","{#IFINDEX}":"59"}]​

                          Comment


                          • Kos
                            Kos commented
                            Editing a comment
                            Да, спасибо - то, что надо.
                            К сожалению, только на след. неделе смогу что-то попробовать.
                        • Kos
                          Senior Member
                          Zabbix Certified SpecialistZabbix Certified Professional
                          • Aug 2015
                          • 3404

                          #14
                          Ну, в общем - идея такая.

                          1. Создаём два обычных (не-LLD) элемента данных, в которые будем складывать JSON-ы с промежуточными результатами низкоуровневого обнаружения.
                          Тип элементов данных для них - SNMP agent, тип данных - Text (чтобы помещался длинный текст JSON-ов), интервал обновления берём из основного правила LLD (допустим, 1 час), время хранения истории - небольшое, но не меньше интервала обновления (например, сутки).
                          В качестве OID-ов для них указываем:
                          • для первого: то, что было ранее в качестве OID-а для исходного правила обнаружения, т.е. что-то вроде:
                          Code:
                          discovery[{#IFOPERSTATUS},1.3.6.1.2.1.2.2.1.8,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7,{#IFALIAS},1.3.6.1.2.1.31.1.1.1.18,{#IFNAME},1.3.6.1.2.1.31.1.1.1.1,{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFTYPE},1.3.6.1.2.1.2.2.1.3]
                          • для второго:
                          Code:
                          discovery[{#IFVLAN},1.3.6.1.2.1.17.7.1.4.5.1.1,{#IFINDEX},1.3.6.1.2.1.17.1.4.1.2]
                          Ключи для них называем по вкусу, для данного примера пусть будут value-json1 и value-json2 (они используются в формуле далее).
                          В качестве теста можем понажимать кнопки "Test" и "Execute now"; должны получить соответствующие JSON-ы (аналогичные тем, что приведены в предыдущей реплике этой дискуссии).

                          2. Создаём третий обычный элемент данных, в который засовываем "магию", объединяющую информацию из двух предыдущих JSON-ов.
                          Даём ему ключ, например, value-json3; тип элемента данных - вычисляемый (Calculated), тип данных и интервал - такие же, как у предыдущих двух.
                          • Первый шаг магии: в формуле для вычисляемого элемента данных объединяем значения двух предыдущих через какой-то разделитель, заведомо не встречающийся в их тексте (например, строку из восьми знаков равенства):
                          Code:
                          concat(last(//value-json1), "========", last(//value-json2))
                          • Второй шаг магии: предобработка с помощью шага JavaScript. В этом скрипте разбиваем исходное значение по нашему разделителю обратно на два JSON-а, а затем обогащаем первый JSON данными из второго, добавляя таким образом ещё один LLD-макрос "{#IFVLAN}".
                          Код скрипта:
                          Code:
                          var json, i, vlans, json0, json1;
                          
                          //Prepare initial 2 arrays of JSON's
                          json = value.split("========");
                          if (json.length != 2) {
                            throw "Input is invalid:\n" + value;
                          }
                          try {
                            for (i in json) {
                              json[i] = JSON.parse(json[i]);
                            }
                          } catch (e) {
                            throw "Invalid json[" + i + "]:\n" + e + "\n" + json[i];
                          }
                          json0 = json[0];
                          json1 = json[1];
                          
                          //Process json1, relocating its content into map (Object in JS)
                          vlans = new Object();
                          for (i in json1) {
                            vlans[json1[i]["{#IFINDEX}"]] = json1[i]["{#IFVLAN}"];
                          }
                          
                          //Process json0, adding into it the VLAN info from the map
                          for (i in json0) {
                            json0[i]["{#IFVLAN}"] = vlans[json0[i]["{#SNMPINDEX}"]];
                          }
                          
                          //return the result transformed into a string
                          return JSON.stringify(json0);
                          Если первые два элемента данных уже получили свои значения, то можем понажимать кнопки "Test" и "Execute now" уже на этом элементе данных, чтобы убедиться, что он тоже выдаёт нужный результат.
                          Историю для него можно тоже выставить относительно короткую (только для отладки), а затем при нормальной работе её можно вообще не хранить.

                          3. Корректируем наше правило обнаружения: меняем ему тип на "Зависимый" (Dependent item), а в качестве основного (мастер-айтема) выбираем сделанный на предыдущем шаге наш третий JSON.

                          4. Наслаждаемся
                          Last edited by Kos; 10-05-2024, 17:53.

                          Comment

                          • DimOriN
                            Junior Member
                            • Apr 2024
                            • 15

                            #15
                            Originally posted by Kos
                            Ну, в общем - идея такая.
                            4. Наслаждаемся
                            Огромное спасибо за помощь. Как сделаю, так обязательно отпишусь о результатах.

                            Comment

                            Working...