Compatibilité entre Datadog et OpenTelemetry

Présentation

Datadog propose plusieurs options de configuration pour répondre à divers cas d’utilisation, allant des implémentations OpenTelemetry (OTel) complètes aux configurations hybrides utilisant à la fois des composants OpenTelemetry et Datadog. Cette page couvre la compatibilité entre différentes configurations ainsi que les produits et fonctionnalités Datadog pris en charge, vous aidant à choisir la configuration la mieux adaptée à vos besoins.

Configurations

Datadog prend en charge plusieurs configurations pour l’utilisation d’OpenTelemetry. La principale différence entre ces configurations réside dans le choix du SDK (OpenTelemetry ou Datadog) et du collecteur utilisé pour traiter et transférer les données de télémétrie.

Type de configurationAPISDKCollecteur/Agent
SDK Datadog + DDOT (Recommandé)API Datadog ou API OTelSDK DatadogDistribution Datadog du collecteur OTel (DDOT)
SDK OTel + DDOTAPI OTelSDK OTelDistribution Datadog du collecteur OTel (DDOT)
SDK OTel + collecteur OTLP OTelAPI OTelSDK OTelCollecteur OTLP OTel
Direct OTLP IngestAPI OTelSDK OTelN/A (Direct to Datadog endpoint)

Compatibilité des fonctionnalités

Le tableau suivant présente la compatibilité des fonctionnalités selon les différentes configurations :

FonctionnalitéSDK Datadog + DDOT (Recommandé)SDK OTel + DDOTSDK OTel + collecteur OTLP OTelIngestion OTLP directe
Cloud SIEM
Traces, métriques et logs corrélés
Traçage distribué
Agent Observability
Runtime Metrics
Span Links
Métrique de trace
(Calculé à partir des spans qui atteignent Datadog ; reflète tout échantillonnage côté OTel que vous configurez.)
Database Monitoring (DBM)
Infrastructure Host List
Cloud Network Monitoring (CNM)
Kubernetes Monitoring
Live Container Monitoring
Live Processes
Universal Service Monitoring (USM)
App and API Protection (AAP)
Continuous Profiler
Data Observability: Jobs Monitoring (DJM)
Data Streams Monitoring (DSM)OTel n'offre pas de fonctionnalité DSMOTel n'offre pas de fonctionnalité DSM
Real User Monitoring (RUM)
Source code integration

Prise en charge de l’API

Les SDK Datadog prennent en charge les API de traces, de métriques et de logs OpenTelemetry dans divers langages. Trouvez votre langage dans le tableau ci-dessous pour accéder aux guides de configuration et aux détails de prise en charge.

LanguageTraces APIMetrics APILogs API
.NET
Python
Node.js
Java
Go
RubyAlpha
PHP

Plus de détails

Agent Observability

Les traces OpenTelemetry qui possèdent des attributs d’IA générative sont automatiquement converties en Agent Observability traces. Pour désactiver cette conversion, consultez Disabling Agent Observability conversion.

Métriques runtime

  • Configurations des SDK Datadog : émettez des Métriques Runtime via DogStatsD (port UDP 8125). Assurez-vous que DogStatsD est activé dans votre Datadog Agent.
  • Configurations du SDK OpenTelemetry : Suivent la spécification Métriques Runtime OpenTelemetry et sont généralement envoyées via OTLP (port 4317/4318).

Real User Monitoring (RUM)

Pour activer la fonctionnalité RUM complète, vous devez injecter les en-têtes pris en charge afin de corréler RUM et les traces.

Cloud Network Monitoring (CNM)

La surveillance au niveau du span ou du endpoint n’est pas prise en charge.

Pour plus d’informations, consultez Cloud Network Monitoring Setup.

Source Code Integration

Pour les langages non pris en charge dans les configurations OpenTelemetry, configurez le marquage de télémétrie pour lier les données à un commit spécifique.

Niveaux de prise en charge

Datadog fournit différents niveaux de prise en charge pour les composants et configurations OpenTelemetry :

  • Datadog Supported Components : Composants appartenant à Datadog tels que le Datadog Connector, Datadog Exporter et Infra Attribute Processor. Ces composants sont maintenus par Datadog, reçoivent des mises à jour régulières et sont prioritaires pour les corrections de bugs et les améliorations de fonctionnalités.

  • Composants pris en charge par la communauté : composants OpenTelemetry inclus dans le collecteur DDOT par défaut. Datadog aide à garantir que ces composants sont sécurisés, stables et compatibles.

  • Composants personnalisés : composants ou configurations OpenTelemetry qui ne sont pas inclus par défaut, tels que des composants de collecteur personnalisés ou l’instrumentation d’exécutions non prise en charge. Datadog fournit des conseils et une documentation comme point de départ, mais ne prend pas directement en charge la fonctionnalité de ces composants. Pour les problèmes liés aux composants personnalisés, adressez-vous à la communauté OpenTelemetry ou aux responsables des composants.

Prise en charge des plateformes et des environnements

Bien que l’OpenTelemetry Collector puisse être déployé dans de nombreux environnements, certaines plateformes présentent des limitations ou des exigences de prise en charge spécifiques.

  • AWS EKS Fargate : Cet environnement n’est actuellement pas pris en charge et entraînera une facturation incorrecte du host d’infrastructure lorsqu’il est utilisé avec le OpenTelemetry Collector. Une prise en charge officielle est prévue pour une version ultérieure. Consultez le Collector setup guide pour obtenir les informations les plus récentes.

Bonnes pratiques

Lorsque vous utilisez Datadog et OpenTelemetry ensemble, Datadog recommande les bonnes pratiques suivantes pour garantir des performances optimales et éviter les problèmes potentiels :

  • Évitez l’instrumentation mixte : Dans la plupart des cas, vous ne devez pas utiliser à la fois un SDK Datadog et un SDK OpenTelemetry dans la même application, car cela entraîne un comportement indéfini.
    • Exception : La prise en charge de certains langages, tels que Python, nécessite l’installation à la fois du SDK Datadog et du SDK OpenTelemetry.
    • Suivez toujours la documentation d’instrumentation spécifique au langage pour vous assurer d’utiliser la configuration correcte et prise en charge.
  • Évitez d’exécuter Agent et Collector séparément sur le même host : N’exécutez pas l’Agent Datadog et un Collector OpenTelemetry séparé sur le même host, car cela pourrait causer des problèmes. Cependant, vous pouvez exécuter des Agents et des Collectors sur des hôtes différents au sein du même parc.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles: