Dynatrace version 1.254+
This page provides information about how Dynatrace ingests and enriches OpenTelemetry metrics.
If you're still using the Dynatrace OpenTelemetry metrics exporter, we recommend that you migrate to the OTLP metrics exporter. For more information, see Migrating from the Dynatrace OTel metrics exporter to standard OTLP metrics exporter.
Dynatrace maps the individual OpenTelemetry instruments to the following Dynatrace metric types:
| Instrument | with temporality | maps to Dynatrace |
|---|---|---|
| Counter | Delta | Counter |
| Counter | Cumulative | N/A |
| Gauge | N/A | Gauge |
| Explicit bucket histogram 1 | Delta | Histogram |
| Exponential histogram 2 | Delta | Exponential histogram |
| UpDownCounter | Delta | Counter |
| UpDownCounter | Cumulative | Gauge |
| Summary | N/A | N/A |
Explicit bucket histograms are supported starting with Dynatrace version 1.300.
For exponential histograms, Dynatrace ingests the histogram's min|max|sum|count but doesn't ingest the buckets.
When ingesting OpenTelemetry metrics, limits and validations apply as described in the tables below.
When Metrics powered by Grail overview (DPS) is on your rate card:
When Custom Metrics Classic (DPS) is on your rate card, the limits in Default limits apply
For more information about advanced OTLP metric dimensions, see Important: OTLP Metric Dimensions Changes in the Dynatrace Community.
OpenTelemetry supports attributes on different levels in an OpenTelemetry metric request (that is, data points, scopes, and resources). Because attributes are saved in a flattened fashion on the Dynatrace side, there may be name collisions if attributes on different levels share the same name.
To handle such name conflicts, Dynatrace applies the following order of priority to choose which attribute will be ingested:
For example, if there is a data point and a scope attribute have the same name, the value of the data point will take precedence. Similarly, if a scope and resource attribute share the same name, Dynatrace will ingest the value of the scope attribute.
The Dynatrace backend exclusively works with delta values and requires the respective aggregation temporality.
Please ensure your metrics exporter is accordingly configured or set the OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE environment variable to DELTA.
For examples on how to set the temporality under each individual language, see the integration walkthroughs.
dt.metrics).-), and underscores (_).ä, ö, and ü)..count for counters and .gauge for gauges).If you use characters that are invalid according to the rules above, they will be replaced with underscores. If your metric key does not have at least one valid character, the data point will be dropped.
-), periods (.), and underscores (_).ä, ö, and ü).key.key-section format.If you use characters that are invalid according to the rules above, they will be replaced with underscores. If your dimension key does not have at least one valid character, the key will be dropped.
Dimension values must be passed as a string, Boolean, or integer.
Dynatrace does not support non-string dimensions and will convert Booleans and integers to strings upon ingest.
If any other type is used, the entire dimension will be dropped.
For exponential histograms, Dynatrace ingests the histogram's min|max|sum|count but doesn't ingest the buckets.
If any of below happens, the OpenTelemetry ingest API returns the 400 or 200 with partial success responses.
NaN or Infinite are invalid.The Dynatrace OpenTelemetry ingest API only returns an HTTP 400 when all metrics in the OTLP request are invalid.
Dynatrace does not support summary metrics.
Summary metrics only exist in the OpenTelemetry protocol (OTLP) for compatibility with other formats. Applications using official OpenTelemetry SDKs cannot produce summary metrics.