<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Migrating from the Dynatrace OTel metrics exporter to standard OTLP metrics exporter in Open Q&amp;A</title>
    <link>https://community.dynatrace.com/t5/Open-Q-A/Migrating-from-the-Dynatrace-OTel-metrics-exporter-to-standard/m-p/286986#M37689</link>
    <description>&lt;P&gt;I'm asking this question on behalf of anyone who is I still using the deprecated Dynatrace OTel Metric Exporter, and would like to use the standard OTLP metric exporter instead.&lt;/P&gt;
&lt;P&gt;How does that work?&lt;/P&gt;</description>
    <pubDate>Mon, 29 Sep 2025 14:41:37 GMT</pubDate>
    <dc:creator>mreider</dc:creator>
    <dc:date>2025-09-29T14:41:37Z</dc:date>
    <item>
      <title>Migrating from the Dynatrace OTel metrics exporter to standard OTLP metrics exporter</title>
      <link>https://community.dynatrace.com/t5/Open-Q-A/Migrating-from-the-Dynatrace-OTel-metrics-exporter-to-standard/m-p/286986#M37689</link>
      <description>&lt;P&gt;I'm asking this question on behalf of anyone who is I still using the deprecated Dynatrace OTel Metric Exporter, and would like to use the standard OTLP metric exporter instead.&lt;/P&gt;
&lt;P&gt;How does that work?&lt;/P&gt;</description>
      <pubDate>Mon, 29 Sep 2025 14:41:37 GMT</pubDate>
      <guid>https://community.dynatrace.com/t5/Open-Q-A/Migrating-from-the-Dynatrace-OTel-metrics-exporter-to-standard/m-p/286986#M37689</guid>
      <dc:creator>mreider</dc:creator>
      <dc:date>2025-09-29T14:41:37Z</dc:date>
    </item>
    <item>
      <title>Re: Migrating from the Dynatrace OTel metrics exporter to standard OTLP metrics exporter</title>
      <link>https://community.dynatrace.com/t5/Open-Q-A/Migrating-from-the-Dynatrace-OTel-metrics-exporter-to-standard/m-p/286987#M37690</link>
      <description>&lt;DIV data-testid="img-provider"&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The following sections describe how to migrate from the Dynatrace OpenTelemetry metrics exporter (now deprecated) to the OTLP HTTP exporter and highlight their differences and how to address them.&lt;/P&gt;
&lt;H2 id="why-migrate-to-the-otlp-http-exporter" class="sc-365c8523-0 cZTgHq" data-testid="heading"&gt;Why migrate to the OTLP HTTP exporter&lt;/H2&gt;
&lt;H3 id="background" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;Background&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;When the OpenTelemetry metrics signal was not yet stable, Dynatrace made it possible to ingest OpenTelemetry metrics by offering its own metric exporters in&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" title="Learn how Dynatrace ingests OpenTelemetry metrics and what limitations apply." href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest#dynatrace-opentelemetry-metrics-exporter" target="_blank"&gt;several programming languages&lt;/A&gt;. These exporters, which rely on the consolidated Dynatrace&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" title="Learn how the data ingestion protocol for Dynatrace Metrics API works." href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/extend-dynatrace/extend-metrics/reference/metric-ingestion-protocol" target="_blank"&gt;metric ingestion protocol&lt;/A&gt;, bridged the gap while the OpenTelemetry components were being stabilized.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Since then, the OpenTelemetry metrics signal&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://opentelemetry.io/blog/2022/metrics-announcement/" target="_blank" rel="noopener"&gt;has been declared stable&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and Dynatrace has added support for native OpenTelemetry protocol (OTLP) ingest for traces, metrics, and logs, making the Dynatrace custom metric exporters no longer needed.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Advantages of switching to the official OTLP HTTP exporter:&lt;/P&gt;
&lt;DIV class="sc-afe78283-0 gGdaYh"&gt;
&lt;UL class="_rup8ap0-1-8-0 _16276mt0-1-8-0 list"&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;&lt;SPAN class="_rup8ap0-1-8-0"&gt;You can send metrics from all OpenTelemetry-supported programming languages, which wasn't possible before, as the Dynatrace metrics exporter wasn't available in all of them.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;&lt;SPAN class="_rup8ap0-1-8-0"&gt;The complexity of your OpenTelemetry Collector configuration/pipelines is reduced. With a single OTLP HTTP exporter configuration, you can send all the signals to Dynatrace.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;H3 id="what-is-changing" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;What is changing&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;With the stabilization of the OpenTelemetry metrics signal and the release of the Dynatrace OTLP metrics ingest API, the Dynatrace custom metrics exporters are now obsolete. As all language SDKs offer an OTLP exporter, it is no longer necessary to use the Dynatrace OpenTelemetry metrics exporter.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;As a result:&lt;/P&gt;
&lt;DIV class="sc-afe78283-0 gGdaYh"&gt;
&lt;UL class="_rup8ap0-1-8-0 _16276mt0-1-8-0 list"&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;&lt;SPAN class="_rup8ap0-1-8-0"&gt;The Dynatrace OpenTelemetry metrics exporters are deprecated and no longer recommended.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;&lt;SPAN class="_rup8ap0-1-8-0"&gt;The exporters are still available but, after the end of 2023, no support, updates, or compatibility with newer OTel versions will be provided.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;H3 id="recommendation" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;Recommendation&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;If you are using the Dynatrace OpenTelemetry metrics exporter, we recommend that you switch to the official OTLP HTTP exporter available from the OpenTelemetry project.&lt;/P&gt;
&lt;DIV class="sc-afe78283-0 gGdaYh"&gt;
&lt;UL class="_rup8ap0-1-8-0 _16276mt0-1-8-0 list"&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;If you're using the Dynatrace OpenTelemetry metrics exporter in your applications, go to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#migrate-applications" target="_blank"&gt;Migrate applications&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;for instructions.&lt;/LI&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;If you're using the Dynatrace OpenTelemetry metrics exporter in the OpenTelemetry Collector, go to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#migrate-collector-configuration" target="_blank"&gt;Migrate collector configuration&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;for instructions.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;H2 id="get-the-dynatrace-api-url" class="sc-365c8523-0 cZTgHq" data-testid="heading"&gt;Get the new ingest URL&lt;/H2&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Before you start the migration, see&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" title="Learn how to configure your application to export OpenTelemetry data to Dynatrace via OTLP." href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/otlp-export" target="_blank"&gt;OpenTelemetry metrics ingest API&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to get the URL for the OTLP metrics ingest API.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;You can use the same token for the OTLP metrics ingest API. The required scope is still&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG class="_wxp4dd0-1-8-0"&gt;Ingest metrics&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;(&lt;CODE class="_1v51izp0-1-8-0"&gt;metrics.ingest&lt;/CODE&gt;).&lt;/P&gt;
&lt;H2 id="migrate-applications" class="sc-365c8523-0 cZTgHq" data-testid="heading"&gt;Migrate applications&lt;/H2&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;This section describes how to migrate your applications from the Dynatrace OpenTelemetry metrics exporter to the OTLP HTTP exporter.&lt;/P&gt;
&lt;H3 id="id-1-install-and-configure-the-otlp-http-exporter" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;1. Install and configure the OTLP HTTP exporter&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Install the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;OTLP HTTP exporter&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;package in your application. You can use the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://opentelemetry.io/ecosystem/registry/?s=OTLP&amp;amp;component=exporter&amp;amp;language=" target="_blank" rel="noopener"&gt;OpenTelemetry Registry&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to discover the packages.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;After installing the exporter package, check the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" title="Learn how to integrate and ingest OpenTelemetry data (traces, metrics, and logs) into Dynatrace." href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/walkthroughs" target="_blank"&gt;OpenTelemetry Integration walk-throughs&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;for instructions on how to configure the OTLP HTTP exporter.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;You can now uninstall the Dynatrace OpenTelemetry metrics exporter from your application.&lt;/P&gt;
&lt;H3 id="configure-endpoint-token" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;2. Configure the endpoint and token&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Apart from configuring the endpoint and token directly via code (as seen in the samples), the OTLP exporter can also be configured via&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/" target="_blank" rel="noopener"&gt;environment variables&lt;/A&gt;.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Although the environment variables are the same for all OpenTelemetry SDK languages, the way they are consumed and configured in the SDKs changes. Consult the SDK documentation of your programming language to learn how to configure the OTLP exporter using environment variables.&lt;/P&gt;
&lt;H4 id="endpoint" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Endpoint&lt;/H4&gt;
&lt;DIV class="sc-afe78283-0 gGdaYh"&gt;
&lt;UL class="_rup8ap0-1-8-0 _16276mt0-1-8-0 list"&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;When using the signal-agnostic environment variable,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;OTEL_EXPORTER_OTLP_ENDPOINT&lt;/CODE&gt;, use the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#get-the-dynatrace-api-url" target="_blank"&gt;OTLP metrics ingest API URL&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;without the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;/v1/metrics&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;suffix.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;When using the metric-specific environment variable,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;OTEL_EXPORTER_OTLP_METRICS_ENDPOINT&lt;/CODE&gt;, use the full&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#get-the-dynatrace-api-url" target="_blank"&gt;OTLP metrics ingest API URL&lt;/A&gt;.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;H4 id="token" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Token&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The Dynatrace token is transmitted via the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;Authorization&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;HTTP header. Like the endpoint, the OpenTelemetry specification defines one environment variable that is signal-agnostic (&lt;CODE class="_1v51izp0-1-8-0"&gt;OTEL_EXPORTER_OTLP_HEADERS&lt;/CODE&gt;) and one that is specific to metrics (&lt;CODE class="_1v51izp0-1-8-0"&gt;OTEL_EXPORTER_OTLP_METRICS_HEADERS&lt;/CODE&gt;).&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;A benefit of using the metric-specific environment variable is that you isolate the tokens and reduce the required scope to the specific signal.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Regardless of the header environment variable you choose, you can set the value as in this example:&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;Authorization=Api-Token dt0c01.abc123.abcdefghij1234567890&lt;/CODE&gt;&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;For details on setting headers via the environment variable, see the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/#header-configuration" target="_blank" rel="noopener"&gt;OpenTelemetry documentation&lt;/A&gt;.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;If your language supports configuring the OTLP exporter completely from environment variables (for example, Java), you also need to set the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;OTEL_EXPORTER_OTLP_PROTOCOL&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;http/protobuf&lt;/CODE&gt;, as Dynatrace only supports ingesting OTLP/protobuf data via HTTP.&lt;/P&gt;
&lt;H3 id="apps-delta-temporality" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;3. Configure the exporter to generate metrics with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;delta&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;aggregation temporality&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Dynatrace only supports ingesting metrics with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;delta&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;aggregation temporality.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;To learn more about metric aggregation temporality and how to configure the OTLP exporter to produce&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;delta&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;metrics, see&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://opentelemetry.io/docs/specs/otel/metrics/data-model/#temporality" target="_blank" rel="noopener"&gt;Aggregation temporality&lt;/A&gt;.&lt;/P&gt;
&lt;H3 id="in-applications-attribute-type-support" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;4. Attribute type support&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;When using the Dynatrace OpenTelemetry metrics exporter, only attributes of type&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;string&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;are sent to Dynatrace.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;With the Dynatrace OTLP metrics ingest API, apart from&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;string&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;attributes, you can now also send attributes of type&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;boolean&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;integer&lt;/CODE&gt;.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Attributes of type&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;double&lt;/CODE&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;bytes&lt;/CODE&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;array&lt;/CODE&gt;, and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;map&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;are currently not supported by Dynatrace and are dropped upon ingest.&lt;/P&gt;
&lt;H3 id="in-applications-additional-features" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;Additional features&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The following sections describe how to migrate the additional features available in the Dynatrace OpenTelemetry metrics exporter to the OTLP exporter.&lt;/P&gt;
&lt;H4 id="automatic-endpoint-and-token-configuration" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Automatic endpoint and token configuration&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;When using the Dynatrace OpenTelemetry metrics exporter together with Dynatrace OneAgent, the endpoint and token were automatically detected and configured.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;This is a Dynatrace-specific feature and is not available in the OTLP exporter. See&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#configure-endpoint-token" target="_blank"&gt;Configure the endpoint and token&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to learn how to configure the endpoint and token.&lt;/P&gt;
&lt;H4 id="histogram-support" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Histogram support&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;&lt;SPAN class="sc-38837982-0 cstkqi tag-component search-exclude" data-testid="tag"&gt;Dynatrace version 1.300+&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Starting with Dynatrace version 1.300, histograms ingestion is supported directly via OTLP ingest API. For Exponential Histogram, Dynatrace ingests the histogram's&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;min|max|sum|count&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;but doesn't ingest the buckets.&lt;/P&gt;
&lt;H4 id="metric-key-prefix" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Metric Key Prefix&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The automatic metric prefix is a Dynatrace-specific feature and is not available in the OTLP exporter.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;In this case, you need to modify your metric definitions and add the prefix to them explicitly.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;If you are using the OpenTelemetry Collector, an alternative is to use the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#collector-key-prefix" target="_blank"&gt;Metrics Transform Processor&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to add the prefix to your metrics.&lt;/P&gt;
&lt;H4 id="default-dimensions" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Default Dimensions&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Although this feature does not exist in the OTLP exporter, the same result can be achieved in different ways:&lt;/P&gt;
&lt;DIV class="sc-afe78283-0 gGdaYh"&gt;
&lt;UL class="_rup8ap0-1-8-0 _16276mt0-1-8-0 list"&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Configure the default dimensions as resource or instrumentation scope attributes.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;After configuring the default attributes on the resource and/or instrumentation scope, you need to configure them in Dynatrace so they are added to all your metrics automatically. To learn more, see&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" title="Configure OpenTelemetry metrics ingest." href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/configuration#allow-list" target="_blank"&gt;Configure resource and scope attributes to be added as dimensions&lt;/A&gt;.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Resource and instrumentation scope attributes that are not configured as part of the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" title="Configure OpenTelemetry metrics ingest." href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/configuration#allow-list" target="_blank"&gt;allow list&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in Dynatrace are dropped upon ingest.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Configure the default dimensions via the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://opentelemetry.io/docs/languages/sdk-configuration/general/#otel_resource_attributes" target="_blank" rel="noopener"&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;OTEL_RESOURCE_ATTRIBUTES&lt;/CODE&gt;&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;environment variable.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Configure the default dimensions in the OpenTelemetry Collector&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#collector-default-dimensions" target="_blank"&gt;Metrics Transform Processor&lt;/A&gt;.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;H4 id="automatically-enrich-metrics-with-dynatrace-oneagent-metadata" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Automatically enrich metrics with Dynatrace OneAgent metadata&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;When using the Dynatrace OpenTelemetry metrics exporter together with Dynatrace OneAgent, metrics are automatically enriched with Dynatrace OneAgent metadata. This is a Dynatrace-specific feature and is not available in the OTLP exporter.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;However, you can get the same result by accessing the OneAgent metadata and adding them as resource attributes.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;See&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" title="Learn how to automatically enrich your telemetry data with Dynatrace-specific dimensions." href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/extend-dynatrace/extend-data" target="_blank"&gt;Enrich ingested data with Dynatrace-specific dimensions&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;for instructions on how to enrich ingested metrics with Dynatrace-specific dimensions.&lt;/P&gt;
&lt;H2 id="migrate-collector-configuration" class="sc-365c8523-0 cZTgHq" data-testid="heading"&gt;Migrate Collector configuration&lt;/H2&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;This section describes how to migrate your Collector configuration from the Dynatrace OpenTelemetry metrics exporter to the OTLP HTTP exporter.&lt;/P&gt;
&lt;H3 id="id-1-configure-the-otlp-http-exporter" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;1. Configure the OTLP HTTP exporter&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://github.com/open-telemetry/opentelemetry-collector/tree/release/v0.80.x/exporter/otlphttpexporter" target="_blank" rel="noopener"&gt;OTLP HTTP exporter&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is part of the core OpenTelemetry Collector distribution, so there is no need to install any extra modules.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The OTLP HTTP exporter in the Collector can be used to send all signals (traces, metrics, and logs).&lt;/P&gt;
&lt;H3 id="configure-collector-endpoint-token" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;2. Configure the endpoint and token&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The endpoint and token are required when using the OTLP HTTP exporter in the Collector.&lt;/P&gt;
&lt;H4 id="endpoint" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Endpoint&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The endpoint can be configured using two different properties:&lt;/P&gt;
&lt;DIV class="sc-afe78283-0 gGdaYh"&gt;
&lt;UL class="_rup8ap0-1-8-0 _16276mt0-1-8-0 list"&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Property&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;endpoint&lt;/CODE&gt;&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;endpoint&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;property refers to the base URL where data will be sent to. When using this property, the Collector will append the appropriate suffix (e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;/v1/metrics&lt;/CODE&gt;) depending on the type of data being exported.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;If using this approach, use the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#get-the-dynatrace-api-url" target="_blank"&gt;OTLP metrics ingest API URL&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;without the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;/v1/metrics&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;suffix.&lt;/P&gt;
&lt;DIV class="sc-7af48b47-0 kGYAJd _11i182x0-1-11-2"&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token key atrule"&gt;exporters&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;otlphttp&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;endpoint&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="_11i182x1-1-11-2"&gt;
&lt;DIV class="_1bzvwaf5q-1-8-0 _1bzvwaf6e-1-8-0 _1bzvwaf2-1-8-0 _1bzvwaf79-1-8-0"&gt;
&lt;DIV class="_1bzvwaf0-1-8-0 _1bzvwaf78-1-8-0"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Property&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;metrics_endpoint&lt;/CODE&gt;&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;metrics_endpoint&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;refers to the signal-specific URL to which data will be sent. When using this property, the collector only sends metrics to the specified endpoint. This option is useful when the endpoints for the different signals are different.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;If using this approach, use the full&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#get-the-dynatrace-api-url" target="_blank"&gt;OTLP metrics ingest API URL&lt;/A&gt;.&lt;/P&gt;
&lt;DIV class="sc-7af48b47-0 kGYAJd _11i182x0-1-11-2"&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token key atrule"&gt;exporters&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;otlphttp&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;metrics_endpoint&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/metrics"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="_11i182x1-1-11-2"&gt;
&lt;DIV class="_1bzvwaf5q-1-8-0 _1bzvwaf6e-1-8-0 _1bzvwaf2-1-8-0 _1bzvwaf79-1-8-0"&gt;
&lt;DIV class="_1bzvwaf0-1-8-0 _1bzvwaf78-1-8-0"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;If&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;metrics_endpoint&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is set in the configuration, the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;endpoint&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;property is ignored for metrics.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;H4 id="token" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Token&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The Dynatrace token is transmitted via the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;Authorization&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;HTTP header. The OTLP HTTP exporter in the collector offers a key-value list property that can be used to configure the Dynatrace token:&lt;/P&gt;
&lt;DIV class="sc-7af48b47-0 kGYAJd _11i182x0-1-11-2"&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token key atrule"&gt;exporters&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;otlphttp&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;endpoint&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;headers&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;Authorization&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;"Api-Token dt0c01.abc123.abcdefghij1234567890"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="_11i182x1-1-11-2"&gt;
&lt;DIV class="_1bzvwaf5q-1-8-0 _1bzvwaf6e-1-8-0 _1bzvwaf2-1-8-0 _1bzvwaf79-1-8-0"&gt;
&lt;DIV class="_1bzvwaf0-1-8-0 _1bzvwaf78-1-8-0"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Only one Dynatrace API token can be specified in the OTLP HTTP exporter in the Collector. Be sure to generate a token with all the scopes necessary for all signals you are exporting.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;For the full list of available settings in the OTLP HTTP exporter, see the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://github.com/open-telemetry/opentelemetry-collector/blob/release/v0.80.x/exporter/otlphttpexporter/testdata/config.yaml" target="_blank" rel="noopener"&gt;configuration sample&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in the OpenTelemetry Collector repository.&lt;/P&gt;
&lt;H3 id="id-3-make-sure-metrics-have-delta-aggregation-temporality" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;3. Make sure metrics have&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;delta&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;aggregation temporality&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Dynatrace only supports ingesting metrics with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;delta&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;aggregation temporality.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;If your applications are already producing metrics with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;delta&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;temporality (as explained in&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#apps-delta-temporality" target="_blank"&gt;Configure the exporter to generate metrics with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;delta&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;aggregation temporality&lt;/A&gt;), you don't need to do anything in your Collector configuration.&lt;/P&gt;
&lt;DIV class="sc-50e8a81f-0 bNzBRd" data-testid="callout"&gt;
&lt;DIV class="sc-50e8a81f-1 drLByU"&gt;
&lt;DIV class="sc-50e8a81f-3 IJJhK"&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;An alternative is to use the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.80.0/processor/cumulativetodeltaprocessor" target="_blank" rel="noopener"&gt;Cumulative to Delta processor&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;as part of your Collector pipeline.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Caution: To be able to convert cumulative metrics to delta, the Collector needs to keep the previous values of metrics. In a multiple-instance Collector deployment, this conversion can produce inconsistent data unless it can be guaranteed that metrics from the same source are always processed by the same Collector instance.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;For this reason, we recommend that you&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#apps-delta-temporality" target="_blank"&gt;configure the OTLP exporter&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in your applications to output&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;delta&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;metrics to the Collector.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;H3 id="in-collector-attribute-type-support" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;4. Attribute type support&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;When using the Dynatrace OpenTelemetry metrics exporter in the Collector, all attributes were converted to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;string&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;by using the Collector's internal transformation logic.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;This logic transformed the attribute types as follows:&lt;/P&gt;
&lt;DIV class="sc-afe78283-0 gGdaYh"&gt;
&lt;UL class="_rup8ap0-1-8-0 _16276mt0-1-8-0 list"&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;boolean&lt;/CODE&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;integer&lt;/CODE&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;double&lt;/CODE&gt;: converted to their string representation&lt;/LI&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;bytes&lt;/CODE&gt;: converted to a base64 string&lt;/LI&gt;
&lt;LI class="_16276mt1-1-8-0"&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;array&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;map&lt;/CODE&gt;: converted to a JSON string&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;If you are recording attributes of type&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;double&lt;/CODE&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;bytes&lt;/CODE&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;array&lt;/CODE&gt;, or&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;map&lt;/CODE&gt;, when migrating to the OTLP exporter in the Collector you must use the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.80.0/processor/attributesprocessor" target="_blank" rel="noopener"&gt;Attributes Processor&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in your pipeline so the attributes continue to be exported to Dynatrace as before.&lt;/P&gt;
&lt;DIV class="sc-7af48b47-0 kGYAJd _11i182x0-1-11-2"&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token key atrule"&gt;processors&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;attributes/convert&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;actions&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token punctuation"&gt;-&lt;/SPAN&gt; &lt;SPAN class="token key atrule"&gt;key&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; my.double.attribute&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;action&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; convert&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;converted_type&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token punctuation"&gt;-&lt;/SPAN&gt; &lt;SPAN class="token key atrule"&gt;key&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; my.byte.attribute&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;action&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; convert&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;converted_type&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token punctuation"&gt;-&lt;/SPAN&gt; &lt;SPAN class="token key atrule"&gt;key&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; my.array.attribute&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;action&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; convert&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;converted_type&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token punctuation"&gt;-&lt;/SPAN&gt; &lt;SPAN class="token key atrule"&gt;key&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; my.map.attribute&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;action&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; convert&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;converted_type&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="_11i182x1-1-11-2"&gt;
&lt;DIV class="_1bzvwaf5q-1-8-0 _1bzvwaf6e-1-8-0 _1bzvwaf2-1-8-0 _1bzvwaf79-1-8-0"&gt;
&lt;DIV class="_1bzvwaf0-1-8-0 _1bzvwaf78-1-8-0"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="sc-50e8a81f-0 dnmsPw" data-testid="callout"&gt;
&lt;DIV class="sc-50e8a81f-1 kPrsoE"&gt;
&lt;DIV class="sc-50e8a81f-3 IJJhK"&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Attributes of types&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;double&lt;/CODE&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;bytes&lt;/CODE&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;array&lt;/CODE&gt;, and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;map&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;are currently not supported by Dynatrace.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;If you are recording attributes of these types and you don't configure the attributes processor in your Collector pipeline, these attributes are dropped upon ingest.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;H3 id="in-collector-additional-features" class="sc-365c8523-0 DMQqn" data-testid="heading"&gt;Additional features&lt;/H3&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The following sections describe how to migrate the additional features available in the Dynatrace OpenTelemetry metrics exporter to the OTLP exporter.&lt;/P&gt;
&lt;H4 id="automatic-endpoint-and-token-configuration" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Automatic Endpoint and Token configuration&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;When using the Dynatrace OpenTelemetry metrics exporter together with Dynatrace OneAgent, the endpoint and token were automatically detected and configured. This is a Dynatrace-specific feature and is not available in the OTLP exporter.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;See&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/ingest/migration-guide-otlp-exporter#configure-collector-endpoint-token" target="_blank"&gt;Configure the endpoint and token&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to learn how to configure the endpoint and token in the Collector.&lt;/P&gt;
&lt;H4 id="histogram-support" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Histogram support&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;&lt;SPAN class="sc-38837982-0 cstkqi tag-component search-exclude" data-testid="tag"&gt;Dynatrace version 1.300+&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Starting with Dynatrace version 1.300, histograms ingestion is supported directly via OTLP ingest API. For Exponential Histogram, Dynatrace ingests the histogram's&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-1-8-0"&gt;min|max|sum|count&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;but doesn't ingest the buckets.&lt;/P&gt;
&lt;H4 id="collector-key-prefix" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Metric key prefix&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The metric key prefix feature in the Dynatrace OpenTelemetry metrics exporter can be replaced by the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/metricstransformprocessor#metrics-transform-processor" target="_blank" rel="noopener"&gt;Metrics Transform Processor&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in the Collector by using the "rename metric" feature:&lt;/P&gt;
&lt;DIV class="sc-7af48b47-0 kGYAJd _11i182x0-1-11-2"&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token comment"&gt;# Add a prefix "myprefix" to a "system.cpu.usage" metric&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token key atrule"&gt;include&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; system.cpu.usage&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token key atrule"&gt;action&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; update&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token key atrule"&gt;new_name&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; myprefix.system.cpu.usage_time&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="_11i182x1-1-11-2"&gt;
&lt;DIV class="_1bzvwaf5q-1-8-0 _1bzvwaf6e-1-8-0 _1bzvwaf2-1-8-0 _1bzvwaf79-1-8-0"&gt;
&lt;DIV class="_1bzvwaf0-1-8-0 _1bzvwaf78-1-8-0"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;You can also rename multiple metrics by using a combination of regex/substitution. See the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.80.0/processor/metricstransformprocessor#rename-multiple-metrics-using-substitution" target="_blank" rel="noopener"&gt;Rename multiple metrics using Substitution&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;sample in the Collector repository for an example.&lt;/P&gt;
&lt;H4 id="collector-default-dimensions" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Default dimensions&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;The default dimensions feature in the Dynatrace OpenTelemetry metrics exporter can be replaced by the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/metricstransformprocessor#metrics-transform-processor" target="_blank" rel="noopener"&gt;Metrics Transform Processor&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in the Collector by using the "add label" feature:&lt;/P&gt;
&lt;DIV class="sc-7af48b47-0 kGYAJd _11i182x0-1-11-2"&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token comment"&gt;# Add a label `my.label` with value `my.value` to the 'system.cpu.usage' metric&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token key atrule"&gt;include&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; system.cpu.usage&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token key atrule"&gt;action&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; update&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt;&lt;SPAN class="token key atrule"&gt;operations&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token punctuation"&gt;-&lt;/SPAN&gt; &lt;SPAN class="token key atrule"&gt;action&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; add_label&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;new_label&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; my.label&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="token-line _1eytb3a4-1-11-2"&gt;&lt;SPAN class="_1eytb3a9-1-11-2 _1eytb3aa-1-11-2"&gt; &lt;SPAN class="token key atrule"&gt;new_value&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;:&lt;/SPAN&gt;&lt;SPAN class="token plain"&gt; my.value&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="_11i182x1-1-11-2"&gt;
&lt;DIV class="_1bzvwaf5q-1-8-0 _1bzvwaf6e-1-8-0 _1bzvwaf2-1-8-0 _1bzvwaf79-1-8-0"&gt;
&lt;DIV class="_1bzvwaf0-1-8-0 _1bzvwaf78-1-8-0"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;You can also add labels to multiple metrics by using a regex to select the metrics. See the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1v1skpy0-1-8-0 sc-3cdd2013-0 eccFTo" href="https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/metricstransformprocessor#add-a-label-to-multiple-metrics" target="_blank" rel="noopener"&gt;Add a label to multiple metrics&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;sample in the Collector repository for an example.&lt;/P&gt;
&lt;H4 id="resource-to-telemetry-conversion" class="sc-365c8523-0 KjnAb" data-testid="heading"&gt;Resource to telemetry conversion&lt;/H4&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;Although this feature does not exist in the OTLP exporter, the Dynatrace OTLP metrics ingest API enables you to define a list of allowed resource and instrumentation scope attributes that are then automatically added as dimensions to all ingested metrics.&lt;/P&gt;
&lt;P class="_487p2n0-1-8-0 _da9a8v0-1-8-0 _da9a8v2-1-8-0 _da9a8v3-1-8-0 _da9a8vb-1-8-0 sc-d1bf1c63-0 iVriGI"&gt;For details, see&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-1-8-0 _1iksxp40-1-8-0 sc-3cdd2013-1 ivMpWt" title="Configure OpenTelemetry metrics ingest." href="https://docs.spine-dev.internal.dynatracelabs.com/preview/dynatrace-docs/pr-6256/docs/ingest-from/opentelemetry/send-data/monitor-ingest/metrics/configuration#allow-list" target="_blank"&gt;Configure resource and scope attributes to be added as dimensions&lt;/A&gt;.&lt;/P&gt;
&lt;/DIV&gt;</description>
      <pubDate>Mon, 29 Sep 2025 14:43:01 GMT</pubDate>
      <guid>https://community.dynatrace.com/t5/Open-Q-A/Migrating-from-the-Dynatrace-OTel-metrics-exporter-to-standard/m-p/286987#M37690</guid>
      <dc:creator>mreider</dc:creator>
      <dc:date>2025-09-29T14:43:01Z</dc:date>
    </item>
  </channel>
</rss>

