Skip to content

Latest commit

 

History

History
 
 

examples

Zipkin Docker Examples

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. Traces are stored in memory.

To see specific traces in the UI, select "zipkin-server" in the dropdown and then click the "Find Traces" button.

Elasticsearch

You can store traces in Elasticsearch instead of memory, using the docker-compose-elasticsearch.yml file. This configuration starts zipkin, zipkin-elasticsearch and zipkin-dependencies (cron job) in their own containers.

To start the Elasticsearch-backed configuration, run:

$ docker-compose -f docker-compose-elasticsearch.yml up

Cassandra

You can store traces in Cassandra instead of memory, using the docker-compose-cassandra.yml file. This configuration starts zipkin, zipkin-cassandra and zipkin-dependencies (cron job) in their own containers.

To start the Cassandra-backed configuration, run:

$ docker-compose -f docker-compose-cassandra.yml up

MySQL

You can store traces in MySQL instead of memory, using the docker-compose-mysql.yml file. This configuration starts zipkin, zipkin-mysql and zipkin-dependencies (cron job) in their own containers.

To start the MySQL-backed configuration, run:

$ docker-compose -f docker-compose-mysql.yml up

Kafka

You can collect traces from Kafka in addition to HTTP, using the docker-compose-kafka.yml file. This configuration starts zipkin and zipkin-kafka in their own containers.

To add Kafka configuration, run:

$ docker-compose -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.

Docker machine and Kafka

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).

Example

The docker-compose configuration can be extended to host an example application using the docker-compose-example.yml file. That file employs docker-compose overrides to add a "frontend" and "backend" service.

To add the example configuration, run:

$ docker-compose -f docker-compose.yml -f docker-compose-example.yml up

Once the services start, open http://localhost:8081/

Afterwards, you can view traces that went through the backend via http://127.0.0.1:9411/zipkin?serviceName=backend

UI

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.

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

Prometheus

Zipkin comes with a built-in Prometheus metric exporter. The docker-compose-prometheus.yml file starts Prometheus configured to scrape Zipkin, exposes it on port 9090. You can open $DOCKER_HOST_IP:9090 and start exploring metrics (available on the /prometheus endpoint of Zipkin).

docker-compose-prometheus.yml also starts a Grafana 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 ... -f docker-compose-prometheus.yml up, you can open $DOCKER_IP:3000/dashboard/db/zipkin-prometheus and play around with the dashboard.