Ad Widget

Collapse

LLD JsonPath в дискаверинге подскажите, плиз...

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #1

    LLD JsonPath в дискаверинге подскажите, плиз...

    Приветствую.
    Что-то уже голова кругом, никак не могу разобраться в этих json путях.
    Имеем имеем элемент данных, выдающий json (писал с руки, может быть с ошибками) после предобработки jsonpath, соответственно в массивах могут быть и другие значения
    Code:
    [
     {
      "name": "nginx",
      "count": 70,
      "metrics": [
         {
          "name": "access",
          "count": 50,
          "metrics": [
             {
             "name":"rt",
             "value": {
               "MAX": 10,
               "MIN":20
              }
             }
            ]
         }
         ]
     }
     ]
    Нужны прототипы элементов данных:
    count[{#FILE}] куда первый count вывести $.[[email protected] == "nginx")].count
    Вот тут в предобработку можно записать $.[[email protected] == "{#FILE}")].count

    Создаю дискаверинг, зависимый элемент.
    Но какой JSONPATH указать?
    Указываю
    LLD макрос {#FILE} JSONPath $.[:].name

    Дискаверинг со знаком восклицания, пишет что ЭД с ключом count[{#FILE}] уже существует
    Т.к. у меня json немного побольше, и $.[:].name выдает два значения, то в ошибке дискаверинга две строки. При этом другого ЭД с ключем count[{#FILE}] я не нахожу...

    ЗЫ. Это первый уровень, далее надо добраться до последнего :-(

    Last edited by Alex_UUU; 27-02-2024, 21:01.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Что хотите получить на выходе, после отрабатывания дискаверинга?
    Что-то типа такого?
    Item Value
    count["nginx"] 70
    count["access"] 50

    Дискаверинг со знаком восклицания, пишет что ЭД с ключом count[{#FILE}] уже существует
    Значит, макрос {#FILE} не раскрылся, т.е. не получил ожидаемого значения. И для разных элементов в массиве JSON макрос имеет одно и то же (нераскрытое) значение.
    Кстати, и массивов я тут особо не вижу. Точнее, вижу два массива, но в каждом - только по одному элементу (один - на корневом уровне, другой - "metrics").

    Comment

    • Alex_UUU
      Senior Member
      • Dec 2018
      • 541

      #3
      Нет, немного не так Нужен
      Item Value
      count["nginx"] 70
      Также
      Item Value
      count["nginx","access"] 50
      Ну и до кучи:
      Item Value
      value["nginx","access","rt"."MAX"] 10
      value["nginx","access","rt"."MIN" 20


      Ну да, в примере по одному элементу, но будет, конечно больше.
      Я так и подумал, что макрос не раскрылся. Мне кажется, что он даже не определился.
      Что-то подсказывает, что конструкция $.[:].name в предобработке работает, а вот в дискаверинге нет.
      Last edited by Alex_UUU; 27-02-2024, 21:01.

      Comment

      • Alex_UUU
        Senior Member
        • Dec 2018
        • 541

        #4
        Все, вопрос снят.
        Поступил по простому: лучше избыток данных, чем "крутизна" сложного запроса.

        Т.к. у меня вырисовывается ТРИ уровня данных, то я на стороне своего скрипта вместе с данными отдаю еще отдельной веткой структуру, три уровня. И у меня три дискаверинга - как зависимые элементы и прототипы тоже как зависимые. Прекрасно работает..

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

        Всем спасибо.

        Comment

        Working...