Zipkin logo

Zipkin

Trace, visualize, and troubleshoot latency across microservices

Zipkin collects distributed tracing data, lets you query by service, operation, tags, or duration, and visualizes request flows with a UI and dependency diagram.

Zipkin banner

Overview

Overview

Zipkin is a distributed tracing system that gathers timing data from instrumented services, enabling developers to query traces by service name, operation, tags, or duration. The built‑in UI presents trace details and a dependency graph that highlights request paths and error flows, helping teams pinpoint latency bottlenecks.

Deployment & Storage

Zipkin can be started instantly via a self‑contained JAR or the official Docker image. It supports multiple storage backends—including in‑memory for testing, Cassandra, and Elasticsearch—for persistent span storage. Reporting transports such as HTTP, Kafka, gRPC, RabbitMQ, and others allow flexible integration with existing pipelines. A slimmer distribution is available for faster startup when only in‑memory or Elasticsearch storage is needed.

Instrumentation

Applications must be instrumented with a Zipkin tracer or a compatible library (e.g., Brave). Once spans are emitted, Zipkin aggregates, indexes, and serves them for interactive exploration or programmatic retrieval.

Highlights

Searchable trace data by service, operation, tags, and duration
Dependency graph visualizing inter‑service calls
Multiple storage backends (in‑memory, Cassandra, Elasticsearch) and transport options (HTTP, Kafka, gRPC, etc.)
Slim distribution for fast startup and minimal footprint

Pros

  • Rich query capabilities across trace attributes
  • UI with dependency diagram aids root‑cause analysis
  • Supports many storage and transport integrations
  • Easy quick‑start via Docker or self‑contained JAR

Considerations

  • Requires instrumentation of each service
  • Full server needs Java 17+, increasing runtime overhead
  • In‑memory storage is not suitable for production workloads
  • Disabling search reduces discoverability of traces

Managed products teams compare with

When teams consider Zipkin, these hosted platforms usually appear on the same shortlist.

AWS X-Ray logo

AWS X-Ray

Trace requests through distributed and serverless apps on AWS.

Better Stack Tracing logo

Better Stack Tracing

Tracing correlated with logs and metrics for faster debugging.

Grafana Cloud Traces logo

Grafana Cloud Traces

Managed distributed tracing powered by Grafana Tempo.

Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.

Fit guide

Great for

  • Teams needing end‑to‑end latency visibility in microservice architectures
  • Organizations that already use Java‑based services and want a lightweight tracing solution
  • Environments where a dependency graph helps identify error paths
  • Projects that can provision Cassandra or Elasticsearch for persistent storage

Not ideal when

  • Applications without tracing instrumentation or unwilling to modify code
  • Deployments limited to low‑memory environments where even the slim build is too large
  • Use cases requiring out‑of‑the‑box support for proprietary messaging systems not listed
  • Teams that need a fully managed SaaS tracing service

How teams use it

Debugging high latency in a payment service

Identify slow downstream calls and visualize the call chain to pinpoint bottlenecks.

Monitoring service degradation after a deployment

Query recent traces by tag to see error rates and view affected services in the dependency diagram.

Testing new microservice locally

Run Zipkin with in‑memory storage to capture traces without external databases.

Integrating with existing Kafka pipeline

Configure services to send spans via Kafka and store them in Elasticsearch for long‑term analysis.

Tech snapshot

Java78%
TypeScript9%
JavaScript9%
Shell2%
Dockerfile1%
HTML1%

Tags

observabilitydistributed-tracingopenzipkinzipkintracing

Frequently asked questions

What Java version is required to run the Zipkin server?

The server requires at least JRE 17; the core library works with Java 8+.

Can I use Zipkin without a persistent storage backend?

Yes, the in‑memory storage works for testing, but it is not suitable for production workloads.

How do I start Zipkin quickly?

Download the self‑contained JAR via the quick‑start script or run the official Docker image on port 9411.

What transport protocols are supported for sending spans?

Spans can be reported over HTTP, Kafka, gRPC, RabbitMQ, Apache Pulsar, ActiveMQ, among others.

How can I disable the search API?

Set the environment variable SEARCH_ENABLED=false or configure StorageComponent.Builder.searchEnabled(false).

Project at a glance

Stable
Stars
17,396
Watchers
17,396
Forks
3,105
LicenseApache-2.0
Repo age13 years old
Last commit5 months ago
Primary languageJava

Last synced yesterday