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 со своей конфигурацией:
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 будет собирать логи с подов и отправлять в Loki.
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)