Метрики HTTP-запросов микрометра Spring Boot 3 не включают теги исключений и ошибок

В Spring Boot 2 моя метрика HTTP-запросов по умолчанию будет включать такие теги исключений и ошибок:

http_server_requests_seconds_count{error = "NoResourceFoundException",exception = "NoResourceFoundException",method = "POST",outcome = "SERVER_ERROR",status = "500",uri = "/my-endpoint",} 4.0

Обновившись до Spring Boot 3, я обнаружил, что вызовы API с ошибками или исключениями не заполняют эти теги.

Как я могу добавить эти теги обратно в свои показатели?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
0
256
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта функциональность была удалена в микрометре Spring Boot 3.

Поскольку поддержка наблюдаемости была переписана в Spring Boot 3.0, мы больше не можем поддерживать этот атрибут запроса, поскольку поддержка наблюдаемости встроена непосредственно в Spring Framework (а ErrorAttributes находится в Spring Boot).

https://github.com/spring-projects/spring-framework/issues/31514

Вы можете вернуть эту функциональность, добавив некоторый код в обработчик исключений.

@ExceptionHandler
public ResponseEntity<MyResponse> handle(final HttpServletRequest request, final Exception exception) {

    // This will add exception tags to your metrics
    ServerHttpObservationFilter.findObservationContext(request).ifPresent(context -> context.setError(exception));

    return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST);
}

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

Похожие вопросы

Потребитель событий на стороне сервера из весенней загрузки
Приложение имеет несколько экземпляров. Существует задание, которое будет выполняться в определенное время. как я могу заставить задание выполняться только одним экземпляром?
Как получить ответ на вызов API с помощью шаблона Rest, когда тип ответа неизвестен
Spring загрузка аннотации @Async с @Scheduled
Spring Boot Concurrency/множественные запросы, вызывающие чередование/повреждение данных в таблице базы данных с состоянием
Сопоставьте сложные DTO с Entity через Mapstruct
Очистка базы данных между тестами в тестовом контейнере Keycloak
Сохранение объекта с составным ключом JPA @ManyToOne, используемым в качестве идентификаторов, добавляет дополнительный параметр
Метод интерфейса, сгенерированный OpenApi, имеет возвращаемый тип как Object (Spring Boot 3)
Микрометр не работает при использовании в отдельных сервисах