Join the Preview!

El Datadog Agent con el recopilador integrado de OpenTelemetry está en vista previa. Para solicitar acceso, completa este formulario.

Request Access

Si ya utilizas un recopilador independiente de OpenTelemetry (OTel) para tus aplicaciones instrumentadas por OTel, puedes migrar al Datadog Agent con el recopilador integrado de OpenTelemetry. El recopilador integrado de OTel te permite aprovechar las capacidades mejoradas de Datadog, incluidas configuraciones optimizadas, integraciones sin fisuras y funciones adicionales adaptadas al ecosistema de Datadog.

Para migrar al Datadog Agent con el recopilador integrado de OpenTelemetry, debes instalar el Datadog Agent y configurar tus aplicaciones para informar de los datos de telemetría.

Esta guía aborda la migración del recopilador de OpenTelemetry desplegado como un Agent. El patrón de despliegue de la puerta de enlace no es compatible.

Requisitos previos

Antes de iniciar el proceso de migración, asegúrate de que tienes:

  • Una cuenta válida en Datadog
  • Una aplicación instrumentada con OpenTelemetry lista para enviar datos telemétricos
  • Acceso a tus configuraciones actuales del recopilador de OpenTelemetry
  • Acceso administrativo a tu clúster de Kubernetes (se requiere Kubernetes v1.29+)
  • Helm v3+

Revisar la configuración existente

Antes de empezar, revisa tu configuración para ver si tu configuración existente es compatible por defecto:

  1. Examina tu archivo de configuración existente del recopilador de OpenTelemetry (otel-config.yaml).
  2. Compáralo con la lista de componentes incluido por defecto en el Datadog Agent.
  3. Si tu configuración utiliza componentes no incluidos por defecto en el Agent, sigue las instrucciones de Uso de componentes personalizados de OpenTelemetry con el Datadog Agent.

Ejemplo de configuración

Aquí tienes dos archivos de ejemplo de configuración del recopilador:

Este ejemplo utiliza un componente metricstransform personalizado:

collector-config.yaml

receivers:
  otlp:
    protocols:
      grpc:
         endpoint: 0.0.0.0:4317
      http:
         endpoint: 0.0.0.0:4318
exporters:
  datadog:
    api:
      key: ${env:DD_API_KEY}
processors:
  infraattributes:
    cardinality: 2
  batch:
    timeout: 10s
  metricstransform:
    transforms:
      - include: system.cpu.usage
        action: insert
        new_name: host.cpu.utilization
connectors:
  datadog/connector:
    traces:
      compute_top_level_by_span_kind: true
      peer_tags_aggregation: true
      compute_stats_by_span_kind: true
service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [infraattributes, batch]
      exporters: [datadog/connector, datadog]
    metrics:
      receivers: [otlp, datadog/connector]
      processors: [metricstransform, infraattributes, batch]
      exporters: [datadog]
    logs:
      receivers: [otlp]
      processors: [infraattributes, batch]
      exporters: [datadog]

En este caso, es necesario seguir las instrucciones de Uso de componentes personalizados de OpenTelemetry con Datadog Agent.

Este ejemplo sólo utiliza componentes incluidos por defecto en el Datadog Agent:

collector-config.yaml

receivers:
  otlp:
    protocols:
      grpc:
         endpoint: 0.0.0.0:4317
      http:
         endpoint: 0.0.0.0:4318
exporters:
  datadog:
    api:
      key: ${env:DD_API_KEY}
processors:
  infraattributes:
    cardinality: 2
  batch:
    timeout: 10s
connectors:
  datadog/connector:
    traces:
      compute_top_level_by_span_kind: true
      peer_tags_aggregation: true
      compute_stats_by_span_kind: true
service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [infraattributes, batch]
      exporters: [datadog/connector, datadog]
    metrics:
      receivers: [otlp, datadog/connector]
      processors: [infraattributes, batch]
      exporters: [datadog]
    logs:
      receivers: [otlp]
      processors: [infraattributes, batch]
      exporters: [datadog]

En este caso, puedes proceder a la instalación del Agent con el recopilador integrado de OpenTelemetry.

Instalar el Agent con el recopilador de OpenTelemetry

Sigue estos pasos para instalar el Agent con el recopilador integrado de OpenTelemetry.

Añadir el repositorio de Datadog Helm

Para añadir el repositorio de Datadog a tus repositorios de Helm:

helm repo add datadog https://helm.datadoghq.com
helm repo update

Configurar la API de Datadog y las claves de aplicación

  1. Obtén la API de Datadog y las claves de aplicación.
  2. Almacena las claves como un secreto en Kubernetes:
    kubectl create secret generic datadog-secret \
      --from-literal api-key=<DD_API_KEY> \
      --from-literal app-key=<DD_APP_KEY>
    
    Sustituye <DD_API_KEY> y <DD_APP_KEY> por tus claves de aplicación y la API de Datadog reales.

Configurar el Datadog Agent

Utiliza un archivo YAML para especificar los parámetros del Helm chart para la tabla del Datadog Agent.

  1. Crea un archivo datadog-values.yaml vacío:

    touch datadog-values.yaml
    
    Los parámetros no especificados utilizan los valores por defecto del values.yaml.
  2. Configura la API de Datadog y los secretos de las claves de aplicación:

    datadog-values.yaml

    datadog:
      site: datadoghq.com
      apiKeyExistingSecret: datadog-secret
      appKeyExistingSecret: datadog-secret
      logLevel: info
       
    Establezca datadog.site como su sitioDatadog . De lo contrario, por defecto es datadoghq.com, el sitio US1.

    El valor del parámetro loguear level Datadog.logLevel debe estar en minúsculas. Los niveles válidos de loguear son: rastreardebug, info, warn, error, critical, off.
  3. Cambie la imagen Datadog Agent etiquetar para utilizar compilaciones con OpenTelemetry integrado Collector:

    datadog-values.yaml

    agents:
      image:
        repository: gcr.io/datadoghq/agent
        etiquetar: 7.62.2-ot-beta-jmx
        doNotCheckTag: true
    ...
       

    Esta guía utiliza un ejemplo de aplicación Java. El sufijo -jmx en la etiqueta image habilita las utilidades JMX. Para aplicaciones que no sean Java, utiliza nightly-ot-beta-main en su lugar.
    Para más detalles, consulta la guía de Autodiscovery e integración de JMX.
  4. Habilita el recopilador de OpenTelemetry y configura los puertos esenciales:

    datadog-values.yaml

    datadog:
      ...
      otelCollector:
        enabled: true
        ports:
          - containerPort: "4317" # default port for OpenTelemetry gRPC receiver.
            hostPort: "4317"
            name: otel-grpc
          - containerPort: "4318" # default port for OpenTelemetry HTTP receiver
            hostPort: "4318"
            name: otel-http
       
    Debes configurar el hostPort para que el puerto del contenedor sea expuesto a la red externa. Esto permite configurar el exportador OTLP para que apunte a la dirección IP del nodo al que está asignado el Datadog Agent.

    Si no deseas exponer el puerto, puedes utilizar en su lugar el servicio del Agent:

    1. Elimina las entradas hostPort de tu archivo datadog-values.yaml.
    2. En el archivo de despliegue de tu aplicación (deployment.yaml), configura el exportador OTLP para utilizar el servicio del Agent:
      env:
        - name: OTEL_EXPORTER_OTLP_ENDPOINT
          value: 'http://<SERVICE_NAME>.<SERVICE_NAMESPACE>.svc.cluster.local'
        - name: OTEL_EXPORTER_OTLP_PROTOCOL
          value: 'grpc'
      
  5. (Opcional) Habilita las funciones adicionales de Datadog:

    La activación de estas funciones puede conllevar gastos adicionales. Consulta la página de precios y habla con tu CSM antes de continuar.

    datadog-values.yaml

    datadog:
      ...
      apm:
        portEnabled: true
        peer_tags_aggregation: true
        compute_stats_by_span_kind: true
        peer_service_aggregation: true
      orchestratorExplorer:
        enabled: true
      processAgent:
        enabled: true
        processCollection: true
       
  6. (Opcional) Reúne las etiquetas (labels) de los pods y utilízalas como etiquetas (tags) para fijarlas a métricas, trazas (traces) y logs:

    Las métricas personalizadas pueden afectar a la facturación. Consulta la página de facturación de métricas personalizadas para obtener más información.

    datadog-values.yaml

    datadog:
      ...
      podLabelsAsTags:
        app: kube_app
        release: helm_release

Su datadog-values.yaml archivo debe ser algo como esto:

Datadog-values.yaml

agentes:
  image:
    repository: gcr.io/datadoghq/Agent
   etiquetar: 7.62.2-ot-beta-jmx
    doNotCheckTag: true

Datadog:
  sitio: datadoghq.com
  apiKeyExistingSecret: Datadog-secret
  appKeyExistingSecret: Datadog-secret
  logLevel: info

  otelCollector:
    enabled: true
    ports:
      - containerPort: "4317"
        hostPort: "4317"
        name: otel-grpc
      - containerPort: "4318"
        hostPort: "4318"
        name: otel-http
  apm:
    portEnabled: true
    peer_tags_aggregation: true
    compute_stats_by_span_kind: true
    peer_service_aggregation: true
  orchestratorExplorer:
    enabled: true
  processAgent:
    enabled: true
    processCollection: true

  podLabelsAsTags:
    app: kube_app
    release: helm_release
   

Despliegue del Agent con el recopilador de OpenTelemetry

  1. Instala o actualiza el Datadog Agent con el recopilador de OpenTelemetry en tu entorno de Kubernetes:
    helm upgrade -i <RELEASE_NAME> datadog/datadog \
      -f datadog-values.yaml \
      --set-file datadog.otelCollector.config=collector-config.yaml
    
  2. Navega a Integrations > Fleet Automation (Integraciones > Automatización de flotas).
  3. Selecciona la faceta OTel Collector Version (Versión del recopilador OTel).
  4. Selecciona un Agent e inspecciona su configuración para comprobar que el nuevo Agent con el recopilador de OpenTelemetry se ha instalado correctamente.

Configurar la aplicación

Para configurar tu aplicación existente para que utilice Datadog Agent en lugar del recopilador independiente, asegúrate de que se utiliza el nombre de host correcto del endpoint OTLP. El Datadog Agent con el recopilador integrado se despliega como un DaemonSet, por lo que el host actual necesita ser dirigido.

  1. Ve al archivo de manifiesto de despliegue de tu aplicación (deployment.yaml).
  2. Añade las siguientes variables de entorno para configurar el endpoint OTLP:

    deployment.yaml

    env:
      ...
      - name: HOST_IP
        valueFrom:
         fieldRef:
            fieldPath: status.hostIP
      - name: OTLP_GRPC_PORT
        value: "4317"
      - name: OTEL_EXPORTER_OTLP_ENDPOINT
        value: 'http://$(HOST_IP):$(OTLP_GRPC_PORT)'
      - name: OTEL_EXPORTER_OTLP_PROTOCOL
        value: 'grpc'

Correlacionar los datos de observabilidad

El etiquetado unificado de servicios unifica los datos de observabilidad en Datadog para que puedas navegar por métricas, trazas y logs con etiquetas coherentes.

Para configurar tu aplicación con el etiquetado unificado de servicios, establece la variable de entorno OTEL_RESOURCE_ATTRIBUTES:

  1. Ve al archivo de manifiesto de despliegue de tu aplicación.
  2. Añade las siguientes líneas para permitir la correlación entre las trazas de aplicación y otros datos de observabilidad:

    deployment.yaml

    env:
      ...
      - name: OTEL_SERVICE_NAME
        value: {{ include "calendar.fullname" . }}
      - name: OTEL_K8S_NAMESPACE
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: metadata.namespace
      - name: OTEL_K8S_NODE_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.nodeName
      - name: OTEL_K8S_POD_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: metadata.name
      - name: OTEL_EXPORTER_OTLP_PROTOCOL
        value: 'grpc'
      - name: OTEL_RESOURCE_ATTRIBUTES
        value: >-
          service.name=$(OTEL_SERVICE_NAME),
          k8s.namespace.name=$(OTEL_K8S_NAMESPACE),
          k8s.node.name=$(OTEL_K8S_NODE_NAME),
          k8s.pod.name=$(OTEL_K8S_POD_NAME),
          k8s.container.name={{ .Chart.Name }},
          host.name=$(OTEL_K8S_NODE_NAME),
          deployment.environment=$(OTEL_K8S_NAMESPACE)      

Verificar el flujo de datos

Después de configurar tu aplicación, comprueba que los datos fluyen correctamente a Datadog:

  1. Aplica los cambios de configuración volviendo a desplegar tus aplicaciones.
    kubectl apply -f deployment.yaml
    
  2. Confirma que los datos de telemetría se están recibiendo en tu cuenta de Datadog. Comprueba los logs, trazas y métricas para asegurar la correcta recopilación y correlación de los datos.

Desinstalar el recopilador independiente

Una vez que hayas confirmado que todos los datos se están recopilando correctamente en Datadog, puedes eliminar la versión independiente del recopilador de OpenTelemetry:

  1. Asegúrate de que todos los datos necesarios se recopilan y se muestran en Datadog.
  2. Desinstala el recopilador de código abierto de OpenTelemetry de tu entorno:
    kubectl delete deployment old-otel-collector
    

Referencias adicionales

PREVIEWING: brett.blue/embedded-collector-release