Suivez ce guide pour déployer le collecteur Datadog Distribution of OpenTelemetry (DDOT) en tant que DaemonSet Kubernetes à l’aide de Helm ou de Datadog Operator.
Besoin de composants OpenTelemetry supplémentaires? Si vous avez besoin de composants autres que ceux inclus dans le package par défaut, suivez Use Custom OpenTelemetry Components pour étendre les capacités de Datadog Agent. 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 :
Réseau : When using the Datadog SDK with OpenTelemetry API support, telemetry is routed to different components depending on the signal source. Ensure the following ports are accessible on your Datadog Agent or Collector:
Signal Source
Protocol
Port
Destination Component
OTel Metrics and Logs API
OTLP (gRPC/HTTP)
4317 / 4318
Datadog Agent OTLP Receiver or DDOT Collector
Datadog Tracing
Datadog trace intake
8126 (TCP)
Datadog Trace Agent
Runtime Metrics
DogStatsD
8125 (UDP)
DogStatsD Server
Installer le Datadog Agent avec le Collector OpenTelemetry
Cette installation est requise pour les configurations Datadog SDK + DDOT et OpenTelemetry SDK + DDOT. Bien que le SDK Datadog implémente l'API OpenTelemetry, il nécessite toujours le Collector DDOT pour traiter et transférer les métriques et logs OTLP.
Sélectionnez la méthode d’installation
Choisissez l’une des méthodes d’installation suivantes :
Datadog Operator : une approche native Kubernetes qui réconcilie et maintient automatiquement votre configuration Datadog. Il signale le statut de déploiement, l’état de santé et les erreurs dans le statut de sa ressource personnalisée, et il limite le risque de mauvaise configuration grâce à des options de configuration de plus haut niveau.
Helm chart : un moyen simple de déployer Datadog Agent. Il offre des capacités de versioning, de restauration et de templating, rendant les déploiements cohérents et plus faciles à répliquer.
Remplacez <DD_API_KEY> par votre clé Datadog API réelle.
Configurez Datadog Agent
Après avoir déployé Datadog Operator, créez la ressource DatadogAgent qui déclenche le déploiement de Datadog Agent, de l’Agent de cluster et des exécuteurs de vérifications de cluster (si utilisés) dans votre cluster Kubernetes. Datadog Agent se déploie en tant que DaemonSet, exécutant un pod sur chaque nœud de votre cluster.
Utilisez le fichier datadog-agent.yaml pour spécifier votre configuration de déploiement DatadogAgent.
Datadog Operator lie automatiquement le collecteur OpenTelemetry aux ports 4317 (nommés otel-grpc) et 4318 (nommés otel-http) par défaut.
(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.
Lors de l’activation de fonctionnalités Datadog supplémentaires, utilisez toujours les fichiers de configuration du Collector Datadog ou du Collector OpenTelemetry au lieu de vous fier aux variables d’environnement Datadog.
Remarque : À partir de l’opérateur v1.22.0, le conteneur DDOT utilise l’image ddot-collector au lieu de l’image d’agent -full.
Lors du remplacement de la balise d’image de l’agent de nœud, utilisez une balise >= 7.67.0 afin que le conteneur OTel soit planifié (l’image ddot-collector n’est prise en charge qu’à partir de >= 7.67.0).
L’image ddot-collector n’a pas de variante -full. Si vous avez besoin d’une image -full, définissez spec.override.nodeAgent.image.name sur une image d’agent complète (par exemple, registry.datadoghq.com/agent:7.72.1-full).
Utilisez un fichier YAML pour spécifier les paramètres du Helm chart pour le Datadog Agent chart.
Créez un fichier datadog-values.yaml vide :
touch datadog-values.yaml
Les paramètres non spécifiés utilisent les valeurs par défaut de values.yaml.
Définissez <DATADOG_SITE> sur votre site Datadog. Sinon, il utilise par défaut datadoghq.com, le site US1.
Pour FED, définissez également useFIPSAgent: true à la racine de votre datadog-values.yaml pour utiliser l'image d'agent conforme FIPS. Consultez la conformité FIPS.
Activez le collecteur OpenTelemetry et configurez les ports essentiels :
datadog-values.yaml
datadog:...otelCollector:enabled:trueports:- containerPort:"4317"# default port for OpenTelemetry gRPC receiver.hostPort:"4317"name:otel-grpc- containerPort:"4318"# default port for OpenTelemetry HTTP receiverhostPort:"4318"name:otel-http
Définissez le hostPort pour exposer le port du conteneur au réseau externe. Cela permet de configurer l’exportateur OTLP pour qu’il pointe vers l’adresse IP du nœud où Datadog Agent est affecté.
Si vous ne souhaitez pas exposer le port, vous pouvez utiliser le service de l’Agent à la place :
Supprimez les hostPort entrées de votre datadog-values.yaml fichier.
Dans le fichier de déploiement de votre application (deployment.yaml), configurez l’exportateur OTLP pour utiliser le service de l’Agent :
(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.
Lors de l’activation de fonctionnalités Datadog supplémentaires, utilisez toujours les fichiers de configuration du Collector Datadog ou du Collector OpenTelemetry au lieu de vous fier aux variables d’environnement Datadog.
(Facultatif) Collectez les étiquettes de pod et utilisez-les comme tags à associer aux métriques, aux traces et aux logs :
Comme le collecteur DDOT s’exécute au sein de Datadog Agent, les attributs de nom d’hôte sur la télémétrie entrante peuvent correspondre à un nom différent de celui de l’Agent. Le processeur infraattributes peut appliquer le nom d’hôte de l’Agent à la place. Consultez Hostname and Tagging pour la configuration recommandée.
Datadog Operator fournit un exemple de configuration de collecteur OpenTelemetry que vous pouvez utiliser comme point de départ. Si vous devez modifier cette configuration, Datadog Operator prend en charge deux méthodes pour fournir une configuration de collecteur personnalisée :
Configuration en ligne : Ajoutez votre configuration de collecteur personnalisée directement dans le champ features.otelCollector.conf.configData.
Configuration basée sur une ConfigMap : Stockez votre configuration de collecteur dans une ConfigMap et référencez-la dans le champ features.otelCollector.conf.configMap. Cette approche vous permet de garder la configuration du collecteur découplée de la ressource DatadogAgent.
Configuration du collecteur en ligne
Dans l’extrait ci-dessous, la configuration du collecteur est placée directement sous le paramètre features.otelCollector.conf.configData :
For the infraattributes processor to add Kubernetes tags, your telemetry must include the container.id resource attribute. This is often, but not always, added by OTel SDK auto-instrumentation.
If your tags are missing, see the troubleshooting guide for details on how to add this attribute.
Lorsque vous appliquez le fichier datadog-agent.yaml contenant cette ressource DatadogAgent, l’opérateur monte automatiquement la configuration du collecteur dans le DaemonSet de l’Agent.
Fichier datadog-agent.yaml complété
Le datadog-agent.yaml complété avec une configuration de collecteur en ligne devrait ressembler à ceci :
Configuration du collecteur basée sur une ConfigMap
Pour des configurations plus complexes ou fréquemment mises à jour, stocker la configuration du collecteur dans une ConfigMap peut simplifier le contrôle de version.
Créez une ConfigMap contenant votre configuration de collecteur :
Le Helm chart Datadog fournit un exemple de configuration de collecteur OpenTelemetry que vous pouvez utiliser comme point de départ. Cette section vous guide à travers les pipelines prédéfinis et les composants OpenTelemetry inclus.
Voici la configuration complète du collecteur OpenTelemetry dans otel-config.yaml :
For the infraattributes processor to add Kubernetes tags, your telemetry must include the container.id resource attribute. This is often, but not always, added by OTel SDK auto-instrumentation.
If your tags are missing, see the troubleshooting guide for details on how to add this attribute.
Composants clés
Pour envoyer des données de télémétrie à Datadog, les composants suivants sont définis dans la configuration :
Remarque : Si key n’est pas spécifié ou défini sur un secret, ou si site n’est pas spécifié, le système utilise les valeurs de la configuration principale de l’Agent. Par défaut, l’Agent principal définit le site sur datadoghq.com (US1).
Prometheus receiver
Le récepteur Prometheus collecte les métriques de santé du collecteur OpenTelemetry pour le pipeline de métriques.
Pour installer ou mettre à niveau Datadog Agent avec le collecteur OpenTelemetry dans votre environnement Kubernetes, utilisez l’une des commandes Helm suivantes :
Pour une configuration par défaut du collecteur OpenTelemetry :
Exemple d’application instrumentée avec 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 :
Votre conteneur d’application doit envoyer des données au collecteur DDOT sur le même hôte. Comme le Collector s’exécute en tant que DaemonSet, vous devez spécifier l’hôte local comme endpoint OTLP.
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 :
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 :
Alternativement, vous pouvez utiliser des étiquettes Kubernetes spécifiques à Datadog pour configurer le unified service tagging. N'utilisez pas les deux approches, car cela crée des étiquettes en double.
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, le unified service tagging sera 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 Agent et de votre Collector Datadog.
Surveillance des conteneurs en temps réel
Surveillez l’état de vos conteneurs à l’aide des fonctionnalités de Live Container Monitoring.
É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.
Logs
Consultez les logs pour surveiller et diagnostiquer les opérations de l’application et du système.
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.
Métriques runtime
Surveillez les métriques runtime (JVM) pour vos applications.
Métriques de santé du Collector
Affichez les métriques du DDOT Collector pour surveiller la santé du Collector.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: