Переменные и шаблоны
Тема дорожной карты · Grafana
Переменные — одна из самых мощных функций Grafana, обеспечивающая динамичные и многократно используемые дашборды, адаптирующиеся к выбору пользователя без необходимости создавать отдельные копии дашборда для каждого окружения, хоста или сервиса. Переменная Grafana определяется в Dashboard settings > Variables и отображается в виде интерактивного выпадающего списка (или мультиселекта, или текстового поля) в верхней панели дашборда; когда зритель меняет выбор, каждая панель, ссылающаяся на переменную, повторно выполняет запрос с новым значением. Переменные ссылаются в запросах через синтаксис $variable_name или ${variable_name:option} — например, PromQL-запрос up{job="$job"} автоматически фильтрует метрики по заданию, выбранному пользователем. Grafana поддерживает несколько типов переменных: Query (значения заполняются из запроса к источнику данных), Custom (статический список, заданный вручную), Interval (значения группировки времени: 1m, 5m, 1h), Text box (произвольный ввод пользователя) и Constant (фиксированное значение, удобное для параметризации провизионируемых дашбордов). Комбинирование нескольких переменных — включая цепочечные переменные, где варианты одной зависят от выбранного значения другой, — позволяет строить сложные интерфейсы фильтрации, масштабирующиеся до сотен хостов или сервисов без дублирования JSON дашборда.
Как это работает
Переменные и шаблоны делают один дашборд обслуживающим много отфильтрованных 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).