Ingesta de OTLP para Serverless
Descripción general
Envíe trazas desde cargas de trabajo serverless directamente a Datadog a través de HTTP/protobuf, sin requerir un Datadog Agent o OpenTelemetry Collector. Si su plataforma aparece en la tabla Managed platforms, utilice su punto de conexión dedicado en su lugar.
Las cargas de trabajo serverless también pueden enviar registros y métricas a través de los puntos de conexión generales de ingesta de OTLP registros y OTLP métricas. Los atributos de recurso en esta página se aplican a todas las señales que exporta su aplicación.
Plataformas compatibles:
- AWS: Lambda, ECS Fargate
- Azure: Container Apps, Web Apps (App Service), Azure Functions
- GCP: Cloud Run, Cloud Run Functions, GKE Autopilot
Utilice la ingesta directa cuando ejecutar un Collector no sea práctico (por ejemplo, Lambda). Si puede ejecutar un Collector, consulte
OpenTelemetry Collector para el enriquecimiento de metadatos, normalización y muestreo centralizado.
Requisitos previos
La siguiente configuración se aplica a todas las plataformas.
Protocolo: http/protobuf o http/json. grpc no es compatible.
Encabezados requeridos:
dd-api-key: Su clave de Datadog API.dd-otlp-source: Establezca serverless.compute_stats: Establezca true. Requerido para métricas de traza.
Nombre del servicio: Establezca OTEL_SERVICE_NAME para identificar su servicio. Sin esto, las trazas aparecen como unknown_service.
Atributos de recursos: Establezca atributos específicos de la plataforma con OTEL_RESOURCE_ATTRIBUTES. Consulte la pestaña de cada proveedor de nube a continuación para ver los atributos obligatorios y opcionales.
Identifique las cargas de trabajo con los atributos de plataforma en esta página, no con host.name. Para obtener recomendaciones de nombre de host para la ingesta directa de OTLP, consulte Nombre de host y etiquetado.
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=""
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="dd-api-key=${DD_API_KEY},dd-otlp-source=serverless,compute_stats=true"
export OTEL_SERVICE_NAME="my-service"
Configuración
Según su
sitio de Datadog, que es
: Reemplace
${YOUR_ENDPOINT} con
en los siguientes ejemplos.
Seleccione su proveedor de nube para la configuración de atributos de recursos específicos de la plataforma:
Lambda
La capa de Lambda de AWS Distro for OpenTelemetry (ADOT) proporciona instrumentación automática y detección de recursos para funciones Lambda.
Agregue la capa de ADOT a su función Lambda y configure las siguientes variables de entorno:
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="${YOUR_ENDPOINT}"
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="dd-api-key=${DD_API_KEY},dd-otlp-source=serverless,compute_stats=true"
export OTEL_SERVICE_NAME="my-lambda-function"
La capa de ADOT maneja la detección de atributos de recursos automáticamente. Si no está utilizando ADOT, configure los atributos de recursos manualmente. cloud.provider es obligatorio. Establezca faas.id (un ARN de Lambda analizable) para la identificación completa de la plataforma; si faas.id no está disponible, establezca cloud.platform=aws_lambda en su lugar:
export OTEL_RESOURCE_ATTRIBUTES="cloud.provider=aws,faas.id=arn:aws:lambda:us-east-1:123456789012:function:my-function"
| Atributo | Obligatorio | Descripción |
|---|
cloud.provider | Sí | Configurado en aws |
faas.id | Recomendado | ARN de la función Lambda (preferido para la identificación de la plataforma) |
cloud.platform | Condicional | Configurado en aws_lambda si faas.id no está configurado |
cloud.region | No | Región de AWS |
faas.name | No | Nombre de la función |
faas.version | No | Versión de la función |
faas.instance | No | Identificador de instancia |
faas.max_memory | No | Memoria máxima configurada (bytes) |
aws.log.group.names | No | Nombres de grupos de registros de CloudWatch (habilita la correlación de registros de traza) |
aws.log.stream.names | No | Nombres de flujos de registros de CloudWatch |
ECS Fargate
La identificación de ECS Fargate se determina mediante el ARN de la tarea y el tipo de lanzamiento, no por cloud.provider o cloud.platform. Configure el SDK de OpenTelemetry para exportar trazas directamente desde su tarea de ECS:
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="${YOUR_ENDPOINT}"
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="dd-api-key=${DD_API_KEY},dd-otlp-source=serverless,compute_stats=true"
export OTEL_SERVICE_NAME="my-ecs-service"
export OTEL_RESOURCE_ATTRIBUTES="aws.ecs.task.arn=arn:aws:ecs:us-east-1:123456789012:task/my-cluster/1234567890abcdef,aws.ecs.launchtype=fargate"
| Atributo | Obligatorio | Descripción |
|---|
aws.ecs.task.arn | Sí | ARN de la tarea de ECS |
aws.ecs.launchtype | Sí | Se establece en fargate (sin distinción entre mayúsculas y minúsculas) |
cloud.provider | No | El valor predeterminado es aws |
cloud.platform | No | Se establece de forma predeterminada en aws_ecs |
cloud.region | No | Región de AWS |
cloud.availability_zone | No | Zona de disponibilidad |
aws.ecs.cluster.arn | No | ARN del clúster |
aws.ecs.task.family | No | Familia de definición de tarea |
aws.ecs.task.id | No | ID de tarea |
aws.ecs.task.revision | No | Revisión de definición de tarea |
aws.log.group.names | No | Nombres de grupos de registros de CloudWatch (habilita la correlación de registros de traza) |
aws.log.stream.names | No | Nombres de flujos de registros de CloudWatch |
El procesador de detección de recursos de Azure del OpenTelemetry Collector solo admite máquinas virtuales. Los detectores de recursos de Azure a nivel de SDK admiten algunas plataformas (Web Apps, Functions), pero la cobertura varía según el SDK del lenguaje. Establezca cloud.provider, cloud.platform, y cloud.resource_id manualmente como la ruta confiable para todas las plataformas Serverless de Azure.
Container Apps
La compatibilidad del detector de recursos de Azure para Container Apps varía según el SDK del lenguaje. Establezca los atributos de recurso manualmente:
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="${YOUR_ENDPOINT}"
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="dd-api-key=${DD_API_KEY},dd-otlp-source=serverless,compute_stats=true"
export OTEL_SERVICE_NAME="my-container-app"
export OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.platform=azure.container_apps,cloud.resource_id=/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/containerApps/{appName}"
Web Apps (servicio de aplicación)
Utilice el paquete SDK del detector de recursos de Azure (la cobertura varía según el SDK del lenguaje) o establezca OTEL_RESOURCE_ATTRIBUTES manualmente:
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="${YOUR_ENDPOINT}"
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="dd-api-key=${DD_API_KEY},dd-otlp-source=serverless,compute_stats=true"
export OTEL_SERVICE_NAME="my-web-app"
export OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.platform=azure.app_service,cloud.resource_id=/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{appName}"
Azure Functions
Utilice el paquete SDK del detector de recursos de Azure (la cobertura varía según el SDK del lenguaje) o establezca OTEL_RESOURCE_ATTRIBUTES manualmente:
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="${YOUR_ENDPOINT}"
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="dd-api-key=${DD_API_KEY},dd-otlp-source=serverless,compute_stats=true"
export OTEL_SERVICE_NAME="my-azure-function"
export OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.platform=azure.functions,cloud.resource_id=/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{functionAppName}"
Referencia de atributos de recurso
| Plataforma | cloud.provider | cloud.platform | cloud.resource_id |
|---|
| Container Apps | azure | azure.container_apps | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/containerApps/{appName} |
| Web Apps | azure | azure.app_service | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{appName} |
| Azure Functions | azure | azure.functions | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{functionAppName} |
La detección de recursos de GCP funciona automáticamente con el paquete SDK del detector de recursos de GCP. Agréguelo a las dependencias de su aplicación para completar los atributos de recursos sin configuración manual.
Cloud Run y Cloud Run Functions
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="${YOUR_ENDPOINT}"
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="dd-api-key=${DD_API_KEY},dd-otlp-source=serverless,compute_stats=true"
export OTEL_SERVICE_NAME="my-cloud-run-service"
El SDK de GCP Resource Detector completa automáticamente: cloud.account.id, cloud.platform, cloud.provider, cloud.region, faas.id, faas.instance, faas.name, faas.version.
GKE Autopilot
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="${YOUR_ENDPOINT}"
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="dd-api-key=${DD_API_KEY},dd-otlp-source=serverless,compute_stats=true"
export OTEL_SERVICE_NAME="my-gke-service"
El SDK de GCP Resource Detector completa automáticamente: cloud.account.id, cloud.platform, cloud.provider, cloud.region, host.id, k8s.cluster.name.
Referencia de atributos de recursos
| Plataforma | Atributos completados por GCP Resource Detector |
|---|
| Cloud Run / Cloud Run Functions | cloud.account.id, cloud.platform, cloud.provider, cloud.region, faas.id, faas.instance, faas.name, faas.version |
| GKE Autopilot | cloud.account.id, cloud.platform, cloud.provider, cloud.region, host.id, k8s.cluster.name |
Lecturas adicionales
Documentación, enlaces y artículos útiles adicionales: