【发布时间】:2019-05-29 08:51:16
【问题描述】:
我们使用基于注解的跨度标签来标记控制器中的方法值和请求对象。我们已经看到了两种行为
- 当出现错误或运行时异常时,跟踪对象获取 http 状态 500 和预期的错误消息。
- 当 API 调用成功时,它不会在 span 对象中显示任何 http 状态代码标记,应该是 200 ok。
我们无法在 span 中包含 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 成功或失败,我们都需要捕获这两个信息。
【问题讨论】:
标签: spring-cloud-sleuth zipkin