Как отследить ответ API контроллера пружины в храбром объекте трассировки - PullRequest
0 голосов
/ 29 мая 2019

Мы используем теги span на основе аннотаций для тегирования значений метода и запроса объекта в контроллере. Мы видели два поведения

  • При возникновении ошибки или ошибки объект трассировки во время выполнения получает статус http 500 и ожидаемое сообщение об ошибке.
  • При успешном вызове API в объекте span не отображается тег кода состояния http, который должен быть 200 ok.

Мы не можем включить объект ответа API в span. Вызов API-контроллера выглядит так:

  @PostMapping(path = "/{reuqestParam}/submit")
  @ContinueSpan(log = "submit")
  public IngestionResponse submit(final InputStream inputStream,
      @SpanTag("reuqestParam") @PathVariable String reuqestParam,
      @SpanTag("HttpHeaders") @RequestHeader HttpHeaders httpHeaders) {
    LOGGER.info("[Upload to Stream]: Begin");
    final IngestionResponse ingestionResponse = ingestionService
        .ingestInputStream(inputStream, reuqestParam, httpHeaders);
    LOGGER.info("[Upload to Stream]: Completed");
    return ingestionResponse;
  }

Объект Span содержит параметр параметра / имя метода, но отсутствует код состояния HTTP и объект ответа. Нам нужно захватить обе информации независимо от того, был ли успешным или неудачным API.

1 Ответ

1 голос
/ 29 мая 2019

Вам нужно будет создать экземпляр HttpServerParser, переопределяющий этот компонент: https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceHttpAutoConfiguration.java#L109

Причина задокументирована в реализации по умолчанию: https://github.com/apache/incubator-zipkin-brave/blob/master/instrumentation/http/src/main/java/brave/http/HttpParser.java#L75...L94

Вы должны иметь возможность переопределить это с минимальными изменениями

...