云原生应用的分布式追踪
Distributed tracing for cloud native applications
我正在使用 Spring Boot 构建微服务来构建微服务,使用 Kubernetes 来实现微服务模式。在这方面,我正在寻找 Spring 云侦探的替代品。我有哪些选项可以替换 Sleuth 以进行分布式跟踪。这里的想法是将时间戳、跟踪和跨度作为 sidecar 容器注入 spring 启动应用程序之外。
你探索过 Jaeger 吗?
https://landscape.cncf.io/card-mode?category=tracing&grouping=category 有一个不错的列表,您可能想从中入手。
在我看来,关于跟踪的决定取决于您是需要它作为 sidecar(如 Jaeger)还是在应用程序中(如 Sleuth)。我更喜欢 sidecar,因为跟踪作为横切关注点执行,而不依赖于语言或框架。如果需要,可以将它与像 Open Telemetry 这样的库一起使用来引入自定义跨度。 Sleuth 的另一个问题是它与 B3 headers 的紧密耦合(当然可以通过编写我们自己的传播代码来覆盖 class- 但我真的想那样做吗?)而在我们的组织中我们采用完全不同的方式headers - 在 Sleuth 中无法配置覆盖此默认值!
呼应之前建议 Jaeger 的答案。您还应该查看 OpenTelemetry Java 工具。 OpenTemeletry 中的 Java 工具也支持云侦探 API。自动检测将在应用程序代码之外工作,但它仍然需要 运行 在 JVM 内部。如果不检测代码就无法进行分布式跟踪,因此边车无法生成跨度数据。
我正在使用 Spring Boot 构建微服务来构建微服务,使用 Kubernetes 来实现微服务模式。在这方面,我正在寻找 Spring 云侦探的替代品。我有哪些选项可以替换 Sleuth 以进行分布式跟踪。这里的想法是将时间戳、跟踪和跨度作为 sidecar 容器注入 spring 启动应用程序之外。
你探索过 Jaeger 吗?
https://landscape.cncf.io/card-mode?category=tracing&grouping=category 有一个不错的列表,您可能想从中入手。
在我看来,关于跟踪的决定取决于您是需要它作为 sidecar(如 Jaeger)还是在应用程序中(如 Sleuth)。我更喜欢 sidecar,因为跟踪作为横切关注点执行,而不依赖于语言或框架。如果需要,可以将它与像 Open Telemetry 这样的库一起使用来引入自定义跨度。 Sleuth 的另一个问题是它与 B3 headers 的紧密耦合(当然可以通过编写我们自己的传播代码来覆盖 class- 但我真的想那样做吗?)而在我们的组织中我们采用完全不同的方式headers - 在 Sleuth 中无法配置覆盖此默认值!
呼应之前建议 Jaeger 的答案。您还应该查看 OpenTelemetry Java 工具。 OpenTemeletry 中的 Java 工具也支持云侦探 API。自动检测将在应用程序代码之外工作,但它仍然需要 运行 在 JVM 内部。如果不检测代码就无法进行分布式跟踪,因此边车无法生成跨度数据。