Добрый день, может кто сталкивался с такой работой макросов 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"] и так далее..??? Да и внутри квадратных скобок перед каждой кавычкой есть еще и знак косой черты, но тут в посте почему то они не отразились.
Действую по данной инструкции, так как задача похожая: 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"] и так далее..??? Да и внутри квадратных скобок перед каждой кавычкой есть еще и знак косой черты, но тут в посте почему то они не отразились.
Comment