От чего зависит время хранения метрик в системах мониторинга?

«От чего зависит время хранения метрик в системах мониторинга?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Время хранения метрик определяется балансом между стоимостью хранения, производительностью запросов и бизнес-требованиями. Основные факторы:

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 минут).