简体   繁体   中英

Distributed tracing for cloud native applications

I am building microservices using Spring Boot for building microservices and Kubernetes for implementing the microservices patterns. In this regards, I am looking for alternate for Spring cloud sleuth. What options do I have to replace Sleuth for distributed tracing. The idea here is to inject the timestamp, trace and span outside of the spring boot application as a sidecar container.

Have you explored Jaeger?

https://landscape.cncf.io/card-mode?category=tracing&grouping=category has a nice list you may want to start with.

In my mind, decision on tracing depends on whether you need it as a sidecar (Jaeger like) or within the application (Sleuth like). I prefer the sidecar as the tracing gets executed as a cross cutting concern without dependency on the language or framework. Maybe use that with a library like Open Telemetry to introduce custom spans if I need to. The other trouble with Sleuth is its tight coupling with B3 headers (ofcourse can override by coding our own propagation class- but do I really want to do that?) while in our org we go with completely different headers - overriding this default is not configurable in Sleuth!

Echoing the previous answer suggesting Jaeger. You should also look at the OpenTelemetry Java instrumentation. The cloud sleuth API is also supported by the Java instrumentation in OpenTemeletry. The auto instrumentation will work outside of the application code, but it still needs to run inside the JVM. There is no way to do distributed tracing without instrumenting the code, hence a sidecar doesn't work for generating span data.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM