Zabbix может опрашивать метрики, представленные в формате строки Prometheus.
Чтобы начать сбор данных Prometheus, необходимо выполнить два шага:
https://<хост prometheus>/metrics
Существует два варианта предварительной обработки данных Prometheus:
Для зависимых метрик поддерживается массовая обработка. Чтобы включить кэширование и индексацию, первым шагом предварительной обработки должен быть Шаблон Prometheus. Когда Шаблон Prometheus является первым шагом предварительной обработки, тогда проанализированные данные Prometheus кэшируются и индексируются по первому условию <метка>==<значение>
в шаге предварительной обработки Шаблон Prometheus. Этот кэш используется повторно при обработке остальных зависимых элементов данных в этом пакете. Для достижения оптимальной производительности первая метка должна быть одной из тех, у которых наиболее разные значения.
Если другие операции предварительные обработки необходимо выполнить до первого шага, то их необходимо переместить либо в основной элемент данных, либо в новый зависимый элемент данных, который затем можно использовать в качестве основного элемента данных для этих зависимых элементов данных.
Если у вас настроен основной элемент данных HTTP, вам нужно создать зависимый элемент данных, который использует шаг предварительной обработки Prometheus:
Следующие параметры специфичны для опции предобработки Шаблон 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, если в поле Результат обработки выбрано 'Метка'. |
Примеры использования параметров
/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"}
node_disk_usage_bytes
:node_disk_usage_bytes
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
Фильтр (на основе числового значения '1') совпадёт с соответствующей строкой, а метка вернет описание состояния работоспособности (в настоящий момент 'green'; но возможны также 'red' или 'yellow').
Данные из 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__=~".*"} == <значение> |