Apache Zipkin
Apache Zipkin is a distributed tracing system that helps gather timing data needed to troubleshoot latency problems in service architectures. It manages both the collection and lookup of tracing data through a collector and query service. Zipkin provides a REST API, web UI, and multiple storage backends (Cassandra, Elasticsearch, MySQL). It supports the B3 propagation format and is compatible with OpenZipkin instrumentation libraries. Originally created at Twitter, it is now maintained as an open-source project.
APIs
Apache Zipkin REST API
The Zipkin REST API v2 provides endpoints for querying trace data, service names, span names, and dependencies. Key endpoints include GET /api/v2/services (list services), GET /...
Features
Collect timing and metadata for distributed service calls with B3 propagation headers.
Web UI and REST API for searching and visualizing distributed traces with latency analysis.
Automatic service call graph generation from collected trace data.
Cassandra, Elasticsearch, and MySQL storage backends for different scale requirements.
Accepts OTLP/Zipkin spans from OpenTelemetry instrumented services.
Standard B3 trace propagation headers for distributed context passing across services.
Use Cases
Identify bottlenecks and slow service calls in distributed architectures.
Automatically discover and visualize service-to-service call graphs.
Compare trace data before and after deployments to detect performance regressions.
Follow distributed call chains to identify the root cause of errors and failures.
Integrations
Spring Boot auto-instrumentation for trace propagation and Zipkin reporting.
Java instrumentation library (Brave) for adding Zipkin tracing to Java applications.
Elasticsearch storage backend for scalable trace data storage and search.
Cassandra storage backend for high-volume trace data.
OpenTelemetry Zipkin exporter for reporting OTLP traces to Zipkin.
Kafka collector for ingesting spans from high-throughput microservice architectures.