Configure OpenTelemetry tracing with Istio

  • How-to guide
  • 3-min read
Support statement

This integration is based on open source code governed by the respective communities and is not covered under the Dynatrace support policy. While we strive to assist, issues and feature requests should be reported directly to the respective project. Dynatrace cannot ensure fixes/features due to the independent nature of OSS projects.

Always use the most recent release version to ensure you have the latest patches and fixes deployed.

This page describes how to use Istio version 1.22+ with the Istio OpenTelemetry extension provider, and how to configure it to export OpenTelemetry traces to Dynatrace.

System requirements

The following prerequisites are necessary to configure Istio OpenTelemetry trace configuration, including Dynatrace resource detection and sampling:

  • Istio version 1.22+ (i.e., Istio releases that ship with Envoy 1.30+)
Istio version 1.21 and earlier

Istio versions 1.21 and earlier ship with Envoy versions 1.29 and earlier, which is based on OpenTracing. To use these Isito releases, enable the Dynatrace Envoy code module as described in Configure OpenTelemetry tracing with Envoy.

Licensing impact

In certain deployment setups, tracing with Istio version 1.22+ results in consumption of the following rate card capabilities:

Steps

  1. In Dynatrace Hub, search for Istio.
  2. Filter by the category Technology.
  3. Select the Hub entry Istio Service Mesh.
  4. Select Set up.
  5. Configure the API token.
  6. Use the provided and pre-configured snippets to deploy the following items in the next steps:
    • the Mesh configuration
    • the service entry
    • the telemetry API

Save the Mesh configuration snippet you obtained in step 1 under meshconfig.yaml and configure Istio with the following command:

istioctl install -f meshconfig.yaml
Existing Mesh configuration

If you already use your own, custom Mesh configuration, you need to merge its content with the provided snippet. Otherwise, you can use the snippet as-is.

Next, you need to deploy the Istio service entry manifest you obtained in step 1 using kubectl. Save it to dt-serviceentry.yaml and run the following command:

kubectl apply -n istio-system -f dt-serviceentry.yaml

As last configuration step, use the Istio telemetry API to enable the tracing provider.

Save the telemetry API manifest you obtained in step 1 to dt-telemetry.yaml and use kubectl to apply the configuration to the desired namespace.

kubectl apply -n istio-system -f dt-telemetry.yaml
Multiple telemetry resources

Do not deploy more than one telemetry resource within a given namespace, as doing so may lead to configuration conflicts and incomplete tracing information.

If you require different telemetry resources, deploy them to different namespaces or using different selectors.

Pod restart

Make sure to restart all applicable Kubernetes pods, to let the changes to the mesh configuration take effect.

Once the setup is complete and you have ingested your first data, you can verify if the traces show up in Dynatrace.

trace

Related tags
Application Observability