Grafana as Code

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

«Grafana как код» — это практика определения всех ресурсов Grafana — дашбордов, источников данных, правил алертинга, политик уведомлений, команд и разрешений RBAC — в файлах с контролем версий вместо управления через веб-интерфейс, что обеспечивает воспроизводимые, проверяемые и поддающиеся аудиту развёртывания Grafana. Основные инструменты для «Grafana как код»: HTTP API Grafana, YAML-файлы провизионирования Grafana, официальный Terraform-провайдер (grafana/grafana) и библиотека Grafonnet на Jsonnet для программной генерации дашбордов. С Terraform-провайдером Grafana вы можете описывать дашборды как ресурсы grafana_dashboard в HCL, управлять источниками данных как ресурсами grafana_data_source и применять изменения через стандартный рабочий процесс terraform apply, который предварительно показывает и принудительно устанавливает желаемое состояние Grafana. «Grafana как код» органично вписывается в GitOps-конвейеры: pull request'ы служат воротом проверки для изменений дашбордов, CI-конвейеры валидируют и линтируют JSON или Jsonnet, а слияния в основную ветку инициируют автоматическое развёртывание в экземпляр Grafana. Переход на «Grafana как код» устраняет расхождения дашбордов между окружениями, упрощает откат неудачных изменений через git revert и позволяет командам относиться к конфигурации мониторинга с той же строгостью, что и к коду приложения.

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

Grafana as Code: YAML-файлы в /etc/grafana/provisioning/ декларируют data sources (datasources/*.yaml), дашборды (dashboards/*.yaml + пути к JSON), alerting-rules, notification policies, плагины. Читаются при старте Grafana; изменения требуют kill -HUP или рестарт. В паре с version control: dashboards-as-code. Инструменты: grafonnet (Jsonnet), grafana-foundation-sdk (Go/Python) или просто JSON. Helm chart kube-prometheus-stack provisions автоматически.

Когда применять

Provision data sources + критичные дашборды с первого дня — ручной setup невоспроизводим. Дашборды в git как JSON; auto-import через provisioning. Grafonnet или templating-слой — если много похожих дашбордов (per-service). Для очень динамических setup также работают Grafana HTTP API + Terraform-провайдер.

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

Ловушки Grafana as Code: отредактировали дашборд в UI + provisioning откатывает на следующем рестарте (путает юзеров); JSON-дашборды с ручными правками вне исходника (дрейф); provisioning-пути внутри Grafana-контейнера без persistent volume (теряются при рестарте).

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

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