Хранение и визуализация: ClickHouse, Grafana, Prometheus, Jaeger/Tempo

↑ 7.2 Observability: логи, метрики, трейсинг, OpenTelemetry · ← Предыдущая · → Следующая

Желательно~3 мин чтенияУровень: senior

Зачем это на собесе

Какие хранилища подходят под какие сигналы и как строят дашборды.

Объяснение

СигналХранилищеВизуализация
МетрикиPrometheus (pull), VictoriaMetrics, Mimir (долгое хранение)Grafana
ЛогиLoki (индексирует только метки), Elasticsearch/OpenSearch, ClickHouseGrafana, Kibana
ТрейсыTempo (объектное хранилище), Jaeger (Elasticsearch/Cassandra), ClickHouseGrafana, Jaeger UI
ПрофилиPyroscope, ParcaGrafana

Prometheus: собирает метрики по HTTP (/metrics), язык запросов PromQL.

sum(rate(http_server_request_duration_seconds_count{status=~"5.."}[5m])) / sum(rate(http_server_request_duration_seconds_count[5m]))   # доля ошибок
histogram_quantile(0.95, sum by (le) (rate(http_server_request_duration_seconds_bucket[5m])))                                            # p95

ClickHouse как единое хранилище логов/трейсов/метрик (например, SigNoz, HyperDX, Uptrace): колоночное сжатие и быстрые агрегаты по огромным объёмам.

Grafana: дашборды, алерты, связь сигналов (переход от метрики к трейсу через exemplars, от лога к трейсу по trace_id).

Хорошие дашборды: по методу RED для сервисов и USE для ресурсов (см. Метрики и SLO: RED, USE, алерты), ссылки на runbook.

Нюансы и подводные камни

  • Кардинальность меток в Prometheus — главная причина падений.
  • Retention и стоимость хранения: горячие и холодные данные, агрегирование (recording rules).
  • Дашборд без вывода — украшение: каждому графику нужен вопрос, на который он отвечает.
  • Хранилище и агент сбора надо мониторить отдельно.

Практика

  1. Соберите стек Prometheus + Grafana + Tempo + Loki в Docker Compose.
  2. Постройте RED-дашборд сервиса.
  3. Настройте переход от метрики к трейсу и логу.

Вопросы с ответами

Связанные темы