Короткий ответ
Prometheus хранит временные ряды метрик и умеет их агрегировать через PromQL; Grafana — это инструмент визуализации, который сам метрики не хранит, а подключается к Prometheus (и другим источникам: Loki, Elasticsearch, базам данных) как к data source и строит дашборды из результатов запросов.
Как это работает подробнее
в Grafana создаётся "Data source" с адресом Prometheus-сервера; дальше каждая панель дашборда содержит PromQL-запрос, который Grafana отправляет в Prometheus по HTTP при каждом обновлении экрана и отображает результат как график, число, таблицу и т.д.
Пример кода
event.json
{
"datasource": "Prometheus",
"targets": [
{ "expr": "rate(http_requests_total{service=\"checkout\"}[5m])" }
],
"type": "timeseries"
}Что использовать на практике
- Практика. один дашборд Grafana может одновременно показывать панели из разных источников — например, метрики из Prometheus и логи из Loki на одном экране, что удобно для корреляции во время инцидента. Grafana также поддерживает Alerting поверх тех же запросов, но управление алертами на основе Prometheus обычно удобнее вести через правила самого Prometheus и Alertmanager.
- Практика. После добавления такой панели в дашборд Grafana при каждом обновлении страницы будет выполнять этот PromQL-запрос к Prometheus и перерисовывать график скорости запросов — если Prometheus недоступен, панель покажет ошибку подключения к data source, а не "нулевые" данные.
Подводные камни
- Частые ошибки. думать, что удаление дашборда в Grafana удаляет исторические данные — на самом деле данные остаются в Prometheus, Grafana лишь визуализирует; не версионировать дашборды как код (JSON-модель дашборда) и терять настройки при случайном редактировании через UI; настраивать слишком короткий интервал авто-обновления дашборда, создавая лишнюю нагрузку на Prometheus.