我们正在考虑利用Spring Cloud Sleuth进行分布式跟踪,并且我们已经在POC上进行了研究。似乎是一个很好的解决方案,可以直接使用。
尽管有一个后续问题:
我们使用随机UUID与64位ID作为跟踪ID。我们知道可以将自定义标头(例如新的跟踪ID)与sleuth标头一起添加,但是是否可以覆盖slueth的默认跟踪ID格式?我们仔细阅读了文档,也许传播是 要走的路。这样做的人能为我们指明正确的方向吗?我们将不胜感激。
我们正在使用使用勇敢库的最新版本2.0.1。
任何帮助/指针将不胜感激。
谢谢, GK
答案 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中。