Получить доступ

Команда добавила в метрику задержки метку с идентификатором пользователя, чтобы «удобнее расследовать инциденты». Что произойдёт?

MiddleНаблюдаемость и SLO
Ещё спрашивают так:
  • Что такое кардинальность метрик?
  • Почему нельзя добавлять user_id в метки Prometheus?
Коротко

Каждая уникальная комбинация меток — отдельный временной ряд. Метка с user_id превращает одну метрику в миллионы рядов: растут память, диск и время запросов, система мониторинга падает.

  • В метки — значения из малого фиксированного множества: метод, код ответа, шаблон маршрута /orders/{id}
  • Уникальное (id пользователя и заказа, полный URL) — в логи и трейсы
  • Число рядов = произведение числа значений всех меток

А ещё Расследовать конкретного пользователя — по логам и трейсам с его id

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Как хранит Prometheus (и большинство систем метрик): ряд определяется именем метрики и набором меток. http_request_duration{method, route, status} при 5 методах, 50 маршрутах и 10 кодах — до 2 500 рядов (гистограмма умножает ещё на число бакетов). Добавили user_id с миллионом значений — до 2,5 миллиардов рядов. Каждый ряд держит индекс и данные в памяти; запросы перебирают ряды. Итог — исчерпание памяти, медленные запросы, падение мониторинга в самый нужный момент.

Правило: метки — для измерений, по которым агрегируют, с ограниченным множеством значений. Типичная ловушка — полный путь вместо шаблона маршрута: /orders/123, /orders/124… — тот же эффект.

Где высокая кардинальность к месту: логи и трейсы. Они хранят отдельные события, и поиск по id — их основной сценарий. Связка: метрика показывает, что выросла задержка на маршруте; пример трейса (exemplar) или поиск в логах по маршруту и времени даёт конкретные запросы и пользователей.

Защита: лимиты на число рядов и меток в конфигурации, алерты на рост кардинальности, ревью метрик.

Что хотят услышать

  • Связь меток с числом временных рядов и расчёт.
  • Последствия для системы мониторинга.
  • Что класть в метки, а что в логи и трейсы.
  • Ловушка с полным URL.

Частые ошибки

  • Метки с id, email, полным путём.
  • «У нас мало пользователей» — их станет больше.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Взрыв кардинальности: каждое уникальное сочетание меток даёт отдельный временной ряд, и система мониторинга ляжет
  • ✗Ничего страшного — метки хранятся сжато и почти не занимают места
  • ✗Метрика станет точнее, но вырастет задержка её сбора на 5-10%
  • ✗Метрика перестанет собираться, но остальные не пострадают

Что спросят дальше

  • Как тогда расследовать проблему конкретного пользователя?
  • Чем head-based семплирование трейсов отличается от tail-based?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем