Query variable

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

Query-переменная в Grafana заполняет список возможных значений путём выполнения запроса к источнику данных, что делает её наиболее динамичным и управляемым данными типом переменных Grafana. Для источника данных Prometheus Query-переменная может выполнять label_values(up, instance), чтобы получить все уникальные метки экземпляров, присутствующих в базе данных Prometheus, автоматически обновляя выпадающий список при появлении или исчезновении новых хостов. Для SQL-источников данных Query-переменная выполняет SELECT и использует первый столбец результатов в качестве списка вариантов — например, SELECT DISTINCT hostname FROM servers ORDER BY hostname. Настройка Refresh управляет тем, когда Grafana повторно выполняет запрос переменной: On dashboard load — значение по умолчанию, тогда как On time range change полезно, когда доступные значения зависят от выбранного временного окна. Query-переменные также поддерживают настройки Multi-value и Include All option, позволяя пользователям одновременно выбирать несколько значений или шаблонный All, который разворачивается во все варианты при подстановке в запросы панелей через формат $variable_name:regex или ${variable_name:pipe} в Grafana.

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

Query variable делают один дашборд обслуживающим много отфильтрованных 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 не был пустым.

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

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

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

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