Как измерить таймер для параллельной работы, запускаемой с использованием конечной точки http

Итак, у нас есть приложение, в котором конечная точка http запускает асинхронное задание. При запуске задания создается идентификатор задания, и все методы и вещи используют его для корреляции. Мы пытаемся использовать таймер для определения времени загрузки http третьей стороне в последовательности выполнения задания. Поэтому в нашем методе мы создаем новый таймер с использованием реестра и присваиваем ему идентификатор задания в качестве тега. Остальные вещи такие же, как указано в документации, мы используем обертку над вызываемым и делаем нашу работу. Данные экспортируются в новую реликвию.

Как только работа заканчивается, данные видны в новой реликвии и прометеи и справа от нее. Но я обнаружил, что через некоторое время значения таймера обнуляются. Таким образом, значения процентилей, такие как 95% и avg и 99%, становятся равными нулю как в прометее, так и в новой реликвии. То, что я понял, что микрометр очищает значения, поскольку он ожидает, что счетчики будут более глобальными для приложения и каждого http-запроса или выполнения задания для обновления одних и тех же счетчиков. Но в нашем случае это не так. Мы хотим делать статистику за один запуск работы, чтобы мы могли видеть статистику и события в новой реликвии и все.

Это невозможно в микрометре или я делаю что-то не так?

1 ответ

Я думаю, что вы ищете распределенную систему трассировки, такую ​​как Zipkin, а не систему сбора метрик. Zipkin и т. Д. Оптимизированы для понимания влияния задержек подсистем в рамках конкретного запроса.

Узнайте больше здесь о разнице между метриками и трассировкой.

Обратите внимание, что сама спецификация Prometheus требует затухания квантильных значений.

Другие вопросы по тегам