Try it free

Ingest Zipkin data with the OTel Collector

  • How-to guide
  • 2-min read
  • Published Oct 11, 2023

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

  • One of the following Collector distributions with the Zipkin receiver:
    • The Dynatrace OTel Collector
    • OpenTelemetry Contrib
    • A custom Builder version
  • The Dynatrace API endpoint URL to which the data should be exported
  • An API token with the relevant access scope (only required for SaaS and ActiveGate)

See Collector Deployment and Collector Configuration on how to set up your Collector with the configuration below.

Demo configuration

receivers:
zipkin:
exporters:
otlp_http:
endpoint: ${env:DT_ENDPOINT}
headers:
Authorization: "Api-Token ${env:DT_API_TOKEN}"
service:
pipelines:
traces:
receivers: [zipkin]
processors: []
exporters: [otlp_http]
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 otlp_http 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.

  • DT_ENDPOINT contains the base URL of the Dynatrace API endpoint (for example, https://{your-environment-id}.live.dynatrace.com/api/v2/otlp)
  • DT_API_TOKEN contains the API token

Service pipelines

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

Related topics

  • Enrich ingested data with Dynatrace-specific fields
  • Enrich OTLP requests with Kubernetes data
Related tags
Application Observability