faux

L’installation du collecteur DDOT autonome avec les outils OpenTelemetry est en préversion.

Présentation

Suivez ce guide pour déployer la Datadog Distribution du collecteur OpenTelemetry (DDOT) en utilisant l’opérateur OpenTelemetry ou le Helm chart.

Besoin de composants OpenTelemetry supplémentaires? Si vous avez besoin de composants au-delà de ceux inclus dans le paquet par défaut, suivez Utilisez des composants OpenTelemetry personnalisés pour étendre les capacités de DDOT. Pour obtenir une liste des composants inclus par défaut, consultez Composants du collecteur OpenTelemetry.

Prérequis

Pour compléter ce guide, vous avez besoin des éléments suivants :

Compte Datadog :

  1. Créez un compte Datadog si vous n’en avez pas.
  2. Trouvez ou créez votre clé d’API Datadog.

Logiciels : Installez et configurez les éléments suivants sur votre machine :

Réseau :

ProtocoleTransportPort
gRPCTCP4317
HTTPTCP4318

Installez la distribution Datadog du collecteur OpenTelemetry

Sélectionnez la méthode d’installation

Choisissez l’une des méthodes d’installation suivantes :

Installez l’opérateur OpenTelemetry

Vous pouvez installer l’opérateur OpenTelemetry dans votre cluster en utilisant le 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"

Pour FED, définissez le tag sur 7.83.1-fips pour utiliser l'image DDOT conforme FIPS. Consultez la conformité FIPS.

Ajoutez le dépôt Helm OpenTelemetry

Pour ajouter le dépôt OpenTelemetry à vos dépôts Helm :

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

Configurez la clé d’API Datadog

  1. Obtenez la clé d’API Datadog.
  2. Confirmez que le SITE DATADOG sélectionné à droite (Valeur actuelle : ) correspond à votre site Datadog.
  3. Stockez la clé d’API en tant que secret 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

Après avoir déployé l’opérateur OTel, créez la ressource OpenTelemetryCollector qui déclenche le déploiement du collecteur.

  1. Utilisez le fichier node-collector.yaml pour spécifier votre configuration 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'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Remplacez <CLUSTER_NAME> par un nom pour votre cluster.

  1. Ajoutez un récepteur OTLP et l’exportateur Datadog pour tous les signaux souhaités : Publiez les ports OTLP sur le nœud avec hostPort afin que les pods d’application puissent atteindre l’instance du Collector s’exécutant sur le même nœud :

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. (Facultatif) Activez des fonctionnalités supplémentaires :
L'activation de ces fonctionnalités peut entraîner des frais supplémentaires. Consultez la page de tarification et parlez à votre Customer Success Manager avant de continuer.

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. (Facultatif) Collectez les logs des conteneurs à partir du système de fichiers du nœud :
L'activation de la collecte des logs peut entraîner des frais supplémentaires. Consultez la page de tarification et parlez à votre Customer Success Manager avant de continuer.

Le récepteur filelog lit les logs des conteneurs à partir du nœud. Comme l’Opérateur ne monte pas automatiquement les chemins des hosts, ajoutez les répertoires de logs en tant que volumes en lecture seule :

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

Votre fichier node-collector.yaml devrait ressembler à ceci :

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

Remplacez <CLUSTER_NAME> par un nom pour votre cluster.

Utilisez un fichier YAML pour spécifier les paramètres du chart Helm pour le Collector chart.

  1. Créez un fichier node-collector-values.yaml vide :
touch node-collector-values.yaml
Les paramètres non spécifiés utilisent les valeurs par défaut de values.yaml.
  1. Choisissez le mode daemonset et utilisez DDOT comme 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

Pour FED, définissez tag: 7.83.1-fips pour utiliser l'image DDOT conforme FIPS. Consultez la conformité FIPS.

Le Helm chart du Collector publie les ports OTLP sur chaque nœud par défaut (hostPort: 4317 pour gRPC et hostPort: 4318 pour HTTP), afin que les pods d'application puissent atteindre l'instance du Collector s'exécutant sur le même nœud. Consultez Configurer l'application.
  1. Configurez l’exportateur Datadog et le secret de la clé d’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'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Remplacez <CLUSTER_NAME> par un nom pour votre cluster.

  1. Activez les préréglages :

node-collector-values.yaml

presets:
  hostMetrics:
    enabled: true
  kubeletMetrics:
    enabled: true
  logsCollection:
    enabled: true
    includeCollectorLogs: false
  1. Définissez des pipelines pour les signaux souhaités, avec un récepteur 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. (Facultatif) Activez des fonctionnalités Datadog supplémentaires :
L'activation de ces fonctionnalités peut entraîner des frais supplémentaires. Consultez la page de tarification et parlez à votre Customer Success Manager avant de continuer.

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']

Votre fichier node-collector-values.yaml devrait ressembler à ceci :

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

Déployez le Collector

Appliquez le fichier node-collector.yaml pour créer la ressource OpenTelemetryCollector. Le Datadog Operator déploie le Collector en tant que DaemonSet, en exécutant une instance par nœud :

kubectl apply -f node-collector.yaml

Installez le Helm chart OpenTelemetry Collector avec votre fichier de valeurs :

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

Pour appliquer des modifications ultérieures, exécutez helm upgrade node-collector open-telemetry/opentelemetry-collector -f node-collector-values.yaml.

Installez le Datadog Agent principal aux côtés de DDOT

Si vous souhaitez exécuter le Datadog Agent principal sur les mêmes nœuds que le Collector DDOT autonome — par exemple, pour collecter des métriques d’infrastructure, l’APM ou des logs via l’Agent principal pendant que DDOT gère l’ingestion OTLP — vous pouvez l’installer séparément en utilisant le Datadog Operator.

Par défaut, le Datadog Operator Helm chart surveille DatadogAgent les ressources uniquement dans l’espace de nommage où le Datadog Operator est installé (watchNamespaces: []). Si la DatadogAgent ressource se trouve dans un espace de nommage différent de celui du Datadog Operator, par exemple pour la garder séparée du espace de nommage de la OpenTelemetryCollector ressource, définissez watchNamespaces pour inclure l’espace de nommage où la DatadogAgent la ressource est créée :

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

Si le Datadog Operator ne surveille pas l’espace de nommage où la DatadogAgent ressource est créée, la ressource échoue silencieusement à se réconcilier, sans erreur, sans événement Kubernetes et sans mise à jour de statut pour indiquer le problème.

Envoyez votre télémétrie à Datadog

Pour envoyer vos données de télémétrie à Datadog :

  1. Instrumentez votre application
  2. Configurez l’application
  3. Corrélez les données d’observabilité
  4. Exécutez votre application

Instrumentez l’application

Instrumentez votre application en utilisant l’API OpenTelemetry.

À titre d’exemple, vous pouvez utiliser l’exemple d’application Calendar qui est déjà instrumenté pour vous. Le code suivant instrumente la méthode CalendarService.getDate() en utilisant les annotations et l’API OpenTelemetry :

CalendarService.java

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

Configurez l’application

Le conteneur de votre application doit envoyer des données au collecteur DDOT exécuté sur le même nœud. Comme le collecteur publie les ports OTLP sur le nœud avec hostPort, l’application peut atteindre le collecteur local via l’adresse IP du nœud (status.hostIP).

Si la variable d’environnement OTEL_EXPORTER_OTLP_ENDPOINT n’est pas déjà définie, ajoutez-la au fichier manifeste de déploiement de votre application :

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'
   

Corrélez les données d’observabilité

Le Unified service tagging relie les données d’observabilité dans Datadog afin que vous puissiez naviguer entre les métriques, les traces et les logs avec des tags cohérents.

Dans les environnements conteneurisés, définissez env, service et version à l’aide des variables d’environnement des attributs de ressource OpenTelemetry. Le collecteur DDOT détecte cette configuration de marquage et l’applique aux données qu’il collecte à partir des conteneurs.

Ajoutez les variables d’environnement suivantes au manifeste de déploiement de votre application :

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>"

Exécutez l’application

Redéployez votre application pour appliquer les modifications apportées au manifeste de déploiement. Une fois la configuration mise à jour active, [Unified Service Tagging] est entièrement activé pour vos métriques, traces et logs.

Explorez les données d’observabilité dans Datadog

Utilisez Datadog pour explorer les données d’observabilité de votre application.

Automatisation du parc

Explorez la configuration de votre Collector.

Examinez la configuration de votre Collector depuis la page Fleet Automation.

Surveillance des conteneurs en temps réel

Surveillez l’état de vos conteneurs à l’aide des fonctionnalités de Live Container Monitoring.

Surveillez l'état de vos conteneurs depuis la page Containers.

État de santé des nœuds d’infrastructure

Affichez les métriques d’exécution et d’infrastructure pour visualiser, surveiller et mesurer les performances de vos nœuds.

Affichez les métriques d'exécution et d'infrastructure depuis la liste des hosts.

Logs

Consultez les logs pour surveiller et diagnostiquer les opérations de l’application et du système.

Affichez les logs depuis le Log Explorer.

Traces

Affichez les traces et les spans pour observer l’état et les performances des requêtes traitées par votre application, avec des métriques d’infrastructure corrélées dans la même trace.

Affichez les traces depuis le Trace Explorer.

Métriques runtime

Surveillez les métriques runtime (JVM) pour vos applications.

Affichez les métriques JVM depuis le dashboard JVM Metrics.

Métriques de santé du Collector

Affichez les métriques du DDOT Collector pour surveiller la santé du Collector.

Affichez les métriques de santé du Collector depuis le dashboard OTel.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles: