Skip to content
← Все статьи

Мониторинг сайта с Grafana: дашборды и алерты

Коротко. Grafana сама ничего не проверяет — она визуализирует метрики из источников вроде Prometheus, InfluxDB или Loki и отправляет алерты. Чтобы получить данные о доступности сайта, нужен экспортёр (например, blackbox_exporter) или внешний synthetic-мониторинг сайтов, который пишет метрики в TSDB. Grafana собирает из них дашборды доступности, времени ответа и SSL, а Alerting рассылает уведомления в Telegram, Slack или webhook.

Что Grafana делает, а что нет

Главное заблуждение новичков — что Grafana «мониторит сайт». Это слой визуализации и алертинга, а не агент проверки. Источник истины — база временных рядов (TSDB). Типовая связка выглядит так:

  • Сборщик метрик — blackbox_exporter, telegraf или внешний synthetic-чекер;
  • TSDB — Prometheus, VictoriaMetrics или InfluxDB хранят ряды;
  • Grafana — рисует панели и считает условия алертов;
  • Контактные точки — Telegram, Slack, email, PagerDuty, webhook.

Подключение источника данных

После установки Grafana добавьте data source через UI (Connections → Data sources) или через provisioning-файл. Декларативный подход предпочтительнее: конфиг лежит в git, разворачивается воспроизводимо.

apiVersion: 1
datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    url: http://prometheus:9090
    isDefault: true
    jsonData:
      timeInterval: "30s"
      httpMethod: POST

Дашборд доступности

Минимальный дашборд для сайта содержит четыре панели: статус (up/down), время ответа (p50/p95), код HTTP-ответа и дни до истечения SSL. Дашборды тоже храните как код — JSON-модель экспортируется и кладётся в репозиторий.

{
  "title": "Site Availability",
  "panels": [
    {
      "type": "stat",
      "title": "Up",
      "targets": [
        { "expr": "probe_success{instance=\"https://example.com\"}" }
      ],
      "fieldConfig": {
        "defaults": {
          "mappings": [
            { "type": "value", "options": { "1": { "text": "UP" }, "0": { "text": "DOWN" } } }
          ],
          "thresholds": { "steps": [
            { "color": "red", "value": null },
            { "color": "green", "value": 1 }
          ] }
        }
      }
    },
    {
      "type": "timeseries",
      "title": "Response time p95",
      "targets": [
        { "expr": "probe_http_duration_seconds{instance=\"https://example.com\"}" }
      ]
    }
  ]
}

Настройка алертов

В Grafana 9+ алерты живут в едином Unified Alerting. Правило — это запрос с условием и порогом. Хороший алерт «сайт лежит»: probe_success == 0 в течение нескольких минут, чтобы не реагировать на одиночную сетевую икоту.

Параметр алертаРекомендацияЗачем
For (длительность)2–5 минГасит ложные срабатывания на флапе
Evaluation interval30–60 секБаланс скорости и нагрузки
No Data handlingAlertingПропавшие метрики = тоже инцидент
Severity labelcritical / warningМаршрутизация по важности

Маршрутизация уведомлений

Notification policies разводят алерты по командам и каналам через label-матчинг. Критичные идут в PagerDuty и звонят дежурному, warning — в Slack-канал.

Правило хорошего алертинга: каждое уведомление должно требовать действия. Если на алерт никто не реагирует — его нужно либо чинить, либо удалять.

Где Grafana слабее внешнего мониторинга

Если blackbox_exporter живёт в том же кластере или дата-центре, что и сайт, то при падении этого ДЦ вы потеряете и сайт, и систему мониторинга одновременно. Внешний synthetic-мониторинг решает «слепое пятно»: проверка приходит снаружи, с независимой инфраструктуры.

enterno.io — внешний synthetic-мониторинг, который дополняет Grafana, а не заменяет её. Проверки HTTP / SSL / Ping / DNS идут из регионов RU / EU / US, на бесплатном тарифе доступно 10 мониторов с интервалом 5 минут (на платных — 1 минута и 30 секунд). Алерты уходят в Telegram, Slack, email, webhook, PagerDuty и Jira. Метрики можно тянуть через REST API v4 прямо в Grafana как дополнительный источник истины «снаружи».

Лучшая практика: держите внутренний blackbox внутри кластера для детальной диагностики и внешний synthetic-чекер снаружи для честного аптайма. Алерты обоих сводите в одну Grafana.

FAQ

Может ли Grafana проверять сайт без Prometheus?

Да, но всё равно нужен сборщик метрик: InfluxDB + Telegraf, Graphite или внешний synthetic-источник через API документацию. Сама Grafana HTTP-проб не делает.

Как хранить дашборды и алерты в git?

Через provisioning: YAML-файлы для data sources и notification policies, JSON-модели для дашбордов. Это «мониторинг как код» — воспроизводимо и ревьюится в PR.

Чем заменить blackbox_exporter для внешней проверки?

Внешним synthetic-мониторингом вроде enterno.io, который проверяет сайт из нескольких регионов и отдаёт метрики через API. Это закрывает слепое пятно «падение своего ДЦ».

Как избежать алерт-флуда?

Ставьте параметр For на 2–5 минут, группируйте алерты по label и используйте mute timings для запланированных работ.

Готовы добавить внешний слой? Создайте бесплатный монитор на enterno.io/monitors и подключите его метрики к Grafana через API. Полезное по теме: мониторинг как код, лучшие практики алертинга и мониторинг аптайма API.

Проверьте ваш сайт прямо сейчас

Проверить свой сайт →
Другие статьи: DevOps
DevOps
Управление логами: лучшие практики для продакшена
16.03.2026 · 141 просм.
DevOps
Prometheus blackbox-мониторинг сайтов и API
18.06.2026 · 27 просм.
DevOps
Проверки доступности в CI/CD пайплайне
18.06.2026 · 55 просм.
DevOps
Мониторинг RAG-пайплайнов
22.06.2026 · 31 просм.