Ответ
Время хранения метрик определяется балансом между стоимостью хранения, производительностью запросов и бизнес-требованиями. Основные факторы:
1. Конфигурация TSDB (Time-Series Database):
- Prometheus: Параметр
--storage.tsdb.retention.time(по умолчанию 15d). - VictoriaMetrics: Настройки
retentionPeriodв конфигурации. - Mimir/Thanos: Политики хранения задаются правилами (rules) для долгосрочного хранения.
2. Стратегия агрегации (Downsampling):
- Краткосрочно (7-15 дней): Хранятся "сырые" (raw), высокодетализированные метрики (например, с интервалом 15с).
- Долгосрочно (1-3 года): Хранятся агрегированные данные (например, средние/перцентили за 5 минут или час). Это резко сокращает объём данных.
3. Ресурсы и стоимость:
- Объём хранилища: Прямо влияет на срок. Рассчитывается по формуле:
объём = (метрики × тэги × интервал) × время. - Тип хранилища: Использование объектных хранилищ (S3, GCS) через Thanos или Mimir значительно дешевле, чем локальный SSD, что позволяет хранить данные годами.
4. Бизнес- и регуляторные требования:
- SLA/SLO отчетность: Требует хранения данных за 1-3 месяца для расчёта доступности.
- Аудит и анализ трендов: Может требовать хранения за 1+ год.
- Инциденты: Для postmortem-анализа нужны детальные данные за период до инцидента.
Пример конфигурации Prometheus для многоуровневого хранения:
# prometheus.yml
storage:
tsdb:
retention: 15d # Хранение детальных данных 15 дней
# Использование remote_write для отправки в долгосрочное хранилище (Mimir)
remote_write:
- url: http://mimir:9090/api/v1/push
queue_config:
capacity: 5000
max_shards: 50
Практика: Мы настраиваем retention на 30 дней для сырых данных в Prometheus и отправляем все метрики в Mimir с политикой хранения 2 года для агрегированных данных (разрешение 5 минут).