Управление кардинальностью

Что такое cardinality

Количество уникальных комбинаций label-значений. Каждая комбинация = отдельный time series в TSDB. 10k series — ничего, 1M — больно, 10M — VM падает.

Главные источники взрыва

  1. user_id / session_id в лейблах — тысячи юзеров × N других лейблов = миллионы series
  2. HTTP path без templating/users/123/orders вместо /users/:id/orders
  3. Timestamps в лейблах — никогда

Как находить

GET /api/v1/orgs/:slug/metrics

Затем по подозрительной метрике:

GET /api/v1/orgs/:slug/metrics/:name/labels

Если значений > 1000 на label — это red flag.

Лечение

  • Templating URL path (/users/:id/...)
  • Drop labels на агенте через include/exclude конфигурацию
  • Перенести user_id в logs, не в metrics