<?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>article Configuring Quarkus to export OpenTelemetry signals to Dynatrace in Troubleshooting</title>
    <link>https://community.dynatrace.com/t5/Troubleshooting/Configuring-Quarkus-to-export-OpenTelemetry-signals-to-Dynatrace/ta-p/272126</link>
    <description>&lt;DIV class="lia-message-template-content-zone"&gt;
&lt;P&gt;OpenTelemetry configuration of the Quarkus native application can be done by setting values in the&amp;nbsp;&lt;CODE&gt;src/main/resources/application.properties&lt;/CODE&gt; or via the environment variables.&lt;/P&gt;
&lt;H4&gt;Quarkus application is run on the host with OneAgent:&lt;/H4&gt;
&lt;P&gt;In case of deploying OA in the &lt;STRONG&gt;classicFullstack&lt;/STRONG&gt; mode, you can export &lt;STRONG&gt;traces&lt;/STRONG&gt; directly to the &lt;A href="https://docs.dynatrace.com/docs/ingest-from/opentelemetry/getting-started/otlp-export#export-to-oneagent-traces-only" target="_blank" rel="noopener"&gt;OneAgent API endpoint&lt;/A&gt;. The configuration might look like in the following way:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;set the supported protocol:&lt;BR /&gt;&lt;STRONG&gt;app property:&lt;/STRONG&gt; &lt;CODE&gt;quarkus.otel.exporter.otlp.traces.protocol=http/protobuf&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&lt;/STRONG&gt; &lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf&lt;/CODE&gt;&lt;/LI&gt;
&lt;LI&gt;then use one of the following URLs. However, please note that OA on the host accepts only &lt;STRONG&gt;traces&lt;/STRONG&gt;, and when specified, generic endpoint metrics and logs will be rejected:
&lt;UL&gt;
&lt;LI&gt;set endpoint for traces only:&lt;BR /&gt;&lt;STRONG&gt;app property:&lt;/STRONG&gt; &lt;CODE&gt;quarkus.otel.exporter.otlp.traces.endpoint=&lt;A href="http://localhost:14499/otlp/v1/traces" target="_blank" rel="noopener"&gt;http://localhost:14499/otlp/v1/traces&lt;/A&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&lt;/STRONG&gt;&amp;nbsp;&lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=&lt;A href="http://localhost:14499/otlp/v1/traces" target="_blank" rel="noopener"&gt;http://localhost:14499/otlp/v1/traces&lt;/A&gt;&lt;/CODE&gt;&lt;/LI&gt;
&lt;LI&gt;generic endpoint&amp;nbsp;for OTel signals as Quarkus, then substitute the exact URL for traces or metrics:&lt;BR /&gt;&lt;STRONG&gt;app property:&lt;/STRONG&gt; &lt;CODE&gt;quarkus.otel.exporter.otlp.endpoint=&lt;A href="http://localhost:1443/otlp" target="_blank" rel="noopener"&gt;http://localhost:&lt;SPAN&gt;14499&lt;/SPAN&gt;/otlp&lt;/A&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&lt;/STRONG&gt;&amp;nbsp;&lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_ENDPOINT=&lt;A href="http://localhost:1443/otlp" target="_blank" rel="noopener"&gt;http://localhost:&lt;SPAN&gt;14499&lt;/SPAN&gt;/otlp&lt;/A&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE:&lt;/STRONG&gt;&amp;nbsp;&lt;SPAN&gt;The EEC ingestion endpoint is only available with&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-0-85-110 _1iksxp40-0-85-110 sc-5a42a2a6-1 jhIrvr" title="Find out what's included in Dynatrace Infrastructure Monitoring mode." href="https://docs.dynatrace.com/docs/observe/infrastructure-monitoring/hosts/monitoring-modes" target="_blank" rel="noopener"&gt;Full-Stack and Infrastructure Monitoring&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;deployments. It is&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG class="_wxp4dd0-0-85-110"&gt;not&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;available with&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-0-85-110 _1iksxp40-0-85-110 sc-5a42a2a6-1 jhIrvr" title="Deploy Dynatrace Operator on Kubernetes" href="https://docs.dynatrace.com/docs/ingest-from/setup-on-k8s/deployment" target="_blank" rel="noopener"&gt;containerized setups&lt;/A&gt;&lt;SPAN&gt;. Please use&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-0-85-110 _1iksxp40-0-85-110 sc-5a42a2a6-1 jhIrvr" href="https://docs.dynatrace.com/docs/ingest-from/opentelemetry/getting-started/otlp-export#export-to-saas-and-activegate" target="_blank" rel="noopener"&gt;ActiveGate&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;as the export endpoint for container applications.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Exporting traces to Dynatrace API:&lt;/H4&gt;
&lt;P&gt;This is a general case when traces and metrics are being exported to Dynatrace API, and the configuration might look the following way:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;set the supported protocol:&lt;BR /&gt;&lt;STRONG&gt;app property:&lt;/STRONG&gt; &lt;CODE&gt;quarkus.otel.exporter.otlp.traces.protocol=http/protobuf&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&lt;/STRONG&gt; &lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf&lt;/CODE&gt;&lt;/LI&gt;
&lt;LI&gt;generic endpoint&amp;nbsp;for OTel signals as Quarkus, then substitute the exact URL for traces or metrics (all available endpoints are available &lt;A title="Export to SaaS and ActiveGate" href="https://docs.dynatrace.com/docs/ingest-from/opentelemetry/getting-started/otlp-export#export-to-saas-and-activegate" target="_self"&gt;here&lt;/A&gt;:&lt;BR /&gt;&lt;STRONG&gt;app property:&lt;/STRONG&gt; &lt;CODE&gt;quarkus.otel.exporter.otlp.endpoint=h&lt;SPAN&gt;ttps://{your-activegate-domain}:9999/e/{your-environment-id}/api/v2/otlp&lt;/SPAN&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&lt;/STRONG&gt;&amp;nbsp;&lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_ENDPOINT=h&lt;SPAN&gt;ttps://{your-activegate-domain}:9999/e/{your-environment-id}/api/v2/otlp&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/LI&gt;
&lt;LI&gt;also, is required to set the authorization header:&lt;BR /&gt;&lt;STRONG&gt;app property:&amp;nbsp;&lt;/STRONG&gt;&lt;CODE&gt;quarkus.otel.exporter.otlp.headers="Authorization: Api-Token dt....."&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&amp;nbsp;&lt;/STRONG&gt;&lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_HEADERS="Authorization: Api-Token dt....."&lt;/CODE&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Troubleshooting&lt;/H4&gt;
&lt;P&gt;For troubleshooting purposes to understand which data is being exported by OTel in your application, you could add a &lt;STRONG&gt;logging&lt;/STRONG&gt; exporter.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE&lt;/STRONG&gt;: it is not recommended to be used in production.&lt;/P&gt;
&lt;P&gt;In this case, would be required to add to your project the dependency&amp;nbsp;&lt;SPAN&gt;&lt;A href="https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-exporter-logging" target="_blank" rel="noopener"&gt;opentelemetry-exporter-logging&lt;/A&gt; and then configure it accordingly:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN&gt;set the&amp;nbsp;&lt;CODE&gt;logging&lt;/CODE&gt;&amp;nbsp;exporter in the&amp;nbsp;&lt;CODE&gt;application.properties&lt;/CODE&gt;&amp;nbsp;file:&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;LI-CODE lang="c"&gt;# setting logging exporter for traces
# the parameter accepts list of exporters separated by commas
quarkus.otel.traces.exporter=logging
# setting logging exporter for metrics 
# the parameter accepts list of exporters separated by commas
quarkus.otel.metrics.exporter=logging
# overriding the default 1m interval to 10s
quarkus.otel.metric.export.interval=10000ms 
&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;set the&amp;nbsp;&lt;CODE&gt;logging&lt;/CODE&gt;&amp;nbsp;exporter via environment variables:&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;LI-CODE lang="c"&gt;QUARKUS_OTEL_TRACES_EXPORTER=logging
QUARKUS_OTEL_METRICS_EXPORTER=logging
QUARKUS_OTEL_METRIC_EXPORT_INTERVAL=10000ms&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For reference, please have a look at the official &lt;A href="https://quarkus.io/guides/opentelemetry" target="_blank" rel="noopener"&gt;Quarkus&amp;nbsp;OpenTelemetry Configuration&lt;/A&gt; page.&lt;/P&gt;
&lt;/DIV&gt;</description>
    <pubDate>Mon, 31 Mar 2025 07:53:13 GMT</pubDate>
    <dc:creator>anton_konikov</dc:creator>
    <dc:date>2025-03-31T07:53:13Z</dc:date>
    <item>
      <title>Configuring Quarkus to export OpenTelemetry signals to Dynatrace</title>
      <link>https://community.dynatrace.com/t5/Troubleshooting/Configuring-Quarkus-to-export-OpenTelemetry-signals-to-Dynatrace/ta-p/272126</link>
      <description>&lt;DIV class="lia-message-template-content-zone"&gt;
&lt;P&gt;OpenTelemetry configuration of the Quarkus native application can be done by setting values in the&amp;nbsp;&lt;CODE&gt;src/main/resources/application.properties&lt;/CODE&gt; or via the environment variables.&lt;/P&gt;
&lt;H4&gt;Quarkus application is run on the host with OneAgent:&lt;/H4&gt;
&lt;P&gt;In case of deploying OA in the &lt;STRONG&gt;classicFullstack&lt;/STRONG&gt; mode, you can export &lt;STRONG&gt;traces&lt;/STRONG&gt; directly to the &lt;A href="https://docs.dynatrace.com/docs/ingest-from/opentelemetry/getting-started/otlp-export#export-to-oneagent-traces-only" target="_blank" rel="noopener"&gt;OneAgent API endpoint&lt;/A&gt;. The configuration might look like in the following way:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;set the supported protocol:&lt;BR /&gt;&lt;STRONG&gt;app property:&lt;/STRONG&gt; &lt;CODE&gt;quarkus.otel.exporter.otlp.traces.protocol=http/protobuf&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&lt;/STRONG&gt; &lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf&lt;/CODE&gt;&lt;/LI&gt;
&lt;LI&gt;then use one of the following URLs. However, please note that OA on the host accepts only &lt;STRONG&gt;traces&lt;/STRONG&gt;, and when specified, generic endpoint metrics and logs will be rejected:
&lt;UL&gt;
&lt;LI&gt;set endpoint for traces only:&lt;BR /&gt;&lt;STRONG&gt;app property:&lt;/STRONG&gt; &lt;CODE&gt;quarkus.otel.exporter.otlp.traces.endpoint=&lt;A href="http://localhost:14499/otlp/v1/traces" target="_blank" rel="noopener"&gt;http://localhost:14499/otlp/v1/traces&lt;/A&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&lt;/STRONG&gt;&amp;nbsp;&lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=&lt;A href="http://localhost:14499/otlp/v1/traces" target="_blank" rel="noopener"&gt;http://localhost:14499/otlp/v1/traces&lt;/A&gt;&lt;/CODE&gt;&lt;/LI&gt;
&lt;LI&gt;generic endpoint&amp;nbsp;for OTel signals as Quarkus, then substitute the exact URL for traces or metrics:&lt;BR /&gt;&lt;STRONG&gt;app property:&lt;/STRONG&gt; &lt;CODE&gt;quarkus.otel.exporter.otlp.endpoint=&lt;A href="http://localhost:1443/otlp" target="_blank" rel="noopener"&gt;http://localhost:&lt;SPAN&gt;14499&lt;/SPAN&gt;/otlp&lt;/A&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&lt;/STRONG&gt;&amp;nbsp;&lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_ENDPOINT=&lt;A href="http://localhost:1443/otlp" target="_blank" rel="noopener"&gt;http://localhost:&lt;SPAN&gt;14499&lt;/SPAN&gt;/otlp&lt;/A&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE:&lt;/STRONG&gt;&amp;nbsp;&lt;SPAN&gt;The EEC ingestion endpoint is only available with&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-0-85-110 _1iksxp40-0-85-110 sc-5a42a2a6-1 jhIrvr" title="Find out what's included in Dynatrace Infrastructure Monitoring mode." href="https://docs.dynatrace.com/docs/observe/infrastructure-monitoring/hosts/monitoring-modes" target="_blank" rel="noopener"&gt;Full-Stack and Infrastructure Monitoring&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;deployments. It is&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG class="_wxp4dd0-0-85-110"&gt;not&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;available with&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-0-85-110 _1iksxp40-0-85-110 sc-5a42a2a6-1 jhIrvr" title="Deploy Dynatrace Operator on Kubernetes" href="https://docs.dynatrace.com/docs/ingest-from/setup-on-k8s/deployment" target="_blank" rel="noopener"&gt;containerized setups&lt;/A&gt;&lt;SPAN&gt;. Please use&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_z2r50s3-0-85-110 _1iksxp40-0-85-110 sc-5a42a2a6-1 jhIrvr" href="https://docs.dynatrace.com/docs/ingest-from/opentelemetry/getting-started/otlp-export#export-to-saas-and-activegate" target="_blank" rel="noopener"&gt;ActiveGate&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;as the export endpoint for container applications.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Exporting traces to Dynatrace API:&lt;/H4&gt;
&lt;P&gt;This is a general case when traces and metrics are being exported to Dynatrace API, and the configuration might look the following way:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;set the supported protocol:&lt;BR /&gt;&lt;STRONG&gt;app property:&lt;/STRONG&gt; &lt;CODE&gt;quarkus.otel.exporter.otlp.traces.protocol=http/protobuf&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&lt;/STRONG&gt; &lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf&lt;/CODE&gt;&lt;/LI&gt;
&lt;LI&gt;generic endpoint&amp;nbsp;for OTel signals as Quarkus, then substitute the exact URL for traces or metrics (all available endpoints are available &lt;A title="Export to SaaS and ActiveGate" href="https://docs.dynatrace.com/docs/ingest-from/opentelemetry/getting-started/otlp-export#export-to-saas-and-activegate" target="_self"&gt;here&lt;/A&gt;:&lt;BR /&gt;&lt;STRONG&gt;app property:&lt;/STRONG&gt; &lt;CODE&gt;quarkus.otel.exporter.otlp.endpoint=h&lt;SPAN&gt;ttps://{your-activegate-domain}:9999/e/{your-environment-id}/api/v2/otlp&lt;/SPAN&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&lt;/STRONG&gt;&amp;nbsp;&lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_ENDPOINT=h&lt;SPAN&gt;ttps://{your-activegate-domain}:9999/e/{your-environment-id}/api/v2/otlp&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/LI&gt;
&lt;LI&gt;also, is required to set the authorization header:&lt;BR /&gt;&lt;STRONG&gt;app property:&amp;nbsp;&lt;/STRONG&gt;&lt;CODE&gt;quarkus.otel.exporter.otlp.headers="Authorization: Api-Token dt....."&lt;/CODE&gt;&lt;BR /&gt;&lt;STRONG&gt;env variable:&amp;nbsp;&lt;/STRONG&gt;&lt;CODE&gt;QUARKUS_OTEL_EXPORTER_OTLP_HEADERS="Authorization: Api-Token dt....."&lt;/CODE&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Troubleshooting&lt;/H4&gt;
&lt;P&gt;For troubleshooting purposes to understand which data is being exported by OTel in your application, you could add a &lt;STRONG&gt;logging&lt;/STRONG&gt; exporter.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE&lt;/STRONG&gt;: it is not recommended to be used in production.&lt;/P&gt;
&lt;P&gt;In this case, would be required to add to your project the dependency&amp;nbsp;&lt;SPAN&gt;&lt;A href="https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-exporter-logging" target="_blank" rel="noopener"&gt;opentelemetry-exporter-logging&lt;/A&gt; and then configure it accordingly:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN&gt;set the&amp;nbsp;&lt;CODE&gt;logging&lt;/CODE&gt;&amp;nbsp;exporter in the&amp;nbsp;&lt;CODE&gt;application.properties&lt;/CODE&gt;&amp;nbsp;file:&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;LI-CODE lang="c"&gt;# setting logging exporter for traces
# the parameter accepts list of exporters separated by commas
quarkus.otel.traces.exporter=logging
# setting logging exporter for metrics 
# the parameter accepts list of exporters separated by commas
quarkus.otel.metrics.exporter=logging
# overriding the default 1m interval to 10s
quarkus.otel.metric.export.interval=10000ms 
&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;set the&amp;nbsp;&lt;CODE&gt;logging&lt;/CODE&gt;&amp;nbsp;exporter via environment variables:&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;LI-CODE lang="c"&gt;QUARKUS_OTEL_TRACES_EXPORTER=logging
QUARKUS_OTEL_METRICS_EXPORTER=logging
QUARKUS_OTEL_METRIC_EXPORT_INTERVAL=10000ms&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For reference, please have a look at the official &lt;A href="https://quarkus.io/guides/opentelemetry" target="_blank" rel="noopener"&gt;Quarkus&amp;nbsp;OpenTelemetry Configuration&lt;/A&gt; page.&lt;/P&gt;
&lt;/DIV&gt;</description>
      <pubDate>Mon, 31 Mar 2025 07:53:13 GMT</pubDate>
      <guid>https://community.dynatrace.com/t5/Troubleshooting/Configuring-Quarkus-to-export-OpenTelemetry-signals-to-Dynatrace/ta-p/272126</guid>
      <dc:creator>anton_konikov</dc:creator>
      <dc:date>2025-03-31T07:53:13Z</dc:date>
    </item>
  </channel>
</rss>

