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

Тема дорожной карты · Grafana

Цепочечные переменные — также называемые зависимыми или каскадными — это паттерн Grafana, при котором доступные варианты одной переменной фильтруются по текущему выбранному значению другой, обеспечивая иерархическую навигацию в стиле drill-down на одном дашборде. Типичный пример — дашборд инфраструктуры, где Query-переменная cluster перечисляет все кластеры Kubernetes, переменная namespace запрашивает Prometheus для получения пространств имён, отфильтрованных по $cluster, а переменная pod дополнительно фильтрует поды по $namespace — каждый уровень сужает область видимости следующего. Чтобы создать цепочечную переменную, вы ссылаетесь на значение родительской переменной в запросе дочерней — например, label_values(kube_pod_info{namespace="$namespace"}, pod) — и устанавливаете параметр Refresh дочерней переменной в значение On time range change или используете поле Depends on в Grafana 10+, чтобы повторно выполнять запрос при изменении родительской переменной. Цепочечные переменные делают дашборды компактными и удобными для пользователей: вместо множества независимых выпадающих списков пользователи навигируют по иерархии данных шаг за шагом, причём каждый выбор автоматически сужает нижестоящие фильтры. Следует осторожно подходить к глубине цепочки и кардинальности данных, поскольку каждый уровень инициирует дополнительный запрос к источнику данных, что может увеличивать время загрузки дашборда при большом количестве переменных в цепочке.

Как это работает

Цепочки переменных делают один дашборд обслуживающим много отфильтрованных view. Типы: Query (заполняется запросом — label_values(instance)), Custom (хардкод-список), Constant, Datasource (переключение источников), Interval (размер time-bucket), Text box, Ad-hoc filters. Multi-value + Include-all. Использование в запросах панелей: ${var} или $var. Repeat panel/row по переменной.

Когда применять

Всегда добавляйте хотя бы переменную instance или pod на infra-дашбордах — фильтр на один хост вместо просмотра всех 200. Переменная Interval — чтобы юзер выбирал "5m" vs "1h" агрегацию. Include all — дефолт "view everything". Дефолтные значения переменных — чтобы first-load не был пустым.

Типичные ошибки

Ловушки Цепочки переменных: запросы не учитывают определённую переменную (дашборд показывает всё независимо от фильтра — путает); значения переменной со спецсимволами не эскейплены (битые запросы); переменные обновляются на каждое взаимодействие (медленный UI).

Связанные понятия

Полезные ресурсы