In this tutorial, we’ll walk through installing and starting an instance of Zipkin tracing system on Ubuntu / Debian / CentOS Linux distributions. Zipkin is a distributed tracing system designed to help you gather timing data needed to troubleshoot latency problems in microservice architectures. It manages both the collection and lookup of this data. Its design is based on the Google Dapper paper.
There are three options of running Zipkin tracing system:
- Using Java (jar file)
- Running in Docker Container
- Running from source.
In this guide, we will consider the first two options – Using Java and Docker. So let’s get started.
Install Zipkin distributed tracing system using Docker
The easiest and quickest way of running Zipkin is via Docker.
Once Docker is installed, spin a Zipkin Docker container.
docker run -d -p 9411:9411 openzipkin/zipkin
Install Zipkin distributed tracing system using Java
This method will use distributed Java jar file to run Zipkin tracing system on Ubuntu / Debian and CentOS system.
Step 1: Install Java
Install Java on Debian / Ubuntu
sudo apt-get update
sudo apt-get install -y default-jdk jq vim
Install Java on CentOS 7:
sudo yum -y install epel-release
sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel jq vim
sudo alternatives --config java
Step 2: Install Zipkin on Ubuntu / Debian / CentOS
Once you have Java 8 or higher installed, fetch the latest release of Zipkin as a self-contained executable jar:
curl -sSL https://zipkin.io/quickstart.sh | bash -s
To run Zipkin, just execute the command:
$ java -jar zipkin.jar
Step 3: Configure Systemd
Running Zipkin with
Move jar file to
sudo mkdir /opt/zipkin
sudo mv zipkin.jar /opt/zipkin
1.Start by creating a system group for the user:
sudo groupadd -r zipkin
sudo useradd -r -s /bin/false -g zipkin zipkin
sudo chown -R zipkin:zipkin /opt/zipkin
2. Create Systemd Service
We can now create a systemd service file to manage our application.
sudo vim /etc/systemd/system/zipkin.service
It will have content like below:
# Zipkin System Service [Unit] Description=Manage Java service Documentation=https://zipkin.io/ [Service] WorkingDirectory=/opt/zipkin ExecStart=/usr/bin/java -jar zipkin.jar User=zipkin Group=zipkin Type=simple Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
Memory limits can be set like this:
ExecStart=/bin/java -Xms128m -Xmx256m -jar zipkin.jar
-Xmx256m are used to set the minimum and maximum memory that the application can use.
3. Inform systemd about the new service addition.
sudo systemctl daemon-reload
4. Once reloaded, start the service
sudo systemctl start zipkin.service
5. To check the status, use:
$ sudo systemctl status zipkin.service
● zipkin.service - Manage Java service
Loaded: loaded (/etc/systemd/system/zipkin.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2019-04-06 06:35:18 UTC; 8s ago
Main PID: 6034 (java)
└─6034 /bin/java -jar zipkin.jar
See screenshot below.
Step 4: Access Zipkin Web UI
Zipkin provides a nice interface for viewing traces based on service, time, and annotations. Browse
Note: There is no built-in authentication in the UI. Zipkin UI can be secured by running it behind an authenticating proxy like Apache HTTPD, Nginx. Check running Zipkin behind Apache reverse proxy notes.
Step 5: Configure Tracers and Instrumentation
You have installed and Configured Zipkin, the last requirement is the configuration of your Applications for instrumentation. Check the Instrumentation documentation for how to guides. There are other useful topics on Zipkin Docs.