Exportación de datos de OpenTelemetry a Dynatrace en Azure Container Apps

En esta guía se muestra cómo configurar Azure Container Apps para reenviar registros, seguimientos y métricas a Dynatrace mediante el agente de OpenTelemetry administrado.

Para obtener más información sobre el agente de OpenTelemetry administrado, consulte Set up OpenTelemetry agents in Azure Container Apps.

Lo que aprendes

  • Cree un token de ingesta de Dynatrace con los ámbitos necesarios.
  • Configure un destino de Protocolo OpenTelemetry (OTLP) de Dynatrace mediante Bicep o Azure Portal.
  • Configure las variables de entorno de aplicación necesarias para la exportación de métricas.
  • Aplique actualizaciones de configuración al entorno y la aplicación de Container Apps existentes.
  • Compruebe la telemetría en Dynatrace.

Prerequisites

  • Una suscripción Azure en la que puede crear grupos de recursos e implementar Azure Container Apps recursos.
  • Un entorno SaaS de Dynatrace.
  • CLI de Azure instalada e iniciada sesión.
  • Extensión de la CLI de Azure Container Apps instalada.
az extension add --name containerapp --upgrade

Creación de un token de ingesta de Dynatrace

Cree un token de API de Dynatrace con estos ámbitos:

  • logs.ingest
  • metrics.ingest
  • openTelemetryTrace.ingest

Para conocer los pasos de creación de tokens y los detalles de los permisos, consulte Guía de autenticación de OTLP de Dynatrace.

Configuración de destinos de OpenTelemetry

Use una de las siguientes opciones para configurar Dynatrace como punto de conexión de OpenTelemetry en el entorno de Container Apps.

Importante

La configuración de un destino de OpenTelemetry administrado no genera automáticamente telemetría. La aplicación también debe instrumentarse para emitir seguimientos, métricas y registros mediante un SDK de OpenTelemetry.

Establezca variables de la CLI para el comando de implementación:

$RESOURCE_GROUP = "<RESOURCE_GROUP_NAME>"
$DYNATRACE_OTLP_ENDPOINT = "https://<TENANT>.live.dynatrace.com/api/v2/otlp"
$DYNATRACE_API_TOKEN = "<DYNATRACE_INGEST_TOKEN>"

Use solo el punto de conexión base de OTLP (/api/v2/otlp). No añada /v1/traces, /v1/metrics o /v1/logs; el agente gestionado añade las rutas de señal automáticamente.

var dynatraceEndpoint = 'https://<TENANT>.live.dynatrace.com/api/v2/otlp'
var dynatraceApiKey = '<DYNATRACE_INGEST_TOKEN>'
var dynatraceAuthHeader = 'Api-Token ${dynatraceApiKey}'
var dynatraceOtlpDestinationName = 'dynatrace-otlp'

resource environment 'Microsoft.App/managedEnvironments@2026-03-02-preview' = {
  name: '<managed-environment-name>'
  location: '<region>'
  properties: {
    openTelemetryConfiguration: {
      destinationsConfiguration: {
        otlpConfigurations: [
          {
            name: dynatraceOtlpDestinationName
            endpoint: dynatraceEndpoint
            protocol: 'http'
            insecure: false
            headers: [
              {
                key: 'Authorization'
                value: dynatraceAuthHeader
              }
            ]
          }
        ]
      }
      tracesConfiguration: {
        destinations: [
          dynatraceOtlpDestinationName
        ]
      }
      logsConfiguration: {
        destinations: [
          dynatraceOtlpDestinationName
        ]
      }
      metricsConfiguration: {
        destinations: [
          dynatraceOtlpDestinationName
        ]
      }
    }
  }
}

Para establecer las variables de entorno necesarias, use un bloque de recursos de aplicación de contenedor como el ejemplo siguiente:

resource app 'Microsoft.App/containerApps@2023-05-01' = {
  name: '<CONTAINER_APP_NAME>'
  location: '<REGION>'
  properties: {
    managedEnvironmentId: environment.id
    template: {
      containers: [
        {
          name: '<CONTAINER_NAME>'
          image: '<IMAGE_NAME>'
          env: [
            {
              name: 'OTEL_SERVICE_NAME'
              value: '<SERVICE_NAME>'
            }
            {
              name: 'OTEL_TRACES_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_METRICS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_LOGS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_EXPORTER_OTLP_METRICS_PROTOCOL'
              value: 'http/protobuf'
            }
            {
              name: 'OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE'
              value: 'DELTA'
            }
          ]
        }
      ]
    }
  }
}

Dynatrace requiere OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=DELTA para la ingesta de métricas.

Para las implementaciones en producción, pase los valores de los tokens mediante parámetros seguros de Bicep o Key Vault en lugar de codificar los secretos de forma rígida.

Después de actualizar la plantilla, implemente la configuración de Bicep desde la raíz del repositorio:

az deployment group create `
  --resource-group $RESOURCE_GROUP `
  --template-file infra/main.bicep `
  --parameters @infra/main.parameters.json `
  dynatraceEndpoint="$DYNATRACE_OTLP_ENDPOINT" `
  dynatraceApiKey="$DYNATRACE_API_TOKEN"

Use los mismos valores de punto de conexión y token mostrados anteriormente en esta guía, incluido el formato de punto de conexión base de OTLP.

La aplicación contenedora ahora está configurada para enviar telemetría a Dynatrace.

Comprobación de los datos de OpenTelemetry en Dynatrace

Después de completar la configuración, la aplicación de contenedor debería empezar a enviar telemetría a Dynatrace a través del agente de OpenTelemetry administrado. La forma más rápida de confirmar que todas las métricas, los registros y los seguimientos llegan desde la aplicación es abrir la aplicación Services en Dynatrace. La aplicación Servicios proporciona una sola pantalla en la que puede validar las tres señales de telemetría del servicio en un solo lugar.

Para comprobar la telemetría:

  1. Abra la aplicación Servicios en Dynatrace.
  2. Ubique su servicio Container App y confirme que las métricas, los registros y las trazas estén presentes en el contexto de servicio o entorno esperado.

Si necesita información sobre cómo se ingieren los datos de OpenTelemetry en Dynatrace, consulte la guía de introducción de OpenTelemetry.

Si falta telemetría o no aparece como se esperaba, consulte la guía de solución de problemas de OpenTelemetry.