This project is configured to run docker containers using docker-compose. Note that the default configuration requires docker-compose 1.6.0+ and docker-engine 1.10.0+.
To start the default docker-compose configuration, run:
$ docker-compose up
View the web UI at $(docker ip):9411.
To see specific traces in the UI, select "zipkin-server" in the dropdown and then click the "Find Traces" button.
To start a smaller and faster distribution of zipkin, run:
$ docker-compose -f docker-compose-slim.yml up
This starts in-memory storage. The only other supported option for slim is Elasticsearch:
$ docker-compose -f docker-compose-slim.yml -f docker-compose-elasticsearch.yml up
The default docker-compose configuration defined in docker-compose.yml
is
backed by MySQL. This configuration starts zipkin
, zipkin-mysql
and zipkin-dependencies
(cron job) in their own containers.
The docker-compose configuration can be extended to use Cassandra
instead of MySQL, using the docker-compose-cassandra.yml
file. That file employs
docker-compose overrides
to swap out one storage container for another.
To start the Cassandra-backed configuration, run:
$ docker-compose -f docker-compose.yml -f docker-compose-cassandra.yml up
The docker-compose configuration can be extended to use Elasticsearch
instead of MySQL, using the docker-compose-elasticsearch.yml
file. That file employs
docker-compose overrides
to swap out one storage container for another.
To start the Elasticsearch-backed configuration, run:
$ docker-compose -f docker-compose.yml -f docker-compose-elasticsearch.yml up
The docker-compose configuration can be extended to host a test Kafka broker
and activate the Kafka collector using the docker-compose-kafka.yml
file. That file employs docker-compose overrides
to add a Kafka+ZooKeeper container and relevant settings.
To start the MySQL+Kafka configuration, run:
$ docker-compose -f docker-compose.yml -f docker-compose-kafka.yml up
Then configure the Kafka sender using a bootstrapServers
value of host.docker.internal:9092
if your application is inside the same docker network or localhost:19092
if not, but running on the same host.
In other words, if you are running a sample application on your laptop, you would use localhost:19092
bootstrap server to send spans to the Kafka broker running in Docker.
If you are using Docker machine, adjust KAFKA_ADVERTISED_HOST_NAME
in docker-compose-kafka.yml
and the bootstrapServers
configuration of the kafka sender to match your Docker host IP (ex. 192.168.99.100:19092).
The docker-compose configuration can be extended to host the UI on port 80
using the docker-compose-ui.yml
file. That file employs
docker-compose overrides
to add an NGINX container and relevant settings.
To start the NGINX configuration, run:
$ docker-compose -f docker-compose.yml -f docker-compose-ui.yml up
This container doubles as a skeleton for creating proxy configuration around Zipkin like authentication, dealing with CORS with zipkin-js apps, or terminating SSL.
Zipkin comes with a built-in Prometheus metric exporter. The main
docker-compose.yml
file starts Prometheus configured to scrape Zipkin, exposes
it on port 9090
. You can open $DOCKER_HOST_IP:9090
and start exploring the
metrics (which are available on the /prometheus
endpoint of Zipkin).
docker-compose.yml
also starts a Grafana container with authentication
disabled, exposing it on port 3000. On startup it's configured with the
Prometheus instance started by docker-compose
as a data source, and imports
the dashboard published at https://grafana.com/dashboards/1598. This means that,
after running docker-compose up
, you can open
$DOCKER_IP:3000/dashboard/db/zipkin-prometheus
and play around with the
dashboard.
If you want to run the zipkin-ui standalone against a remote zipkin server, you
need to set ZIPKIN_BASE_URL
accordingly:
$ docker run -d -p 80:80 \
-e ZIPKIN_BASE_URL=http://myfavoritezipkin:9411 \
openzipkin/zipkin-ui