Exportación de OpenTelemetry Elastic en Azure Container Apps

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

Para obtener más información sobre el agente de OpenTelemetry administrado, consulte Agentes de OpenTelemetry en Azure Container Apps.

En esta guía, aprenderá a:

  • Cree un token de ingesta elástica.
  • Configure un destino de Elastic OTLP mediante Bicep o el portal de Azure.
  • Configure las variables de entorno de aplicación necesarias.
  • Aplique actualizaciones de configuración al entorno y la aplicación de Container Apps existentes.
  • Compruebe la telemetría en Elastic.

Prerequisites

  • Una suscripción de Azure
  • Una cuenta de Elastic y una implementación o proyecto de destino que acepte ingesta de OTLP.
  • CLI de Azure instalado y con sesión iniciada en la cuenta de Azure.
  • Extensión de CLI de Azure Container Apps instalada (para Bicep).
az extension add --name containerapp --upgrade

Crear un token de ingestión de Elastic

Cree una clave de API de Elastic que pueda recibir datos de OpenTelemetry para su despliegue de destino.

Los permisos necesarios deben permitir la escritura de datos de telemetría para estas señales:

  • Ingesta y escritura de registros
  • Ingesta y escritura de seguimientos
  • Ingesta y escritura de métricas

Para obtener instrucciones del proveedor sobre los permisos de token y las claves de API, consulte Claves de API elásticas.

Configuración de destinos de OpenTelemetry

Use una de las siguientes opciones para configurar Elastic como punto de conexión de OTel 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 ya debe instrumentarse para emitir seguimientos, métricas y registros mediante un SDK de OpenTelemetry.

Establecer variables de la CLI para la implementación:

$RESOURCE_GROUP = "<RESOURCE_GROUP_NAME>"
$ELASTIC_OTLP_ENDPOINT = "https://<YOUR_ELASTIC_ENDPOINT>:443"
$ELASTIC_API_KEY = "<ELASTIC_API_KEY_WITHOUT_PREFIX>"

Use el formato de punto de conexión base de Elastic OTLP:

  • https://<YOUR_ELASTIC_ENDPOINT>:443

Utilice el formato de encabezado del token de autorización:

  • Clave de encabezado: Authorization
  • Valor de encabezado: ApiKey <TOKEN>

Use este ejemplo de recurso de entorno administrado para configurar el enrutamiento de destino:

@secure()
param elasticApiKey string
param elasticOtlpEndpoint string = 'https://<YOUR_ELASTIC_ENDPOINT>:443'

var elasticDestinationName = 'elastic-otlp'
var elasticAuthHeaderValue = 'ApiKey ${elasticApiKey}'

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

Use este ejemplo de recurso de aplicación para establecer las variables de entorno de aplicación necesarias:

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_TEMPORALITY_PREFERENCE'
              value: 'cumulative'
            }
          ]
        }
      ]
    }
  }
}

Aplique 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 `
  --parameters elasticOtlpEndpoint="$ELASTIC_OTLP_ENDPOINT" `
  --parameters elasticApiKey="$ELASTIC_API_KEY"

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

Comprobación de la telemetría en Elastic

Después de la configuración, compruebe que los registros, los seguimientos y las métricas llegan desde la aplicación y se asignan a la identidad de servicio esperada.

Use las vistas elásticas que se ajusten al flujo de trabajo.

Para obtener más información sobre la exploración y el análisis en Elastic, consulte la documentación sobre observabilidad elástica.