La instalación del Collector DDOT independiente con herramientas de OpenTelemetry está en versión preliminar.

Descripción general

Siga esta guía para implementar la distribución de Datadog de OpenTelemetry (DDOT) Collector utilizando el OpenTelemetry Operator o el Helm chart.

¿Necesita componentes adicionales de OpenTelemetry? Si necesita componentes más allá de los incluidos en el paquete predeterminado, siga Utilice componentes personalizados de OpenTelemetry para ampliar las capacidades de DDOT. Para obtener una lista de los componentes incluidos de forma predeterminada, consulte Componentes del Collector de OpenTelemetry.

Requisitos

Para completar esta guía, necesita lo siguiente:

Cuenta de Datadog:

  1. Cree una cuenta de Datadog si no tiene una.
  2. Busque o cree su clave de API de Datadog.

Software: Instale y configure lo siguiente en su máquina:

Red:

ProtocoloTransportePuerto
gRPCTCP4317
HTTPTCP4318

Instale la distribución de Datadog del Collector de OpenTelemetry

Seleccione el método de instalación

Elija uno de los siguientes métodos de instalación:

Instale el OpenTelemetry Operator

Puede instalar el OpenTelemetry Operator en su clúster utilizando el OpenTelemetry Operator Helm chart:

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm repo update
helm install opentelemetry-operator open-telemetry/opentelemetry-operator   \
     --set "manager.createRbacPermissions=true"                             \
     --set "manager.collectorImage.repository=datadog/ddot-collector"       \
     --set "manager.collectorImage.tag=7.83.1"

Para FED, establezca la etiqueta en 7.83.1-fips para usar la imagen DDOT compatible con FIPS. Consulte cumplimiento de FIPS.

Agregue el repositorio de Helm de OpenTelemetry

Para agregar el repositorio de OpenTelemetry a sus repositorios de Helm:

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm repo update

Configure la clave de API de Datadog

  1. Obtenga la clave de API de Datadog.
  2. Confirme que el DATADOG SITE seleccionado a la derecha (Valor actual: ) corresponde a su DATADOG SITE.
  3. Almacene la clave de API como un secreto de Kubernetes:
    kubectl create secret generic datadog-secret \
      --from-literal api-key=<DD_API_KEY>        \
      --from-literal site=
    
    Replace <DD_API_KEY> with your actual Datadog API key.

Configure the OTel Collector

Después de implementar el OTel Operator, cree el recurso OpenTelemetryCollector que activa la implementación del Collector.

  1. Utilice el archivo node-collector.yaml para especificar su configuración de daemonset OpenTelemetryCollector.

node-collector.yaml

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: node-collector
spec:
  # Deploy 1 instance per node, that will collect telemetry from that node's pods
  mode: daemonset
  command: ['otel-agent', 'run'] # Will no longer be necessary from 7.82.0 onwards
  config:
    exporters:
      datadog:
        api:
          key: ${env:DD_API_KEY}
          site: ${env:DD_SITE}
        sending_queue:
          batch:
            flush_timeout: 10s
    service:
      telemetry:
        resource:
          k8s.cluster.name: ${env:K8S_CLUSTER_NAME}
  env:
    - name: DD_API_KEY
      valueFrom:
        secretKeyRef:
          key: api-key
          name: datadog-apikey
    - name: DD_SITE
      valueFrom:
        secretKeyRef:
          key: site
          name: datadog-apikey
    - name: DD_OTELCOLLECTOR_CONVERTER_FEATURES
      value: datadog,pprof,zpages,prometheus,infraattributes
    - name: K8S_CLUSTER_NAME
      value: <CLUSTER_NAME>
    # vvv Will no longer be necessary from 7.83.0 onwards vvv
    - name: DD_OTEL_STANDALONE
      value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    # vvv Will no longer be necessary from 7.82.0 onwards vvv
    - name: DD_OTELCOLLECTOR_ENABLED
      value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Reemplace <CLUSTER_NAME> con un nombre para su clúster.

  1. Agregue un receptor OTLP y el exportador de Datadog para todas las señales deseadas. Publique los puertos OTLP en el nodo con hostPort para que los pods de la aplicación puedan llegar a la instancia del Collector que se ejecuta en el mismo nodo:

node-collector.yaml

# [...]
spec:
  # [...]
  # Publish the OTLP ports on the node's network interface
  ports:
    - name: otlp-grpc
      port: 4317
      protocol: TCP
      hostPort: 4317
    - name: otlp-http
      port: 4318
      protocol: TCP
      hostPort: 4318
  config:
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    # [...]
    service:
      # [...]
      pipelines:
        logs:
          receivers: ['otlp']
          exporters: ['datadog']
        metrics:
          receivers: ['otlp']
          exporters: ['datadog']
        traces:
          receivers: ['otlp']
          exporters: ['datadog']
  1. (Opcional) Habilite funciones adicionales:
Habilitar estas funciones puede generar cargos adicionales. Revise la página de precios y hable con su Gerente de Éxito del Cliente antes de continuar.

node-collector.yaml

spec:
  config:
    receivers:
      host_metrics:
        collection_interval: 15s
        scrapers:
          cpu: {}
          load: {}
          memory: {}
          network: {}
          disk: {}
      kubelet_stats:
        auth_type: serviceAccount
        collection_interval: 15s
        endpoint: ${env:K8S_NODE_NAME}:10250
        node: ${env:K8S_NODE_NAME}
        metric_groups:
          - pod
          - container
          - volume
    processors:
      infraattributes:
        cardinality: 2
      resource/add-cluster-name:
        attributes:
          - key: k8s.cluster.name
            value: ${env:K8S_CLUSTER_NAME}
            action: upsert
    connectors:
      datadog/connector:
        traces:
          compute_top_level_by_span_kind: true
          peer_tags_aggregation: true
          compute_stats_by_span_kind: true
    extensions:
      health_check:
        endpoint: "${env:K8S_POD_IP}:13133"
    # [...]
    service:
      # [...]
      extensions: ['health_check']
      pipelines:
        logs:
          # [...]
          processors: ['resource/add-cluster-name', 'infraattributes']
        metrics:
          receivers: ['host_metrics', 'otlp', 'kubelet_stats', 'datadog/connector']
          processors: ['resource/add-cluster-name', 'infraattributes']
          # [...]
        traces:
          # [...]
          processors: ['resource/add-cluster-name', 'infraattributes']
          exporters: ['datadog', 'datadog/connector']
  env:
    # [...]
    - name: K8S_POD_IP
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: status.podIP
    # K8S_NODE_NAME is added automatically by the operator
  1. (Opcional) Recopile registros de contenedor del sistema de archivos del nodo:
Habilitar la recopilación de registros puede generar cargos adicionales. Revise la página de precios y hable con su Gerente de Éxito del Cliente antes de continuar.

El receptor filelog lee los registros de contenedor del nodo. Debido a que el Operador no monta rutas del servidor automáticamente, agregue los directorios de registro como volúmenes de solo lectura:

node-collector.yaml

spec:
  config:
    receivers:
      filelog:
        include:
          - /var/log/pods/*/*/*.log
        # Exclude the Collector's own logs to avoid a feedback loop
        exclude:
          - /var/log/pods/*_node-collector-collector-*_*/otc-container/*.log
        start_at: end
        include_file_path: true
        include_file_name: false
        retry_on_failure:
          enabled: true
        operators:
          - id: container-parser
            type: container
            max_log_size: 102400
    # [...]
    service:
      # [...]
      pipelines:
        logs:
          receivers: ['otlp', 'filelog']
          # [...]
  # Mount the node's log directories into the Collector pod (read-only)
  volumes:
    - name: varlogpods
      hostPath:
        path: /var/log/pods
    - name: varlibdockercontainers
      hostPath:
        path: /var/lib/docker/containers
  volumeMounts:
    - name: varlogpods
      mountPath: /var/log/pods
      readOnly: true
    - name: varlibdockercontainers
      mountPath: /var/lib/docker/containers
      readOnly: true

Su archivo node-collector.yaml debería verse más o menos así:

node-collector.yaml

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: node-collector
spec:
  # Deploy 1 instance per node, that will collect telemetry from that node's pods
  mode: daemonset
  command: ['otel-agent', 'run'] # Will no longer be necessary from 7.82.0 onwards
  # Publish the OTLP ports on the node's network interface
  ports:
    - name: otlp-grpc
      port: 4317
      protocol: TCP
      hostPort: 4317
    - name: otlp-http
      port: 4318
      protocol: TCP
      hostPort: 4318
  config:
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
      host_metrics:
        collection_interval: 15s
        scrapers:
          cpu: {}
          load: {}
          memory: {}
          network: {}
          disk: {}
      kubelet_stats:
        auth_type: serviceAccount
        collection_interval: 15s
        endpoint: ${env:K8S_NODE_NAME}:10250
        node: ${env:K8S_NODE_NAME}
        metric_groups:
          - pod
          - container
          - volume
      filelog:
        include:
          - /var/log/pods/*/*/*.log
        exclude:
          - /var/log/pods/*_node-collector-collector-*_*/otc-container/*.log
        start_at: end
        include_file_path: true
        include_file_name: false
        retry_on_failure:
          enabled: true
        operators:
          - id: container-parser
            type: container
            max_log_size: 102400
    processors:
      infraattributes:
        cardinality: 2
      resource/add-cluster-name:
        attributes:
          - key: k8s.cluster.name
            value: ${env:K8S_CLUSTER_NAME}
            action: upsert
    connectors:
      datadog/connector:
        traces:
          compute_top_level_by_span_kind: true
          peer_tags_aggregation: true
          compute_stats_by_span_kind: true
    exporters:
      datadog:
        api:
          key: ${env:DD_API_KEY}
          site: ${env:DD_SITE}
        sending_queue:
          batch:
            flush_timeout: 10s
    extensions:
      health_check:
        endpoint: "${env:K8S_POD_IP}:13133"
    service:
      telemetry:
        resource:
          k8s.cluster.name: ${env:K8S_CLUSTER_NAME}
      extensions: ['health_check']
      pipelines:
        logs:
          receivers: ['otlp', 'filelog']
          processors: ['resource/add-cluster-name', 'infraattributes']
          exporters: ['datadog']
        metrics:
          receivers: ['host_metrics', 'otlp', 'kubelet_stats', 'datadog/connector']
          processors: ['resource/add-cluster-name', 'infraattributes']
          exporters: ['datadog']
        traces:
          receivers: ['otlp']
          processors: ['resource/add-cluster-name', 'infraattributes']
          exporters: ['datadog', 'datadog/connector']
  env:
    - name: DD_API_KEY
      valueFrom:
        secretKeyRef:
          key: api-key
          name: datadog-apikey
    - name: DD_SITE
      valueFrom:
        secretKeyRef:
          key: site
          name: datadog-apikey
    - name: DD_OTELCOLLECTOR_CONVERTER_FEATURES
      value: datadog,pprof,zpages,prometheus,infraattributes
    - name: K8S_CLUSTER_NAME
      value: <CLUSTER_NAME>
    - name: K8S_POD_IP
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: status.podIP
    # K8S_NODE_NAME is added automatically by the operator
    # vvv Will no longer be necessary from 7.83.0 onwards vvv
    - name: DD_OTEL_STANDALONE
      value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    # vvv Will no longer be necessary from 7.82.0 onwards vvv
    - name: DD_OTELCOLLECTOR_ENABLED
      value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  # Mount the node's log directories for the filelog receiver (read-only)
  volumes:
    - name: varlogpods
      hostPath:
        path: /var/log/pods
    - name: varlibdockercontainers
      hostPath:
        path: /var/lib/docker/containers
  volumeMounts:
    - name: varlogpods
      mountPath: /var/log/pods
      readOnly: true
    - name: varlibdockercontainers
      mountPath: /var/lib/docker/containers
      readOnly: true

Reemplace <CLUSTER_NAME> con un nombre para su clúster.

Use un archivo YAML para especificar los parámetros del Helm chart para el Collector chart.

  1. Cree un archivo node-collector-values.yaml vacío:
touch node-collector-values.yaml
Los parámetros no especificados usan los valores predeterminados de values.yaml.
  1. Elija el modo daemonset y use DDOT como el Collector:

node-collector-values.yaml

mode: daemonset
image:
  repository: datadog/ddot-collector
  tag: 7.83.1
ports:
  jaeger-compact:
    enabled: false
  jaeger-grpc:
    enabled: false
  jaeger-thrift:
    enabled: false
  zipkin:
    enabled: false
# Can be removed from 7.82.0 onwards
command:
  name: opt/datadog-agent/embedded/bin/otel-agent

Para FED, establezca tag: 7.83.1-fips para usar la imagen DDOT compatible con FIPS. Consulte cumplimiento de FIPS.

El Helm chart del Collector publica los puertos OTLP en cada nodo por defecto (hostPort: 4317 para gRPC y hostPort: 4318 para HTTP), por lo que los pods de la aplicación pueden llegar a la instancia del Collector que se ejecuta en el mismo nodo. Consulte Configurar la aplicación.
  1. Configure el exportador de Datadog y el secreto de la clave de API:

node-collector-values.yaml

config:
  exporters:
    datadog:
      api:
        key: ${env:DD_API_KEY}
        site: ${env:DD_SITE}
      sending_queue:
        batch:
          flush_timeout: 10s
extraEnvs:
  - name: DD_API_KEY
    valueFrom:
      secretKeyRef:
        key: api-key
        name: datadog-apikey
  - name: DD_SITE
    valueFrom:
      secretKeyRef:
        key: site
        name: datadog-apikey
  - name: DD_OTELCOLLECTOR_CONVERTER_FEATURES
    value: datadog,pprof,zpages,prometheus,infraattributes
  - name: K8S_CLUSTER_NAME
    value: <CLUSTER_NAME>
    # vvv Will no longer be necessary from 7.83.0 onwards vvv
  - name: DD_OTEL_STANDALONE
    value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    # vvv Will no longer be necessary from 7.82.0 onwards vvv
  - name: DD_OTELCOLLECTOR_ENABLED
    value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Reemplace <CLUSTER_NAME> con un nombre para su clúster.

  1. Habilite los ajustes preestablecidos:

node-collector-values.yaml

presets:
  hostMetrics:
    enabled: true
  kubeletMetrics:
    enabled: true
  logsCollection:
    enabled: true
    includeCollectorLogs: false
  1. Defina las canalizaciones para las señales deseadas, con un receptor OTLP:

node-collector-values.yaml

config:
  # [...]
  receivers:
    otlp:
      protocols:
        grpc:
          endpoint: 0.0.0.0:4317
        http:
          endpoint: 0.0.0.0:4318
  service:
    pipelines:
      logs:
        receivers: ['otlp']
        exporters: ['datadog']
      metrics:
        receivers: ['otlp']
        exporters: ['datadog']
      traces:
        receivers: ['otlp']
        exporters: ['datadog']
    telemetry:
      resource:
        k8s.cluster.name: ${env:K8S_CLUSTER_NAME}
  1. (Opcional) Habilite funciones adicionales de Datadog:
Habilitar estas funciones puede generar cargos adicionales. Revise la página de precios y hable con su Gerente de Éxito del Cliente antes de continuar.

node-collector-values.yaml

config:
  # [...]
  processors:
    infraattributes:
      cardinality: 2
    resource/add-cluster-name:
      attributes:
        - key: k8s.cluster.name
          value: ${env:K8S_CLUSTER_NAME}
          action: upsert
  connectors:
    datadog/connector:
      traces:
        compute_top_level_by_span_kind: true
        peer_tags_aggregation: true
        compute_stats_by_span_kind: true
  service:
    pipelines:
      logs:
	    # [...]
        processors: ['resource/add-cluster-name', 'infraattributes']
      metrics:
        receivers: ['otlp', 'datadog/connector']
        processors: ['resource/add-cluster-name', 'infraattributes']
	    # [...]
      traces:
	    # [...]
        processors: ['resource/add-cluster-name', 'infraattributes']
        exporters: ['datadog', 'datadog/connector']

Su archivo node-collector-values.yaml debería verse más o menos así:

node-collector-values.yaml

mode: daemonset
# vvv To be removed from 7.82.0 onwards vvv
command:
  name: opt/datadog-agent/embedded/bin/otel-agent
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
image:
  repository: datadog/ddot-collector
  tag: 7.83.1
presets:
  hostMetrics: # Add an hostmetrics receiver to the metrics pipeline
    enabled: true
  kubeletMetrics: # Add a kubeletstats receiver to the metrics pipeline
    enabled: true
  logsCollection: # Add a filelog receiver to the logs pipeline
    enabled: true
    includeCollectorLogs: false
config:
  connectors:
    datadog/connector:
      traces:
        compute_top_level_by_span_kind: true
        peer_tags_aggregation: true
        compute_stats_by_span_kind: true
  exporters:
    datadog:
      api:
        key: ${env:DD_API_KEY}
        site: ${env:DD_SITE}
      sending_queue:
        batch:
          flush_timeout: 10s
  processors:
    infraattributes:
      cardinality: 2
    resource/add-cluster-name:
      attributes:
        - key: k8s.cluster.name
          value: ${env:K8S_CLUSTER_NAME}
          action: upsert
  receivers:
    otlp:
      protocols:
        grpc:
          endpoint: 0.0.0.0:4317
        http:
          endpoint: 0.0.0.0:4318
  service:
    extensions:
      - health_check
    pipelines:
      logs:
        receivers:
          - otlp
        processors:
          - resource/add-cluster-name
          - infraattributes
        exporters:
          - datadog
      metrics:
        receivers:
          - otlp
          - datadog/connector
        processors:
          - resource/add-cluster-name
          - infraattributes
        exporters:
          - datadog
      traces:
        receivers:
          - otlp
        processors:
          - resource/add-cluster-name
          - infraattributes
        exporters:
          - datadog
          - datadog/connector
    telemetry:
      resource:
        k8s.cluster.name: ${env:K8S_CLUSTER_NAME}
extraEnvs:
  - name: DD_API_KEY
    valueFrom:
      secretKeyRef:
        key: api-key
        name: datadog-apikey
  - name: DD_SITE
    valueFrom:
      secretKeyRef:
        key: site
        name: datadog-apikey
  - name: DD_OTELCOLLECTOR_CONVERTER_FEATURES
    value: datadog,pprof,zpages,prometheus,infraattributes
  - name: K8S_CLUSTER_NAME
    value: <CLUSTER_NAME>
    # vvv Will no longer be necessary from 7.83.0 onwards vvv
  - name: DD_OTEL_STANDALONE
    value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    # vvv Will no longer be necessary from 7.82.0 onwards vvv
  - name: DD_OTELCOLLECTOR_ENABLED
    value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ports:
  jaeger-compact:
    enabled: false
  jaeger-grpc:
    enabled: false
  jaeger-thrift:
    enabled: false
  zipkin:
    enabled: false

Implemente el Collector

Aplique el archivo node-collector.yaml para crear el recurso OpenTelemetryCollector. El OpenTelemetry Operator implementa el Collector como un DaemonSet, ejecutando una instancia por nodo:

kubectl apply -f node-collector.yaml

Instale el Helm chart del OpenTelemetry Collector con su archivo de valores:

helm install node-collector open-telemetry/opentelemetry-collector -f node-collector-values.yaml

Para aplicar cambios posteriores, ejecute helm upgrade node-collector open-telemetry/opentelemetry-collector -f node-collector-values.yaml.

Instale el Datadog Agent principal junto con DDOT

Si desea ejecutar el Datadog Agent principal en los mismos nodos que el Collector DDOT independiente (por ejemplo, para recopilar métricas de infraestructura, APM o registros a través del Agent principal mientras DDOT maneja la ingesta de OTLP), puede instalarlo por separado utilizando el Datadog Operator.

De forma predeterminada, el Datadog Operator Helm chart observa DatadogAgent recursos solo en el espacio de nombres donde está instalado el Datadog Operator (watchNamespaces: []). Si el DatadogAgent recurso está en un espacio de nombres diferente al del Datadog Operator, por ejemplo, para mantenerlo separado del OpenTelemetryCollector espacio de nombres del recurso, establezca watchNamespaces para incluir el espacio de nombres donde el DatadogAgent recurso es creado:

helm upgrade datadog-operator datadog/datadog-operator \
  -n <OPERATOR_NAMESPACE> \
  --reuse-values \
  --set 'watchNamespaces[0]=<DATADOG_AGENT_NAMESPACE>'

Si el Datadog Operator no observa el espacio de nombres donde el DatadogAgent recurso es creado, el recurso falla silenciosamente al reconciliarse, sin error, sin evento de Kubernetes y sin actualización de estado que indique el problema.

Envíe su telemetría a Datadog

Para enviar sus datos de telemetría a Datadog:

  1. Instrumente su aplicación
  2. Configure la aplicación
  3. Correlacione los datos de observabilidad
  4. Ejecute su aplicación

Instrumente la aplicación

Instrumente su aplicación usando la API de OpenTelemetry.

Como ejemplo, puede usar la aplicación de muestra Calendar que ya está instrumentada para usted. El siguiente código instrumenta el método CalendarService.getDate() usando las anotaciones y la API de OpenTelemetry:

CalendarService.java

@WithSpan(kind = SpanKind.CLIENT)
public String getDate() {
    Span span = Span.current();
    span.setAttribute("peer.service", "random-date-service");
    ...
}

Configure la aplicación

El contenedor de su aplicación debe enviar datos al Collector de DDOT que se ejecuta en el mismo nodo. Debido a que el Collector publica los puertos OTLP en el nodo con hostPort, la aplicación puede comunicarse con el Collector local a través de la dirección IP del nodo (status.hostIP).

Si la variable de entorno OTEL_EXPORTER_OTLP_ENDPOINT aún no está configurada, agréguela al archivo de manifiesto de implementación de su aplicación:

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'
   

Correlacione los datos de observabilidad

Unified service tagging vincula los datos de observabilidad en Datadog para que pueda navegar entre métricas, trazas y registros con etiquetas consistentes.

En entornos contenerizados, configure env, service y version utilizando variables de entorno de atributos de recursos de OpenTelemetry. El Collector de DDOT detecta esta configuración de etiquetado y la aplica a los datos que recopila de los contenedores.

Agregue las siguientes variables de entorno al manifiesto de implementación de su aplicación:

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: <SERVICE>
spec:
  template:
    spec:
      containers:
      - name: <SERVICE>
        env:
          - name: OTEL_SERVICE_NAME
            value: "<SERVICE>"
          - name: OTEL_RESOURCE_ATTRIBUTES
            value: "service.version=<VERSION>,deployment.environment.name=<ENV>"

Ejecute la aplicación

Vuelva a implementar su aplicación para aplicar los cambios realizados en el manifiesto de implementación. Una vez que la configuración actualizada esté activa, Unified Service Tagging estará completamente habilitado para sus métricas, trazas y registros.

Explore los datos de observabilidad en Datadog

Utilice Datadog para explorar los datos de observabilidad de su aplicación.

Fleet Automation

Explore la configuración de su Collector.

Revise la configuración de su Collector desde la página de Fleet Automation.

Monitoreo en vivo de contenedor

Haga un seguimiento del estado de sus contenedores utilizando las capacidades de Container Monitoring.

Haga un seguimiento del estado de sus contenedores desde la página de Containers.

Estado de salud del nodo de infraestructura

Vea las métricas de tiempo de ejecución y de infraestructura para visualizar, monitorear y medir el rendimiento de sus nodos.

Vea las métricas de tiempo de ejecución y de infraestructura desde el Host List.

Registros

Vea los registros para monitorear y solucionar problemas de las operaciones de la aplicación y del sistema.

Vea los registros desde el Log Explorer.

Trazas

Visualice las trazas y los spans para observar el estado y el rendimiento de las solicitudes procesadas por su aplicación, con métricas de infraestructura correlacionadas en la misma traza.

Visualice las trazas desde el Trace Explorer.

Métricas de tiempo de ejecución

Monitoree las métricas de tiempo de ejecución (JVM) de sus aplicaciones.

Visualice las métricas de JVM desde el JVM Metrics dashboard

Métricas de salud del colector

Visualice las métricas del DDOT Collector para hacer un seguimiento de la salud del Collector.

Visualice las métricas de salud del Collector desde el OTel dashboard.

Lecturas adicionales

Documentación, enlaces y artículos útiles adicionales: