Перейти к содержанию

Цепочки переменных

Одна переменная — уже сила. Но настоящая магия начинается, когда переменные зависят друг от друга. Выбираешь дата-центр → появляются серверы этого дата-центра. Выбираешь сервер → появляются сервисы этого сервера. Это и есть цепочка переменных.

Пример цепочки

Представьте: три дата-центра, в каждом десятки серверов, на каждом сервере — несколько приложений.

Шаг 1: Datacenter

label_values(up, datacenter)

Дропдаун: dc-east, dc-west, dc-central.

Шаг 2: Server

label_values(up{datacenter=~"$datacenter"}, instance)

Теперь запрос зависит от выбранного дата-центра. $datacenter=prague — и Grafana перестраивает список серверов только для dc-west.

Шаг 3: Application

label_values(up{datacenter=~"$datacenter", instance=~"$server"}, name)

Сужение продолжается: выбраны и дата-центр, и сервер — теперь список приложений содержит только приложения на выбранном сервере.

Цепочка выглядит так:

Datacenter  →  Server  →  Application
(3 варианта)   (зависит)   (зависит от двух)

Как настроить

На странице настройки переменной в поле Query Options задаётся регулярное выражение для фильтрации. По умолчанию — .*, берём всё. Если нужно, например, только серверы с префиксом prod-, пишем /prod-.*/.

Обязательно включите Include All option — иначе Grafana будет требовать выбрать значение до загрузки дашборда, и вы не сможете увидеть общую картину.

Активируйте Auto: off — тогда после каждого выбора в дропдауне запросы не побегут сразу, а вы дождётесь заполнения всех трёх дропдаунов и нажмёте Apply один раз.

Под капотом

Когда вы выбираете dc-west в первом дропдауне, Grafana перезапрашивает значения для второго дропдауна. Для этого она берёт запрос label_values(up{datacenter=~"$datacenter"}, instance), подставляет туда dc-west и отправляет в Prometheus. Prometheus возвращает список инстансов только для dc-west. Этот список становится вторым дропдауном. Вы выбираете server-42 из этого списка — Grafana делает то же самое для третьего дропдауна.

Каждый шаг цепочки — это полноценный запрос к источнику данных. Поэтому не делайте цепочек длиннее трёх-четырёх звеньев: каждый новый уровень добавляет задержку при загрузке дашборда. Пользователь должен нажимать Apply, но Grafana всё равно выполняет запросы для заполнения дропдаунов.

Совет

Не начинайте цепочку с переменной, у которой десять тысяч значений. Каждый дропдаун нагружает браузер при рендеринге. Если список серверов огромен — поставьте фильтр Multi-value limit и включите опцию «Hide if empty».