github链接:https://github.com/jaegertracing/jaeger
官网:https://www.jaegertracing.io/
Jaeger: open source, end-to-end distributed tracing
Monitor and troubleshoot transactions in complex distributed systems
a Cloud Native Computing Foundation incubating project.
Uber published a blog post, Evolving Distributed Tracing at Uber, where they explain the history and reasons for the architectural choices made in Jaeger. Yuri Shkuro, creator of Jaeger, also published a book Mastering Distributed Tracing that covers in-depth many aspects of Jaeger design and operation, as well as distributed tracing in general.
Why Jaeger?
As on-the-ground microservice practitioners are quickly realizing, the majority of operational problems that arise when moving to a distributed architecture are ultimately grounded in two areas: networking and observability. It is simply an orders of magnitude larger problem to network and debug a set of intertwined distributed services versus a single monolithic application.
Problems that Jaeger addresses
It is used for monitoring and troubleshooting microservices-based distributed systems, including:
- Distributed context propagation
- Distributed transaction monitoring
- Root cause analysis
- Service dependency analysis
- Performance / latency optimization
Kubernetes and OpenShift
- Kubernetes templates: https://github.com/jaegertracing/jaeger-kubernetes
- Kubernetes Operator: https://github.com/jaegertracing/jaeger-operator
- OpenShift templates: https://github.com/jaegertracing/jaeger-openshift
Features
- Discover architecture of the whole system via data-driven dependency diagram.
- View request timeline and errors; understand how the app works.
- Find sources of latency and lack of concurrency.
- Highly contextualized logging.
-
Use baggage propagation to:
- Diagnose inter-request contention (queueing).
- Attribute time spent in a service.
-
Use open source libraries with OpenTracing integration to get vendor-neutral instrumentation for free.
Features
- OpenTracing compatible data model and instrumentation libraries
- Uses consistent upfront sampling with individual per service/endpoint probabilities
- Multiple storage backends: Cassandra, Elasticsearch, memory.
- Adaptive sampling (coming soon)
- Post-collection data processing pipeline (coming soon)
Technical Specs
- Backend components implemented in Go
- React/Javascript UI
- Supported storage backends:
- Cassandra 3.4+
- Elasticsearch 5.x, 6.x, 7.x
- Kafka
- memory storage