如何在勇敢的跟踪对象中跟踪Spring Controller API响应

时间:2019-05-29 08:51:16

标签: spring-cloud-sleuth zipkin

我们正在使用基于注释的跨度标签来标记方法值和控制器中的请求对象。我们已经看到了两种行为

  • 发生错误或运行时异常跟踪对象时,http状态为500,并且出现预期的错误消息。
  • API调用成功后,不会在span对象中显示任何http状态代码标记(应该为200 ok)。

我们无法在跨度中包含api响应对象。 控制器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成功与否,我们都需要捕获这两个信息。