Ad Widget

Collapse

как в OID одного item подставлять число, возвращаемое другим item?

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Astar
    Member
    • Jul 2022
    • 36

    #1

    как в OID одного item подставлять число, возвращаемое другим item?

    Добрый день
    я знаю о существовании динамических индексов, но в моем случае не получается

    мне необходимо получить состояние выполнения NQA test-instance с коммутатора Huawei
    test instance на ключевых маршрутизаторах может быть больше одного. настраиваю LLD rule:
    discovery[{#TESTTAG},1.3.6.1.4.1.2011.5.25.111.2.1.1.3]
    которое возвращает:

    [{"{#SNMPINDEX}":"11.80.105.110.103.79.118.101.1 14. 82.82.76.7.80.105.110.103.78.69.83","{#TESTTAG}":" Chanell MRES <--> NES over RRL"},
    {"{#SNMPINDEX}":"12.80.105.110.103.79.118.10 1.114.86.79.76.83.7.80.105.110.103.78.69.83","{#TE STTAG}":"Chanell MRES <--> NES over VOLS"}]

    как видите индекс очень длинный, но единственное значение, которое меня интересует, можно получить по OID:
    1.3.6.1.4.1.2011.5.25.111.4.1.1.3.{#SNMPINDEX}.{пе ременный_увеличивающийся на 1 индекс}.1 пусть это будет item_prototype_1

    а вот этот {переменный_увеличивающийся на 1 индекс} можно получить через OID 1.3.6.1.4.1.2011.5.25.111.2.3.1.8.{#SNMPINDEX} и он меняется раз в минуту на 1, я сам регулирую настройкой NQA на коммутаторе
    я могу под него (да и сделал уже) могу создать item_prototype_2, но как мне описать item_prototype_1 чтобы буквально перед его опросом опрашивался item_prototype_2 и его item_prototype_2_value генерировало для item_prototype_1 OID типа: 1.3.6.1.4.1.2011.5.25.111.4.1.1.3.{#SNMPINDEX}.ite m_prototype_2_value.1

    Depended item тоже не подходит

    Можно ли такое сделать, и если да, то как?
  • Answer selected by Hamardaban at 24-03-2025, 19:02.
    Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    Посмотрите, пожалйуста, эти темы: раз, два, три. Я там подробно отвечал на сходные вопросы.

    Comment


    • Astar
      Astar commented
      Editing a comment
      Спасибо большое! Буду изучать. возникнут вопросы, задам
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Посмотрите, пожалйуста, эти темы: раз, два, три. Я там подробно отвечал на сходные вопросы.

    Comment


    • Astar
      Astar commented
      Editing a comment
      Спасибо большое! Буду изучать. возникнут вопросы, задам
  • Astar
    Member
    • Jul 2022
    • 36

    #3
    Все таки требуется ваша помощь
    прочитал все ссылки, и вот к чему пришел

    В LLD создал item prototype (SNMP agent) с ключом nqa.ScheduleLastFinishIndex[{#SNMPINDEX}] который создает (в тестируемом мною случае) два элемента с индексом последней проверки nqa
    также создал item prototype (вычисляемый) с ключом nqa.OIDForResults[{#SNMPINDEX}] и формулой
    Code:
    concat("1.3.6.1.4.1.2011.5.25.111.4.1.1.3.", {#SNMPINDEX}, ".", last(//nqa.ScheduleLastFinishIndex[{#SNMPINDEX}]), ".1")
    которая создает мне строчку с нужным OID, я проверил
    но как эту строчку использовать в другом элементе в качестве OIDа так и не понял
    мне бы на этом этапе как то записать возвращаемую строку (по сути OID) в какой то макрос, потому что в элементе статуса проверки я не могу написать SNMP OID: nqa.OIDForResults[{#SNMPINDEX}] так не работает а вот был бы макрос {$КАКОЙ_ТО_МАКРОС} его бы уже можно было прописать в SNMP OID

    или как это еще по другому сделать?

    Comment

    • Astar
      Member
      • Jul 2022
      • 36

      #4
      Originally posted by Kos
      Посмотрите, пожалйуста, эти темы: раз, два, три. Я там подробно отвечал на сходные вопросы.
      Еще раз спасибо. Раза три порывался еще раз спросить, не работал у меня скрипт....

      Перечитал еще раз ваши ссылки, переделал все.
      Создал простой элемент JSONLastResults (не прототип в LLD) с SNMP OID: discovery[{#LASTRESULTS}, 1.3.6.1.4.1.2011.5.25.111.4.1.1.3]
      он мне возвращает массив вида (о как я ошибался... он возвращает строку)

      [{"{#SNMPINDEX}":"11.80.105.110.103.79.118.101.1 14. 82.82.76.7.80.105.110.103.78.69.83.3083.1","{#LAST RESULTS}":"1"},{"{#SNMPINDEX}":"12.80.105.110.103. 79.118.101.114.86.79.76.83.7.80.105.110.103.78.69. 83.175.1","{#LASTRESULTS}":"2"}]


      создал LLD rule вида discovery[{#TESTTAG},1.3.6.1.4.1.2011.5.25.111.2.1.1.3], он возвращает мне:

      [{"{#SNMPINDEX}":"11.80.105.110.103.79.118.101.1 14. 82.82.76.7.80.105.110.103.78.69.83","{#TESTTAG}":" Chanell MRES <--> NES over RRL"},
      {"{#SNMPINDEX}":"12.80.105.110.103.79.118.10 1.114.86.79.76.83.7.80.105.110.103.78.69.83","{#TE STTAG}":"Chanell MRES <--> NES over VOLS"}],


      где SNMPINDEXы являются частью SNMPINDEXа в JSONLastResults, без последних 2-х чисел.

      в этом LLD создал item prototype зависимый от JSONLastResults и в Preprocessing вставил JS

      Code:
      testindex = "{#SNMPINDEX}";
      list = value.split(',');
      for (i = 0; i < list.length; i++){
          if (list[i].includes(testindex)){
              out = list[i+1];
          }
      }
      out = out.slice(0,-1).split(':')[1].replace('}','');
      return out
      Скрипт может и корявенький, зато работает :-)
      я долго мучился, не понимая толком с каими типами данных я работаю, поняв что строка, пытался правратить в объект с помощью JSON.parse, дальше ругалось на что то другое
      Решил работать как со строкой. Короче получил все что хотел!

      Comment

      Working...