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

Типы переменных

Grafana поддерживает не один, не два, а целых семь типов переменных. Каждый решает свою задачу.

Custom (вручную)

Значения вбиваете руками через запятую. Самый простой тип.

Environment: dev, staging, prod

Три значения — три варианта в дропдауне. Идеально, когда список фиксирован: окружения, регионы, приоритеты.

Query (запрос)

Значения подтягиваются из источника данных. Самый мощный тип.

label_values(up, job)

Этот запрос говорит Prometheus: «Верни все уникальные значения лейбла job среди метрик up». Grafana получит список, например: api, worker, scheduler, frontend — и превратит его в дропдаун.

Можно использовать для любого источника данных: SQL-запросы, запросы к Elasticsearch, к Loki — везде, где есть каталог значений.

Запрос не обязан возвращать только значения метаданных. Можно, например, сделать label_values(up{environment="$env"}, job) и получить список джобов, отфильтрованных по окружению. Так рождаются цепочки переменных — об этом в следующей главе.

Interval (интервал)

1m, 5m, 10m, 30m, 1h

Переменная типа Interval подставляет значение в опцию Min Interval у панели. Выбираете 5m — и панель обсчитывает данные с шагом 5 минут. Выбираете 1m — получаете более детальную картинку. Незаменимо для аналитических дашбордов, где нужно переключаться между «посмотреть тренд за месяц» и «увидеть пики за последний час».

Data source (источник данных)

Prometheus-Prod, Prometheus-Staging, PostgreSQL-Main

Переключает не просто значение, а весь источник данных. Одна и та же панель может смотреть в продуктовый Prometheus или в тестовый. Один дашборд на два кластера. Но осторожно: схема данных должна совпадать — если в продуктовом Prometheus метрика называется http_requests_total, а в тестовом http_requests_count, панели сломаются.

Constant (константа)

portal_id = 42

Скрытая переменная. Пользователь её не видит в дропдауне, но она подставляется во все запросы. Удобно, когда нужно «зашить» контекст в дашборд: например, portal_id=42, чтобы ссылки из дашборда вели в нужный портал. Меняете константу — меняются все ссылки.

Text box (поле ввода)

Пользователь может ввести произвольный текст. Используется для поиска по логам: ввёл часть сообщения об ошибке — и панель с логами отфильтровалась. Или для фильтрации по любому свободному критерию.

Ad hoc filters (динамические фильтры)

Особый тип: пользователь сам выбирает ключ и значение прямо на панели дашборда. Например, ключ — status, значение — 500. В отличие от обычной переменной, Ad hoc фильтр добавляется в запрос «на лету», не требуя переопределять переменную. Удобно для исследования данных: открыл дашборд и фильтруешь что хочешь, не заходя в настройки.

Однако Ad hoc — это фильтр для всей страницы, а не для конкретной панели. Если нужно, чтобы фильтр применялся только к одной панели, лучше использовать обычную переменную типа Query.

Совет по выбору

  • Фиксированный список значений → Custom
  • Значения из источника данных → Query
  • Интервал агрегации → Interval
  • Переключение между источниками → Data source
  • Скрытый контекст → Constant
  • Свободный поиск → Text box
  • Исследовательские фильтры → Ad hoc filters