Это перевод страницы документации с английского языка. Помогите нам сделать его лучше.

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>