Zipkin is a distributed tracing system that helps gather timing data needed to troubleshoot latency problems in service architectures.
Zipkin collects trace data from instrumented applications and provides a UI for querying and analyzing that data. Users can look up traces by ID, or query based on service name, operation name, tags, and duration. The system summarizes interesting metrics such as the percentage of time spent in each service and whether operations failed. A dependency diagram shows how many traced requests passed through each application, helping identify aggregate behavior including error paths and calls to deprecated services. Applications report trace data to Zipkin through various transports including HTTP, Kafka, Apache ActiveMQ, gRPC, RabbitMQ, and Apache Pulsar. The collected data can be stored in-memory or persistently using backends such as Apache Cassandra or Elasticsearch.
Zipkin suits teams running microservice architectures who need visibility into request flows and latency bottlenecks. The project offers a slim build variant that starts faster and uses less disk space, supporting in-memory and Elasticsearch storage but omitting messaging transports like Kafka and RabbitMQ. The core library is lightweight at 155k and requires only Java 8 or later, avoiding direct dependencies on JSON libraries to prevent conflicts with application code. Most users will integrate Zipkin through existing instrumentation libraries rather than the core library directly. The server requires Java 17 or later and can be deployed as a self-contained executable jar or via Docker.
The project's issue tracker shows sustained activity focused on bug fixes, feature enhancements, and technical debt reduction.