Ответ
Grafana — это open-source платформа для визуализации и анализа временных рядов, которая стала стандартом де-факто в DevOps для создания операционных и бизнес-дашбордов. Её основная сила — универсальность (подключение к десяткам источников данных) и гибкость визуализации.
Как я применяю Grafana в работе:
-
Единый источник истины для мониторинга: Подключаю к одному дашборду данные из разных систем:
- Infrastructure: Метрики из Prometheus (CPU, memory, disk I/O с Node Exporter).
- Application: Кастомные метрики приложений (RPS, latency, error rates), также из Prometheus.
- Logs: Агрегированные логи из Loki или Elasticsearch (например, количество ошибок по сервисам).
- Business Metrics: Данные из PostgreSQL или Google BigQuery (количество регистраций, транзакций).
-
Создание дашбордов для разных команд:
- Для SRE/DevOps: Дашборды с детальным состоянием инфраструктуры, потреблением квот, статусом алертов.
- Для разработчиков: Дашборды по конкретным сервисам с метриками RED (Rate, Errors, Duration) и SLO.
- Для бизнеса: Высокоуровневые дашборды с ключевыми бизнес-показателями (KPI).
-
Настройка алертинга: Использую встроенную систему алертов Grafana для метрик, где Prometheus Alertmanager не подходит (например, для данных из БД). Настраиваю уведомления в Slack, Telegram и PagerDuty.
Пример панели для мониторинга микросервиса (схема PromQL):
-- Rate запросов в секунду
sum(rate(http_requests_total{service="api-gateway", method="POST"}[5m]))
-- 95-й перцентиль задержки
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{service="cart-service"}[5m])) by (le))
-- Error rate (5xx)
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m]))
Ключевые практики:
- Дашборды как код: Хранение конфигураций дашбордов в JSON в Git, развертывание через CI/CD или утилиты вроде
grafana-cli. - Использование переменных (Variables): Создание динамических дашбордов, где можно выбрать
environment=prod,service=payment, и все панели автоматически обновятся. - Annotation: Добавление на графики отметок о деплоях (из GitLab CI/CD) или инцидентах, чтобы видеть корреляцию между изменениями и метриками.