Ad Widget

Collapse

Странная работа LLD макросов

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Silver_47
    Junior Member
    • Oct 2022
    • 5

    #1

    Странная работа LLD макросов

    Добрый день, может кто сталкивался с такой работой макросов LLD в Discovery (У меня Zabbix 5.0)
    Действую по данной инструкции, так как задача похожая: https://www.zabbix.com/documentation...ery/prometheus

    Беру список метрик с удаленного хоста в формате Prometheus, создаю основной ЭД с типом "HTTP агент"

    Получаю строки (пример):

    pg_backend_cpu{backend_type="primary", host="node1"} 0.004
    pg_backend_cpu{backend_type="replica", host="node2"} 0.050


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

    Создаю "Правило обнаружения" , ТИП - "Зависимый элемент данных", В Основной элемент данных подставляю тот ЭД что создал выше.

    Так как для работы правила обнаружения нам нужно получать данные в Json, делаю предобработку в "Правило обнаружения":
    Имя: "Prometheus в json", пераметр: "pg_backend_cpu"
    Соответственно ждем что правило обнаружения будет отдавать такой json:
    [{
    "name":"pg_backend_cpu",
    "value":"0.0",
    "line_raw":"pg_backend_cpu{backend_type="prima ry\ ",host="node1"},
    "labels":{
    "backend_type":"primary",
    "host"="node1",
    },
    "type":"gauge"
    },
    {
    "name":"pg_backend_cpu",
    "value":"0.0",
    "line_raw":"pg_backend_cpu{backend_type="repli ca\ ",host="node2"},
    "labels":{
    "backend_type":"replica",
    "host"="node2",
    },
    "type":"gauge"
    }]


    Также по инструкции нам нужно создать LLD макросы во вкладке, делаю такие, по колличеству лейблов в метрике:

    {#BACKEND} : $..labels['backend_type']
    {#HOST} : $..labels['host']


    Создаю Прототип ЭД, тоже зависимы от основного ЭД( наш ЭД с типом "HTTP агент", который создал первым)
    Имя: {#BACKEND}_{#HOST} CPU
    Ключ: cpu[{#BACKEND},{#HOST}]


    Предобработка: "Шаблон Prometheus", Параметр: pg_backend_cpu{backend_type="{#BACKEND}", host="{#HOST}"}, соответственно жду макросы будут заменяться на значения: primary, replica и node1, node2
    Однако на выходе имею что Макросы заменяются на такие строки (пример для node1):
    Название ЭД : ["primary"]_["node1"] CPU
    Ключ: cpu["["primary"]","["node1"]"]

    И сам параметр запроса : pg_backend_cpu{backend_type="["primary"]", host="["node1"]"}
    который естественно выдает ошибку "1. Failed: cannot apply Prometheus pattern: data extraction error: no matching metrics found"

    Вопрос почему вместо node1 подставляется ["node1"] и так далее..???​ Да и внутри квадратных скобок перед каждой кавычкой есть еще и знак косой черты​, но тут в посте почему то они не отразились.
    Last edited by Silver_47; 20-05-2023, 17:29.
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Попробуйте определить макросы вот так:
    Code:
    {#BACKEND} : $.labels.backend_type
    {#HOST} : $.labels.host
    зы
    косая черта - это экранирование кавычек
    чтобы правильно отображались все символы пользуйтесь тегами форматирования

    Comment

    • Silver_47
      Junior Member
      • Oct 2022
      • 5

      #3
      {#BACKEND} : $.labels.backend_type
      {#HOST} : $.labels.host​
      Да так работает, спасибо!
      ​Только тогда непонятен момент, почему когда я пытаюсь извлечь данные тестируя например через сервис https://jsonpath.com/, $.labels.backend_type - такая структура не работает , а с двумя точками работает? $..labels.backend_type

      Comment

      • Hamardaban
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • May 2019
        • 2713

        #4
        Сказывается разная реализация стандартов.
        В документации забикса масса примеров и пояснений по jsonpath - смотрите в них.

        Comment

        Working...