Кардинальность: почему она кладёт Prometheus и как найти виновную метку
Кардинальность — число активных временных серий, и она главный ограничитель Prometheus. Каждая серия держит в памяти head-чанк и запись в индексе, поэтому потребление растёт линейно с числом серий, а не с объёмом данных: сервер с миллионом серий съедает единицы гигабайт независимо от того, каждые 15 секунд туда пишут или каждые 5 минут. Взрыв происходит не постепенно — его вызывает одна метка с неограниченным набором значений: идентификатор пользователя, полный URL с параметрами, текст ошибки, версия образа в CI. Серии перемножаются: метрика с пятью метками по десять значений даёт сто тысяч серий. Диагностика начинается со страницы /tsdb-status, которая прямо показывает топ метрик и меток по числу серий, дальше — count by (__name__) и count(count by (метка) (метрика)). Лечение — либо убрать метку через metric_relabel_configs с labeldrop, либо починить инструментирование, сведя значение к конечному набору.