Grafana (Cвободная программная система визуализации данных)

⌘K

Grafana (Cвободная программная система визуализации данных)

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:

  1. Перейди в Settings → Data Sources
  2. Нажми Add data source
  3. Выбери Prometheus
  4. Укажи URL (например:
    http://prometheus:9090
    )
  5. Сохрани (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+)

  1. Создай панель → вкладка Alert
  2. Добавь условие:
avg(rate(node_load1[5m])) > 1
  1. Задай:
  • For: 2m (в течение 2 минут)
  • Severity: warning / critical
  • Contact point: Slack, email, Telegram и т.д.
  1. Сохрани и активируй

📎 Пример 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)

VPS с перспективой

Планируете VPS на год? С кодом NEWCOM получаете больше, чем рассчитывали.

Месяц в подарок
COPIED
NEWCOM COPIED