Grafana — это платформа визуализации и анализа данных, которая позволяет создавать интерактивные дашборды на основе метрик, логов и событий. Она используется как ключевой интерфейс в системах мониторинга, особенно в сочетании с Prometheus, Loki, InfluxDB и другими источниками данных.
Grafana не хранит данные у себя — она работает как визуальный слой, подключаясь к внешним базам и сервисам. Её цель — предоставить операторам, разработчикам и аналитикам наглядный способ контролировать состояние систем, приложений и инфраструктуры в реальном времени.
💡 Что умеет Grafana:
- 📊 Дашборды (Dashboards)
Настраиваемые панели с графиками, таблицами, тепловыми картами, диаграммами и другими визуальными элементами. Поддерживают фильтры, переменные, автообновление и сравнение периодов. - 🔗 Множественные источники данных
Подключается к Prometheus, Loki, InfluxDB, Graphite, PostgreSQL, MySQL, ElasticSearch, Azure Monitor, CloudWatch, Tempo и другим. - 🔔 Оповещения (Alerts)
Можно задать правила с порогами: при выходе метрик за границы система отправит уведомление. Поддерживаются каналы: Slack, Telegram, email, Microsoft Teams, PagerDuty и др. - 🧩 Плагины и интеграции
Marketplace содержит готовые панели, плагины для визуализации (например, геокарты, gauge-индикаторы) и коннекторы к специфическим системам. - 🔐 Управление доступом
RBAC, LDAP, SSO, интеграции с OAuth 2.0 — можно настроить доступ по ролям, проектам и папкам.
📈 Применение:
- Наблюдение за производительностью приложений и серверов;
- Анализ логов (в связке с Grafana Loki);
- Мониторинг Kubernetes-кластеров, CI/CD пайплайнов и облачной инфраструктуры;
- Создание дашбордов для бизнес-метрик или пользовательского поведения.
Примеры популярных дашбордов:
- Node Exporter Full — мониторинг ресурсов Linux-серверов;
- Kubernetes Cluster Monitoring — визуализация состояний подов, нод и namespaces;
- MySQL Overview — состояние баз данных;
- Nginx / HAProxy — метрики доступности и трафика.
🛠 Почему Grafana выбирают:
- Открытый исходный код (AGPL);
- Лёгкая установка: Docker, бинарник или Helm в Kubernetes;
- Поддержка alerting-а и интеграций “из коробки”;
- Гибкая настройка для любого стека: DevOps, SRE, BI, безопасность.
🔗 Подключение источника данных в Grafana (Prometheus)
В интерфейсе Grafana:
- Перейди в Settings → Data Sources
- Нажми Add data source
- Выбери Prometheus
- Укажи URL (например: )
http://prometheus:9090
- Сохрани (Save & Test) — Grafana проверит соединение
🧾 Пример JSON-конфигурации простого дашборда
{ "title": "CPU Usage", "panels": [ { "type": "graph", "title": "CPU (idle %)", "targets": [ { "expr": "100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)", "legendFormat": "{{instance}}", "refId": "A" } ], "datasource": "Prometheus", "gridPos": { "x": 0, "y": 0, "w": 12, "h": 8 } } ], "timezone": "browser", "schemaVersion": 26, "version": 1, "refresh": "10s" }
🔍 Этот дашборд:
- Показывает загрузку CPU по каждому ;
instance
- Использует PromQL;
- Обновляется каждые 10 секунд.
🔔 Пример алерта на графике (Grafana v9+)
- Создай панель → вкладка Alert
- Добавь условие:
avg(rate(node_load1[5m])) > 1
- Задай:
- For: 2m (в течение 2 минут)
- Severity: warning / critical
- Contact point: Slack, email, Telegram и т.д.
- Сохрани и активируй
📎 Пример alert rule YAML (для provisioning)
apiVersion: 1 groups: - name: system-alerts rules: - uid: high-cpu title: "High CPU Usage" condition: "B" data: - refId: A relativeTimeRange: from: 300 to: 0 datasourceUid: prometheus model: expr: "100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)" interval: "" intervalFactor: 2 legendFormat: "CPU Usage" refId: A - refId: B type: classic_conditions evaluator: type: gt params: - 90 operator: and for: "2m" annotations: summary: "CPU usage > 90% for 2 minutes" labels: severity: critical
🚀 Установка Grafana с Helm и автоподключением Prometheus
1. Добавь репозиторий:
helm repo add grafana https://grafana.github.io/helm-charts helm repo update
2. Создай values.yaml
со своей конфигурацией:
values.yaml
adminUser: admin adminPassword: grafana123 datasources: datasources.yaml: apiVersion: 1 datasources: - name: Prometheus type: prometheus access: proxy url: http://prometheus-server isDefault: true dashboardProviders: dashboardproviders.yaml: apiVersion: 1 providers: - name: 'default' orgId: 1 folder: '' type: file disableDeletion: false editable: true options: path: /var/lib/grafana/dashboards dashboards: default: node-exporter: gnetId: 1860 revision: 24 datasource: Prometheus persistence: enabled: true size: 2Gi
🔍 Здесь:
- создаётся Prometheus как источник данных;
- подключается дашборд Node Exporter из Grafana.com;
- включено хранилище для сохранения данных.
3. Установи Grafana:
helm install grafana grafana/grafana -f values.yaml --namespace monitoring --create-namespace
4. Получи пароль и открой интерфейс:
kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode kubectl port-forward svc/grafana 3000:80 -n monitoring
Открой
http://localhost:3000
admin
🔁 Что получаем:
- Grafana с авторизованным доступом;
- Подключённый Prometheus;
- Готовый дашборд для мониторинга серверов;
- Возможность расширять, добавлять панели, алерты и другие источники данных.
И вот финальный шаг — развёртывание полного стека мониторинга в Kubernetes через Helm, включая:
- Prometheus (метрики)
- Alertmanager (алерты)
- Grafana (визуализация)
- Loki (логи)
- Node Exporter (метрики хостов)
- Blackbox Exporter (проверка доступности внешних сервисов)
📦 Установка полного стека мониторинга в Kubernetes
1. Добавь репозитории:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo add grafana https://grafana.github.io/helm-charts helm repo update
2. Установи Prometheus + Alertmanager + Node Exporter
helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack \ --namespace monitoring --create-namespace
📌 Этот пакет включает:
- Prometheus
- Alertmanager
- Node Exporter
- Kube State Metrics
- готовые дашборды в Grafana
3. Установи Loki (логирование)
helm upgrade --install loki grafana/loki-stack \ --namespace monitoring \ --set grafana.enabled=false \ --set promtail.enabled=true
📌
promtail
4. Установи Grafana (если не входила в предыдущий шаг)
helm install grafana grafana/grafana \ --namespace monitoring \ --set datasources."datasources\.yaml".apiVersion=1 \ --set datasources."datasources\.yaml".datasources[0].name=Prometheus \ --set datasources."datasources\.yaml".datasources[0].type=prometheus \ --set datasources."datasources\.yaml".datasources[0].url=http://kube-prometheus-stack-prometheus.monitoring.svc.cluster.local \ --set datasources."datasources\.yaml".datasources[1].name=Loki \ --set datasources."datasources\.yaml".datasources[1].type=loki \ --set datasources."datasources\.yaml".datasources[1].url=http://loki.monitoring.svc.cluster.local
5. Установи Blackbox Exporter (для проверки сайтов/портов)
helm install blackbox-exporter prometheus-community/prometheus-blackbox-exporter \ --namespace monitoring
✅ Что получится:
- Метрики: Prometheus + Node Exporter + Kube State Metrics
- Алерты: Alertmanager (готов к интеграции с email, Slack, Telegram и др.)
- Логи: Loki + Promtail
- Визуализация: Grafana с подключёнными источниками
- Проверка доступности: Blackbox (ping, HTTP, TCP)