Ответ
Метрики, как временные ряды данных, хранятся в специализированных Time-Series Databases (TSDB), оптимизированных для записи и чтения последовательностей значений с временными метками.
Популярные TSDB в экосистеме DevOps:
| Система | Тип | Ключевые особенности |
|---|---|---|
| Prometheus | Pull-модель, standalone TSDB | Встроенное хранилище (локальный SSD), мощный язык запросов PromQL, активно развиваемая экосистема. Для долгосрочного хранения требуется связка с Thanos/Cortex/VictoriaMetrics. |
| VictoriaMetrics | Drop-in замена/расширение Prometheus | Высокая производительность и эффективное использование памяти, совместимость с PromQL, встроенная долгосрочное хранение. |
| InfluxDB | Push-модель (чаще), standalone | Свой язык запросов Flux/InfluxQL, акцент на high-throughput, коммерческая и open-source версии. |
| TimescaleDB | Расширение PostgreSQL | Использует реляционную модель, SQL для запросов, хороша при необходимости JOIN с бизнес-данными. |
| M3DB (Uber), Thanos, Cortex | Распределённые системы хранения | Решения для масштабирования и глобальной агрегации метрик, часто используются как бэкенд для Prometheus. |
Типичный стек на основе Prometheus:
- Сбор: Prometheus
scrape-ит метрики с экспортеров (node_exporter, application metrics). - Краткосрочное хранение: Локальное TSDB Prometheus (удерживает данные 15-30 дней).
- Долгосрочное хранение: VictoriaMetrics или Thanos Object Storage (S3) для хранения лет истории.
- Визуализация: Grafana, подключающаяся к Prometheus/VictoriaMetrics как источнику данных.
Пример метрики в формате Prometheus:
# TYPE http_requests_total counter
http_requests_total{method="POST", handler="/api", status="200"} 2547
http_requests_total{method="GET", handler="/health", status="200"} 12345