覆盖Spring Cloud Sleuth跟踪ID格式

时间:2018-08-24 00:00:16

标签: spring-boot spring-cloud-sleuth

我们正在考虑利用Spring Cloud Sleuth进行分布式跟踪,并且我们已经在POC上进行了研究。似乎是一个很好的解决方案,可以直接使用。

尽管有一个后续问题:

我们使用随机UUID与64位ID作为跟踪ID。我们知道可以将自定义标头(例如新的跟踪ID)与sleuth标头一起添加,但是是否可以覆盖slueth的默认跟踪ID格式?我们仔细阅读了文档,也许传播是 要走的路。这样做的人能为我们指明正确的方向吗?我们将不胜感激。

我们正在使用使用勇敢库的最新版本2.0.1。

任何帮助/指针将不胜感激。

谢谢, GK

1 个答案:

答案 0 :(得分:0)

您可以做的是在另一个字段中生成ID,并将其进一步传播。查看文档https://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#_propagating_extra_fields

的这一部分
  

52.1传播额外的字段有时您需要传播额外的字段,例如请求ID或备用跟踪上下文。对于   例如,如果您处于Cloud Foundry环境中,则可能需要   传递请求ID,如以下示例所示:

     

///初始化构建器时,定义要添加的额外字段   传播Tracing.newBuilder()。propagationFactory(
  ExtraFieldPropagation.newFactory(B3Propagation.FACTORY,   “ x-vcap-request-id”));

     

//稍后,您可以标记该请求ID或在日志关联中使用它   requestId = ExtraFieldPropagation.get(“ x-vcap-request-id”);你可以   还需要传播您未使用的跟踪上下文。对于   例如,您可能处于Amazon Web Services环境中,但不是   向X-Ray报告数据。为了确保X射线可以正确共存,   传递其跟踪标头,如以下示例所示:

     

tracingBuilder.propagationFactory(
  ExtraFieldPropagation.newFactory(B3Propagation.FACTORY,   “ x-amzn-trace-id”)); [提示]在Spring Cloud Sleuth中,所有元素   跟踪构建器Tracing.newBuilder()被定义为bean。所以如果你   想要传递一个自定义的PropagationFactory,足够您   创建该类型的bean,然后将其设置在Tracing bean中。