Как измерить коды состояния ответа в приложении scala SpringBoot? - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь измерить коды состояния HTTP-ответа и отправить их в графит в scala с приложением Spring Boot без использования SpringBoot Actuator.

Я использую metrics-spring из ryantenney для интеграции показателей dropwizard с SpringBoot. Он очень хорошо работает для сбора показателей таймеров, но при измерении кодов состояния я захожу в тупик.

@Timed аннотации, похоже, не измеряют его, а @ResponseMetered, похоже, не поддерживается библиотекой ryantenney.

Вот как выглядит мой код:


@RestController
@RequestMapping
class NameResource {

  @ResponseMetered(name = "endpoints.getNameInfo.status", absolute = true)
  @Timed(name = "endpoints.getNameInfo.time", absolute = true)
  @ExceptionMetered(name = "endpoints.getNameInfo.fails", absolute = true)
  @GetMapping(path = Array("names/{nameId}"), produces = Array(MediaType.APPLICATION_JSON_VALUE))
  def getNameInfo(request: HttpServletRequest, nameId: String): DeferredResult[ResponseEntity[_]] = { 
   ... 
   }
}

Мой класс конфигурации, создающий bean-компонент репортера, имеет @EnableMetrics(proxyTargetClass=true)

Есть ли какое-нибудь простое решение / обходной путь для этого?

Я нашел статью , в которой говорилось, что код состояния HTTP отслеживается для каждой конечной точки, помеченной @Timed, однако у меня это не сработало.

Здесь вот как я ожидал увидеть показатели, основанные на кодах статуса http в графите:

enter image description here

...