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"
AtributoObligatorioDescripción
cloud.providerSíConfigurado en aws
faas.idRecomendadoARN de la función Lambda (preferido para la identificación de la plataforma)
cloud.platformCondicionalConfigurado en aws_lambda si faas.id no está configurado
cloud.regionNoRegión de AWS
faas.nameNoNombre de la función
faas.versionNoVersión de la función
faas.instanceNoIdentificador de instancia
faas.max_memoryNoMemoria máxima configurada (bytes)
aws.log.group.namesNoNombres de grupos de registros de CloudWatch (habilita la correlación de registros de traza)
aws.log.stream.namesNoNombres 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"
AtributoObligatorioDescripción
aws.ecs.task.arnSíARN de la tarea de ECS
aws.ecs.launchtypeSíSe establece en fargate (sin distinción entre mayúsculas y minúsculas)
cloud.providerNoEl valor predeterminado es aws
cloud.platformNoSe establece de forma predeterminada en aws_ecs
cloud.regionNoRegión de AWS
cloud.availability_zoneNoZona de disponibilidad
aws.ecs.cluster.arnNoARN del clúster
aws.ecs.task.familyNoFamilia de definición de tarea
aws.ecs.task.idNoID de tarea
aws.ecs.task.revisionNoRevisión de definición de tarea
aws.log.group.namesNoNombres de grupos de registros de CloudWatch (habilita la correlación de registros de traza)
aws.log.stream.namesNoNombres 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

Plataformacloud.providercloud.platformcloud.resource_id
Container Appsazureazure.container_apps/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/containerApps/{appName}
Web Appsazureazure.app_service/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{appName}
Azure Functionsazureazure.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

PlataformaAtributos completados por GCP Resource Detector
Cloud Run / Cloud Run Functionscloud.account.id, cloud.platform, cloud.provider, cloud.region, faas.id, faas.instance, faas.name, faas.version
GKE Autopilotcloud.account.id, cloud.platform, cloud.provider, cloud.region, host.id, k8s.cluster.name

Lecturas adicionales