Ingest data from Zipkin

The following configuration example shows how you configure a Collector instance to accept Zipkin data, transform it to OTLP, and send it to the Dynatrace backend.

Limitations

B3 requirements

Pay attention to the B3 requirements, to avoid having spans being dropped because of shared and duplicated span identifiers. See the propagator specification for more details.

For example, if you are using Spring Code Sleuth, you can use the following configuration setting to disable span sharing:

spring:
sleuth:
supports-join: false

Single Collector routing

Make sure to route all related Zipkin/B3 spans via the same Collector instance, to guarantee full ingestion. If you ingest some spans using OneAgent alone, they may not be properly linked and not show up as connected to your Zipkin spans.

Prerequisites

Demo configuration

receivers:
zipkin:
exporters:
otlphttp:
endpoint: ${env:DT_ENDPOINT}
headers:
Authorization: "Api-Token ${env:DT_API_TOKEN}"
service:
pipelines:
traces:
receivers: [zipkin]
processors: []
exporters: [otlphttp]
Configuration validation

Validate your settings to avoid any configuration issues.

Components

For our configuration, we configure the following components.

Receivers

Under receivers, we specify the zipkin receiver as active receiver component for our Collector instance.

The Zipkin receiver can be customized with a few more attributes, which we leave with their default values in our example.

Exporters

Under exporters, we specify the default otlphttp exporter and configure it with our Dynatrace API URL and the required authentication token.

For this purpose, we set the following two environment variables and reference them in the configuration values for endpoint and Authorization.

Service pipelines

Under service, we eventually assemble our receiver and exporter objects into a traces pipeline, which will handle our Zipkin transformation to OTLP.