18 Проверки Prometheus
Обзор
Zabbix может запрашивать метрики, представленные в формате строки Prometheus.
Чтобы начать сбор данных Prometheus, необходимо настроить два элемента данных:
- основной элемент данных HTTP,
указывающий на соответствующую конечную точку данных, например,
https://<prometheus host>/metrics - зависимые элементы данных, использующие опцию предварительной обработки Prometheus для запроса необходимых данных из метрик, собранных основным элементом данных
Существует два варианта предварительной обработки данных Prometheus:
- Шаблон Prometheus - используется в обычных элементах данных для запроса метрик Prometheus
- Prometheus в JSON - используется в обычных элементах данных и для низкоуровневого обнаружения. В этом случае запрашиваемые данные Prometheus возвращаются в формате JSON.
Настройка
Если у вас настроен основной элемент данных HTTP, вам нужно создать зависимый элемент данных, который использует шаг предобработки Prometheus:
- введите общие параметры зависимого элемента данных в форме конфигурации
- перейдите на вкладку Предобработка
- выберите шаг предобработки Prometheus (Шаблон Prometheus или Prometheus в JSON)

| Параметр | Описание | Пример |
|---|---|---|
| Шаблон | Для определения необходимого шаблона данных вы можете использовать язык запросов, который похож на язык запросов Prometheus (см. таблицу сравнения), например: <metric name> - выбрать по названию метрики {__name__="<metric name>"} - выбрать по названию метрики {__name__=\~"<regex>"} - выбрать по названию метрики, совпадающему с регулярным выражением {<label name>="<label value>",...} - выбрать по названию метки {<label name>=\~"<regex>",...} - выбрать по имени метки, совпадающему с регулярным выражением {__name__=\~".*"}==<value> - выбрать по значению метрики Или сочетание вышеперечисленного: <metric name>{<label1 name>="<label1 value>",<label2 name>=\~"<regex>",...}==<value> Значением метки может быть любая последовательность символов UTF-8, но символы обратной косой черты, двойных кавычек и перевода строки должны быть экранированы как \\, \" и \n соответственно; другие символы не должны быть экранированы. |
wmi_os_physical_memory_free_bytes cpu_usage_system{cpu="cpu-total"} cpu_usage_system{cpu=\~".*"} cpu_usage_system{cpu="cpu-total",host=\~".*"} wmi_service_state{name="dhcp"}==1 wmi_os_timezone{timezone=\~".*"}==1 |
| Вывод | Определите название метки (необязательно). В этом случае возвращается значение, соответствующее названию метки. Это поле доступно только для шага //Шаблон Prometheus //. |
|
Prometheus в JSON
Данные из Prometheus могут быть использованы для низкоуровневого обнаружения. В этом случае необходимы данные в формате JSON, и опция предобработки Prometheus в JSON отформатирует их именно таким образом.
См. также: Обнаружение с использованием данных Prometheus.
Сравнение языка запросов
В следующей таблице перечислены различия и сходства между PromQL и языком запросов предобработки Prometheus в Zabbix.
| Мгновенный векторный селектор PromQL | Предобработка Prometheus в Zabbix | |
|---|---|---|
| Различия | ||
| Цель запроса | сервер Prometheus | Простой текст в формате экспозиции Prometheus |
| Возвращает | Мгновенный вектор | Значение метрики или метки (шаблон Prometheus) Массив метрик для отдельного значения в JSON (Prometheus в JSON) |
| Операторы соответствия меток | =, !=, =\~, !\~ | =, =\~ |
| Регулярное выражение, используемое в сопоставлении названия метки или метрики | RE2 | PCRE |
| Операторы сравнения | См. список | Только == (равно) поддерживается для фильтрации значений |
| Сходства | ||
| Выбор по названию метрики, равному строке | <metric name> или {__name__="<metric name>"} | <metric name> или {__name__="<metric name>"} |
| Выбор по имени метрики, которое соответствует регулярному выражению | {__name__=\~"<regex>"} | {__name__=\~"<regex>"} |
| Выбор по значению <label name>, равному строке | {<label name>="<label value>",...} | {<label name>="<label value>",...} |
| Выбор по значению <label name>, которое соответствует регулярному выражению | {<label name>=\~"<regex>",...} | {<label name>=\~"<regex>",...} |
| Выбор по значению, равному строке | {__name__=\~".*"} == <value> | {__name__=\~".*"} == <value> |