17 Проверки Prometheus

Обзор

Zabbix может опрашивать метрики, представленные в формате строки Prometheus.

Чтобы начать сбор данных Prometheus, необходимо выполнить два шага:

  • настроить основной элемент данных HTTP, указывающий на соответствующую конечную точку данных, например,https://<хост prometheus>/metrics
  • настроить зависимые элементы данных, использующие опцию предварительной обработки Prometheus для запроса необходимых данных из метрик, собранных основным элементом данных

Существует два варианта предварительной обработки данных Prometheus:

  • Шаблон Prometheus - используется в обычных элементах данных для запроса метрик Prometheus
  • Prometheus в JSON - используется в обычных элементах данных и для низкоуровневого обнаружения. В этом случае запрашиваемые данные Prometheus возвращаются в формате JSON.
Массовая обработка

Для зависимых метрик поддерживается массовая обработка. Чтобы включить кэширование и индексацию, первым шагом предварительной обработки должен быть Шаблон Prometheus. Когда Шаблон Prometheus является первым шагом предварительной обработки, тогда проанализированные данные Prometheus кэшируются и индексируются по первому условию <метка>==<значение> в шаге предварительной обработки Шаблон Prometheus. Этот кэш используется повторно при обработке остальных зависимых элементов данных в этом пакете. Для достижения оптимальной производительности первая метка должна быть одной из тех, у которых наиболее разные значения.

Если другие операции предварительные обработки необходимо выполнить до первого шага, то их необходимо переместить либо в основной элемент данных, либо в новый зависимый элемент данных, который затем можно использовать в качестве основного элемента данных для этих зависимых элементов данных.

Настройка

Если у вас настроен основной элемент данных HTTP, вам нужно создать зависимый элемент данных, который использует шаг предварительной обработки Prometheus:

  • введите общие параметры зависимого элемента данных в диалоге настройки
  • перейдите на вкладку Предобработка
  • выберите шаг предобработки Prometheus (Шаблон Prometheus или Prometheus в JSON)

Следующие параметры специфичны для опции предобработки Шаблон Prometheus:

Параметр Описание Примеры
Шаблон Чтобы определить необходимый шаблон данных вы можете использовать язык запросов, который похож на язык запросов Prometheus (см. таблицу сравнения), например:
<имя метрики> - выбор по названию метрики
{__name__="<имя метрики>"} - выбор по названию метрики
{__name__=~"<регулярное выражение>"} - выбор по названию метрики, совпадающему с регулярным выражением
{<имя метки>="<значение метки>",...} - выбор по имени метки
{<имя метки>=~"<регулярное выражение>",...} - выбор по имени метки, совпадающему с регулярным выражением
{__name__=~".*"}==<значение> - выбор по значению метрики
Или сочетание вышеперечисленного:
<имя метрики>{<имя метки1>="<значение метки1>",<имя метки2>=~"<регулярное выражение>",...}==<значение>

Значением метки может быть любая последовательность символов 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, если в поле Результат обработки выбрано 'Метка'.

Примеры использования параметров

  1. Наиболее распространенный вариант использования - получение значения. Чтобы получить значение /var/db из:

node_disk_usage_bytes{path="/var/cache"} 2.1766144e+09
node_disk_usage_bytes{path="/var/db"} 20480
node_disk_usage_bytes{path="/var/dpkg"} 8192
node_disk_usage_bytes{path="/var/empty"} 4096

используйте следующие параметры:

  • Шаблон - node_disk_usage_bytes{path="/var/db"}
  • Результат обработки - выберите 'значение'
  1. Вас также может заинтересовать усреднённое значение по всем параметрам node_disk_usage_bytes:
  • Шаблон - node_disk_usage_bytes
  • Результат обработки - выберите 'сред'
  1. Хотя Prometheus поддерживает только числовые данные, часто используется обходное решение, которое также позволяет получить соответствующее текстовое значение. Это можно сделать при помощи фильтра и указания метки. Так, чтобы получить значение метки 'color' из

elasticsearch_cluster_health_status{cluster="elasticsearch",color="green"} 1
elasticsearch_cluster_health_status{cluster="elasticsearch",color="red"} 0
elasticsearch_cluster_health_status{cluster="elasticsearch",color="yellow"} 0

используйте следующие параметры:

  • Шаблон - elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
  • Результат обработки - выберите 'метка'
  • Метка - укажите 'color'

Фильтр (на основе числового значения '1') совпадёт с соответствующей строкой, а метка вернет описание состояния работоспособности (в настоящий момент 'green'; но возможны также 'red' или 'yellow').

Prometheus в JSON

Данные из Prometheus можно использовать для низкоуровневого обнаружения. В этом случае данные необходимы в формате JSON, и опция предобработки Prometheus в JSON вернет их в нужном формате.

Для получения более подробных сведений смотрите Обнаружение с использованием данных Prometheus.

Сравнение языка запросов

В следующей таблице перечислены различия и сходства между PromQL и языком запросов предобработки Prometheus в Zabbix.

Мгновенный векторный селектор PromQL [en] Предобработка Prometheus в Zabbix
Различия
Цель запроса Сервер Prometheus Простой текст в формате представления Prometheus
Возвращает Мгновенный вектор Значение метрики или метки (Шаблон Prometheus)
Массив метрик для одиночного значения в JSON (Prometheus в JSON)
Операторы сопоставления меток =, !=, =~, !~ =, !=, =~, !~
Регулярное выражение, используемое при сопоставлении метки или имени метрики RE2 PCRE
Операторы сравнения Смотрите список [en] Только == (равно) поддерживается для фильтрации значений
Сходства
Выбор по названию метрики, равному строке <имя метрики> или {__name__="<имя метрики>"} <имя метрики> или {__name__="<имя метрики>"}
Выбор по имени метрики, которое соответствует регулярному выражению {__name__=~"<регулярное выражение>"} {__name__=~"<регулярное выражение>"}
Выбор по значению <имя метки>, равному строке {<имя метки>="<значение метки>",...} {<имя метки>="<значение метки>",...}
Выбор по значению <имя метки>, которое соответствует регулярному выражению {<имя метки>=~"<регулярное выражение>",...} {<имя метки>=~"<регулярное выражение>",...}
Выбор по значению, равному строке {__name__=~".*"} == <значение> {__name__=~".*"} == <значение>