Типы переменных¶
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