ТЕХНОЛОГИИ

От медленного histogram bucket к trace через exemplar

В этом материале
ГЛАВНОЕ ЗА МИНУТУ

Exemplar даёт пример связанного наблюдения, а не полный список outliers. Отсутствие trace не доказывает отсутствие медленного запроса.

Histogram показывает, что задержки выросли, но не объясняет причину одного запроса. Добавлять все request IDs в labels дорого и методически неверно. Exemplar даёт другой путь: отдельное выбранное наблюдение может содержать связь с trace context, сохраняя агрегированную метрику ограниченной. Для провайдера важно проверить всю цепочку такого перехода и честно описать sampling, иначе пользователь панели примет один пример за полный журнал медленных операций.

Разделите aggregate и sample

OpenTelemetry metrics data model описывает exemplars как наблюдения с дополнительным контекстом. Они не заменяют histogram и не являются новой серией для каждого request ID. Метрика продолжает отвечать на статистический вопрос, а exemplar помогает найти конкретный пример внутри области выбранного измерения.

Назовите, какое значение связывается с trace: полная duration, first useful event либо другая определённая величина. Нельзя переходить из графика одного SLI в случайный span с похожим названием и считать связь доказанной. У наблюдения и trace должна быть понятная общая операция.

Проверьте context propagation

OpenTelemetry propagation объясняет связь распределённых операций. Для exemplar важно, чтобы в момент observation был доступен соответствующий контекст. Если measurement выполняется вне нужного scope, ссылка может отсутствовать либо относиться к другой операции, даже когда histogram записан правильно.

Сохраните безопасные trace/span identifiers, не добавляя prompt и секретные headers. Достаточно проверить связь технического события. Политика доступа к trace backend рассматривается отдельно: возможность видеть агрегированный график не обязательно должна автоматически давать доступ к любым подробным диагностическим данным.

Учтите sampling и retention

Не каждый запрос имеет сохранённый trace. Отдельно работают sampling instrumentation, политика backend и срок хранения. Поэтому отсутствие доступного trace у выбранного exemplar не доказывает, что медленной операции не было. Оно может указывать на предел наблюдаемости или несовпадающие сроки retention.

Запишите ожидаемое поведение интерфейса при недоступной детализации. Полезнее показать ограничение, чем перенаправить пользователя на несвязанный trace. Не обещайте сохранение каждого outlier только потому, что backend поддерживает exemplars и один переход успешно сработал в демонстрационном примере.

Сделайте контрольный маршрут

Synthetic fixture создаёт известную операцию с измеримой длительностью и доступным test trace. Затем проверяется запись histogram, наличие exemplar при выбранной политике и соответствие найденной операции. Все данные синтетические; настоящие запросы пользователей для проверки механизма не требуются.

Prometheus о histograms помогает определить, как читается распределение и какие ошибки возможны при агрегации. Exemplar не делает percentile точнее автоматически. Он добавляет диагностическую связь, сохраняя прежние требования к bucket resolution, cohort и единицам выбранной временной метрики.

Сохраните границы диагностики

Один медленный trace может подсказать очередь или доставку, но не объясняет всё распределение. Сначала проверьте, насколько его профиль относится к исследуемому cohort. Отдельный необычный запрос не является доказательством общей причины деградации, даже если он оказался удобным примером на dashboard.

Связанные темы — мониторинг GPU и throughput с задержками. Итог проверки — работающая связь выбранного sample с известным trace и описание её ограничений, без превращения уникальных IDs в labels и без обещаний полного tracing всей инфраструктуры.

← Все материалы