docs/daprdocs/content/en/operations/observability/tracing/zipkin.md

110 lines
2.7 KiB
Markdown

---
type: docs
title: "How-To: Set up Zipkin for distributed tracing"
linkTitle: "Zipkin"
weight: 4000
description: "Set up Zipkin for distributed tracing"
---
## Configure self hosted mode
For self hosted mode, on running `dapr init`:
1. The following YAML file is created by default in `$HOME/.dapr/config.yaml` (on Linux/Mac) or `%USERPROFILE%\.dapr\config.yaml` (on Windows) and it is referenced by default on `dapr run` calls unless otherwise overridden `:
* config.yaml
```yaml
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: daprConfig
namespace: default
spec:
tracing:
samplingRate: "1"
zipkin:
endpointAddress: "http://localhost:9411/api/v2/spans"
```
2. The [openzipkin/zipkin](https://hub.docker.com/r/openzipkin/zipkin/) docker container is launched on running `dapr init` or it can be launched with the following code.
Launch Zipkin using Docker:
```bash
docker run -d -p 9411:9411 openzipkin/zipkin
```
3. The applications launched with `dapr run` by default reference the config file in `$HOME/.dapr/config.yaml` or `%USERPROFILE%\.dapr\config.yaml` and can be overridden with the Dapr CLI using the `--config` param:
```bash
dapr run --app-id mynode --app-port 3000 node app.js
```
### Viewing Traces
To view traces, in your browser go to http://localhost:9411 and you will see the Zipkin UI.
## Configure Kubernetes
The following steps shows you how to configure Dapr to send distributed tracing data to Zipkin running as a container in your Kubernetes cluster, and how to view them.
### Setup
First, deploy Zipkin:
```bash
kubectl create deployment zipkin --image openzipkin/zipkin
```
Create a Kubernetes service for the Zipkin pod:
```bash
kubectl expose deployment zipkin --type ClusterIP --port 9411
```
Next, create the following YAML file locally:
* tracing.yaml configuration
```yaml
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: tracing
namespace: default
spec:
tracing:
samplingRate: "1"
zipkin:
endpointAddress: "http://zipkin.default.svc.cluster.local:9411/api/v2/spans"
```
Now, deploy the the Dapr configuration file:
```bash
kubectl apply -f tracing.yaml
```
In order to enable this configuration for your Dapr sidecar, add the following annotation to your pod spec template:
```yml
annotations:
dapr.io/config: "tracing"
```
That's it! Your sidecar is now configured to send traces to Zipkin.
### Viewing Tracing Data
To view traces, connect to the Zipkin service and open the UI:
```bash
kubectl port-forward svc/zipkin 9411:9411
```
In your browser, go to `http://localhost:9411` and you will see the Zipkin UI.
![zipkin](/images/zipkin_ui.png)
## References
- [Zipkin for distributed tracing](https://zipkin.io/)