Как хранит Prometheus (и большинство систем метрик): ряд определяется именем метрики и набором меток. http_request_duration{method, route, status} при 5 методах, 50 маршрутах и 10 кодах — до 2 500 рядов (гистограмма умножает ещё на число бакетов). Добавили user_id с миллионом значений — до 2,5 миллиардов рядов. Каждый ряд держит индекс и данные в памяти; запросы перебирают ряды. Итог — исчерпание памяти, медленные запросы, падение мониторинга в самый нужный момент.
Правило: метки — для измерений, по которым агрегируют, с ограниченным множеством значений. Типичная ловушка — полный путь вместо шаблона маршрута: /orders/123, /orders/124… — тот же эффект.
Где высокая кардинальность к месту: логи и трейсы. Они хранят отдельные события, и поиск по id — их основной сценарий. Связка: метрика показывает, что выросла задержка на маршруте; пример трейса (exemplar) или поиск в логах по маршруту и времени даёт конкретные запросы и пользователей.
Защита: лимиты на число рядов и меток в конфигурации, алерты на рост кардинальности, ревью метрик.