Suivez ce guide pour déployer la distribution Datadog du collecteur OpenTelemetry (DDOT) en tant que DaemonSet Kubernetes en utilisant Helm ou l’opérateur Datadog.
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
Installez l’agent Datadog avec le collecteur 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 collecteur DDOT pour traiter et transférer les métriques et les journaux OTLP.
Sélectionnez la méthode d’installation
Choisissez l’une des méthodes d’installation suivantes :
Opérateur Datadog : Une approche native à Kubernetes qui réconcilie et maintient automatiquement votre configuration Datadog. Il rapporte l’état de déploiement, la santé et les erreurs dans son statut de ressource personnalisée, et il limite le risque de mauvaise configuration grâce à des options de configuration de niveau supérieur.
Helm chart : Un moyen simple de déployer l’Agent Datadog. Il fournit des capacités de versionnage, de rollback et de templating, rendant les déploiements cohérents et plus faciles à reproduire.
Remplacez <DD_API_KEY> par votre véritable clé API Datadog.
Configurez l’Agent Datadog
Après avoir déployé l’Opérateur Datadog, créez la ressource DatadogAgent qui déclenche le déploiement de l’Agent Datadog, de l’Agent de Cluster et des Runners de Vérifications de Cluster (si utilisés) dans votre cluster Kubernetes. L’Agent Datadog 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.
L’Opérateur Datadog lie automatiquement le Collecteur OpenTelemetry aux ports 4317 (nommé otel-grpc) et 4318 (nommé otel-http) par défaut.
(Optionnel) Activez des fonctionnalités supplémentaires de Datadog :
L'activation de ces fonctionnalités peut entraîner des frais supplémentaires. Examinez la page de tarification et parlez à votre Responsable du Succès Client avant de continuer.
Lors de l’activation de fonctionnalités supplémentaires de Datadog, utilisez toujours les fichiers de configuration de Datadog ou du Collecteur 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 de l’agent -full.
Lorsque vous remplacez le tag de l’image de l’agent de nœud, utilisez un tag >= 7.67.0 afin que le conteneur OTel soit programmé (l’image ddot-collector n’est prise en charge que dans >= 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).
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 de l'Agent conforme aux normes FIPS. Voir 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 pointer vers l’adresse IP du nœud où l’Agent Datadog est assigné.
Si vous ne souhaitez pas exposer le port, vous pouvez utiliser le service Agent à la place :
Supprimez le hostPort les 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 Agent :
(Optionnel) Activez des fonctionnalités Datadog supplémentaires :
L'activation de ces fonctionnalités peut entraîner des frais supplémentaires. Examinez la page de tarification et parlez à votre Responsable du Succès Client avant de continuer.
Lors de l’activation de fonctionnalités supplémentaires de Datadog, utilisez toujours les fichiers de configuration de Datadog ou du Collecteur OpenTelemetry au lieu de vous fier aux variables d’environnement Datadog.
(Optionnel) Collectez les étiquettes de pod et utilisez-les comme tags à attacher aux métriques, traces et journaux :
L’Opérateur Datadog fournit une configuration d’exemple du Collecteur OpenTelemetry que vous pouvez utiliser comme point de départ. Si vous devez modifier cette configuration, l’Opérateur Datadog prend en charge deux façons de 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 ConfigMap : Stockez votre configuration de Collecteur dans un ConfigMap et référencez-le 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é avec la configuration du Collecteur en ligne
Le datadog-agent.yaml complété avec la configuration du Collecteur en ligne devrait ressembler à ceci :
Pour des configurations plus complexes ou fréquemment mises à jour, stocker la configuration du Collecteur dans un ConfigMap peut simplifier le contrôle de version.
Créez un ConfigMap qui contient votre configuration de Collecteur :
Le Datadog Helm chart fournit un exemple de configuration OpenTelemetry Collector 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 est défini comme un secret, ou si site n’est pas spécifié, le système utilise les valeurs de la configuration de base de l’Agent. Par défaut, l’Agent de base définit le site sur datadoghq.com (US1).
Récepteur Prometheus
Le récepteur Prometheus collecte les métriques de santé du Collecteur OpenTelemetry pour le pipeline de métriques.
Pour installer ou mettre à niveau l’Agent Datadog avec le Collecteur OpenTelemetry dans votre environnement Kubernetes, utilisez l’une des commandes Helm suivantes :
Pour la configuration par défaut du Collecteur OpenTelemetry :
Exemple d'application instrumentée avec l'API OpenTelemetry
Par exemple, vous pouvez utiliser l’application d’exemple Calendar qui est déjà instrumentée 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. Puisque le Collecteur fonctionne en tant que DaemonSet, vous devez spécifier l’hôte local comme point de terminaison 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 balisage de service unifié relie les données d’observabilité dans Datadog afin que vous puissiez naviguer à travers les métriques, les traces et les journaux avec des balises cohérentes.
Dans les environnements conteneurisés, définissez env, service et version en utilisant les variables d’environnement des attributs de ressource OpenTelemetry. Le Collecteur DDOT détecte cette configuration de balisage 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 balisage de service unifié. N'utilisez pas les deux approches, car cela crée des balises 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 balisage de service unifié sera entièrement activé pour vos métriques, traces et journaux.
Explorez les données d’observabilité dans Datadog
Utilisez Datadog pour explorer les données d’observabilité de votre application.
Automatisation de flotte
Explorez la configuration de votre Agent et Collecteur Datadog.
Surveillance en direct des conteneurs
Surveillez la santé de vos conteneurs en utilisant les capacités de surveillance en direct des conteneurs.
Santé des nœuds d’infrastructure
Consultez les métriques d’exécution et d’infrastructure pour surveiller et mesurer la performance de vos nœuds.
Journaux
Consultez les logs pour surveiller et diagnostiquer les opérations de l’application et du système.
Traces
Visualisez les traces et les spans pour observer l’état et la performance des requêtes traitées par votre application, avec des métriques d’infrastructure corrélées dans la même trace.
Métriques d’exécution
Surveillez vos métriques d’exécution (JVM) pour vos applications.
Métriques de santé du collecteur
Visualisez les métriques du Collecteur DDOT pour surveiller la santé du collecteur.
Pour en savoir plus
Documentation, liens et articles supplémentaires utiles: