Zabbix может запрашивать метрики, представленные в формате строки Prometheus.
Чтобы начать сбор данных Prometheus, необходимо настроить два элемента данных:
https://<prometheus host>/metrics
Существует два варианта предварительной обработки данных Prometheus:
Bulk processing is supported for dependent items. To enable caching and indexing, the Prometheus pattern preprocessing must be the first preprocessing step. When Prometheus pattern is first preprocessing step then the parsed Prometheus data is cached and indexed by the first <label>==<value>
condition in the Prometheus pattern preprocessing step. This cache is reused when processing other dependent items in this batch. For optimal performance, the first label should be the one with most different values.
If there is other preprocessing to be done before the first step, it should be moved either to the master item or to a new dependent item which would be used as the master item for the dependent items.
Если у вас настроен основной элемент данных HTTP, вам нужно создать зависимый элемент данных, который использует шаг предобработки Prometheus:
Параметр | Описание | Пример |
---|---|---|
Шаблон | Для определения необходимого шаблона данных вы можете использовать язык запросов, который похож на язык запросов 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.
В следующей таблице перечислены различия и сходства между 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> |