Лучшие практики¶
Переменные — это инструмент, который может как облегчить жизнь, так и превратить дашборд в тыкву, которая грузится тридцать секунд и жрёт гигабайт памяти браузера. Вот как не допустить второго.
Именование¶
Хорошее имя переменной — сразу понятно, зачем она и откуда. Плохое — var1, qwerty, tmp. Используйте префиксы, обозначающие контекст или источник:
osquery_cpu
prometheus_env
loki_level
mysql_cluster
Глядя на дашборд спустя полгода после создания, вы не вспомните, что qwe — это на самом деле environment. А prometheus_env — сразу понятно: переменная из Prometheus, про окружение.
Сортировка¶
Всегда выбирайте сортировку значений в настройках переменной, особенно для типа Query. По умолчанию Prometheus может вернуть значения в любом порядке — prod, dev, staging. Включите Alphabetical — и в дропдауне всегда будет dev, prod, staging. Мелочь, но экономит секунды при каждом открытии дашборда.
Multi-value limit¶
Установите разумный лимит. Если в дропдауне 5000 серверов, и пользователь выбирает All, Grafana подставит регулярку из 5000 имён — и Prometheus ляжет. Задайте, например, лимит в 50 значений.
Кеширование¶
Если запрос для переменной тяжёлый (например, список всех регионов из Oracle с джойнами), включите кеширование в настройках переменной. Grafana не будет перезапрашивать значения при каждом открытии дашборда.
Query type и кардинальность¶
label_values(up, instance)
Вернёт тысячи значений, если у вас тысячи серверов. Лучше добавить фильтр:
label_values(up{environment=~"$environment"}, instance)
Так список сократится до сотни. Всегда ограничивайте скоуп запроса.
Ad hoc vs Variable¶
Ad hoc — для исследовательских задач: открыл дашборд и быстро фильтруешь что угодно по любому ключу.
Variable — для предсказуемых сценариев: каждый пользователь дашборда использует один и тот же набор фильтров, которые можно назвать понятными именами.
Ad hoc даёт гибкость, Variable — скорость и предсказуемость. В хорошо спроектированном дашборде они не конкурируют, а дополняют друг друга: основные фильтры — через переменные, дополнительные исследовательские — через Ad hoc.