Cette traduction automatique est fournie pour votre commodité.
En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.
Prise en charge de l'API OpenTelemetry dans les agents New Relic
Les agents APM New Relic prennent désormais en charge les API OpenTelemetry (OTel), vous permettant d'instrumenter vos applications à l'aide d'API OpenTelemetry indépendantes des fournisseurs tout en conservant un accès complet aux puissantes fonctionnalités APM de New Relic. Cette fonctionnalité vous offre la flexibilité d'écrire du code d'instrumentation portable sans sacrifier la profondeur des informations et les fonctionnalités offertes par New Relic.
Avantages
L'utilisation de la prise en charge de l'API OpenTelemetry avec les agents New Relic offre plusieurs avantages :
Instrumentation indépendante du fournisseur: Écrivez une instrumentation personnalisée à l'aide des API OpenTelemetry standards qui fonctionnent sur les plateformes d'observabilité
Aucune migration requise: Activez la prise en charge de l'API OTel dans votre agent New Relic existant sans remplacer votre instrumentation actuelle
Adoption progressive: Utilisez les API OpenTelemetry pour la nouvelle instrumentation personnalisée tandis que l'instrumentation New Relic existante continue de fonctionner
Compatibilité en mode mixte: tracez les requêtes de manière transparente à travers les services instrumentés avec des agents New Relic, des API OpenTelemetry ou des agents OTel purs
Instrumentation communautaire: Tirez parti de l'instrumentation OpenTelemetry native pour les frameworks et les bibliothèques
Ce que cette fonctionnalité apporte
Lorsque vous activez la prise en charge de l'API OpenTelemetry dans un agent New Relic, l'agent peut :
Capturez les spans, les traces, les métriques et les logs créés à l'aide des API OpenTelemetry
Intégrez de manière transparente la télémétrie générée par OTel dans les traces New Relic APM
Prise en charge de l'instrumentation OpenTelemetry native qui n'entre pas en conflit avec l'instrumentation intégrée de New Relic
Maintenir le contexte de trace à travers des services instrumentés mixtes New Relic et OpenTelemetry
Important
Cette fonctionnalité est désactivée par défaut. Vous devez l'activer explicitement via la configuration de l'Agent.
Langages et fonctionnalités pris en charge
La prise en charge de l'API OpenTelemetry est disponible pour les agents New Relic APM suivants :
Langue
Version minimale
API Traces
API métriques
API Logs
Liens de span
Événements sur les spans
Java
[9.1.0]
Node.js
[13.13.0]
.NET
[10.49.0]
Voir la note ci-dessous
Python
[11.5.0]
Voir la note ci-dessous
Ruby
[10.2.0]
Conseil
Logs .NET et Python : L'agent .NET utilise déjà la bibliothèque de logging qui est devenue l'API OpenTelemetry pour les données de logs. L'agent Python prend déjà en charge le module logging. Pour des raisons de rétrocompatibilité, l'activation de la prise en charge de l'API OpenTelemetry ne modifie pas la façon dont ces agents instrumentent les logs.
Échantillonnage dans des environnements mixtes
Tous les agents prennent désormais en charge l'échantillonnage par ratio de traces, s'alignant sur les standards OpenTelemetry et garantissant une logique d'échantillonnage cohérente dans les environnements mixtes.
Principaux avantages:
Décisions d'échantillonnage cohérentes entre New Relic et les services instrumentés par OTel
Préservation des décisions de trace en amont issues des SDK OTel
Pour plus de détails sur le fonctionnement de l'échantillonnage adaptatif, les cibles d'échantillonnage par agent et les options de configuration, consultez Échantillonnage du traçage distribué.
Types d'instrumentation pris en charge
Instrumentation native (automatique)
L'instrumentation OpenTelemetry native est prise en charge prête à l'emploi. Ces instrumentations sont directement intégrées à la bibliothèque ou au framework par son mainteneur et fonctionnent automatiquement lorsque vous activez la prise en charge de l'API OpenTelemetry.
Les instrumentations natives spécifiques disponibles varient selon l'agent de langage. Consultez la section configuration pour plus de détails sur les instrumentations prises en charge pour chaque langage.
Important
Limitation connue: certaines instrumentations natives peuvent générer des noms de spans ou de métriques légèrement différents de ceux de l'instrumentation intégrée de New Relic en raison de différences dans les conventions sémantiques d'OpenTelemetry (par exemple, Elasticsearch, RabbitMQ).
Instrumentation personnalisée avec les API OpenTelemetry
Vous pouvez écrire une instrumentation personnalisée à l'aide des API OpenTelemetry standard :
Traces: Créez des spans personnalisés et ajoutez des attributs à l'aide de l'API de traçage OpenTelemetry
Métriques: Enregistrez des métriques personnalisées à l'aide de l'API OpenTelemetry Metrics (si prise en charge)
Logs: Écrivez des logs à l'aide de l'API OpenTelemetry Logs (si pris en charge)
Consultez la documentation OpenTelemetry pour plus de détails sur l'utilisation de ces API dans votre langage.
Comment activer la prise en charge de l'API OpenTelemetry
La prise en charge de l'API OpenTelemetry est désactivée par défaut. Activez-le via la configuration de votre agent :
Prérequis
Ajoutez les dépendances OpenTelemetry requises à votre application :
1. Activer l'autoconfiguration du SDK OpenTelemetry
Utilisez l'une des méthodes suivantes :
Propriété du système :
bash
$
-Dotel.java.global-autoconfigure.enabled=true
Variable d'environnement :
bash
$
exportOTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED=true
2. Activer la prise en charge de New Relic OpenTelemetry
Propriété du système :
bash
$
-Dnewrelic.config.opentelemetry.enabled=true
Variable d'environnement :
bash
$
NEW_RELIC_OPENTELEMETRY_ENABLED=true
Configuration YAML (newrelic.yml) :
opentelemetry:
enabled:true
Important
L'agent Java instrumente les API de traces, métriques et logs OpenTelemetry pour capturer les signaux émis par votre application. Il n'inclut pas et n'active pas automatiquement d'instrumentations OpenTelemetry. L'auto-instrumentation OpenTelemetry n'est pas prise en charge.
Types d'instrumentation pris en charge
Instrumentation manuelle
L'instrumentation personnalisée utilisant les API de traces, de métriques ou de logs OpenTelemetry sera automatiquement capturée par l'agent.
Instrumentation native et de bibliothèque
Les instrumentations de bibliothèques autonomes OpenTelemetry et l'instrumentation native intégrée directement dans les bibliothèques fonctionneront avec l'agent New Relic. Cependant, l'auto-instrumentation OpenTelemetry basée sur le bytecode ne sera pas détectée par l'agent New Relic.
Activer la prise en charge de l'API OpenTelemetry
Activez la prise en charge de l'API OpenTelemetry dans votre fichier de configuration newrelic.js :
exports.config={
// ... other config
opentelemetry:{
enabled:true,
traces:{
enabled:true
}
}
// ... other config
}
Important
L'agent Node.js n'active pas automatiquement d'instrumentations OpenTelemetry. Il instrumente uniquement les API OpenTelemetry pour capturer la télémétrie émise par votre application.
API OpenTelemetry prises en charge
Lorsque la prise en charge d'OpenTelemetry est activée, l'agent Node.js prend entièrement en charge :
L'API Metrics est la fonctionnalité la plus utile pour les clients Node.js. Cela étend la capacité de collecte de métriques pour inclure les métriques dimensionnelles, une fonctionnalité fréquemment demandée.
L'API OpenTelemetry Logs JavaScript est encore en développement, mais l'agent Node.js la prend en charge. Vous pouvez utiliser l'API pour émettre des logs qui seront envoyés à New Relic.
Les clients qui instrumentent leurs applications avec l'API OpenTelemetry constateront que l'agent traite et transmet ces données correctement.
Instrumentation native et de bibliothèque (limitée)
La liste des instrumentations OpenTelemetry recoupe largement les modules pris en charge par l'agent Node.js. Les instrumentations qui ne sont pas déjà couvertes par l'agent New Relic peuvent :
Conflit avec les éléments internes de l'agent
Ne pas avoir une demande client suffisante
Prudence
Nous n'avons pas testé les instrumentations OpenTelemetry en dehors de la liste officielle OpenTelemetry et ne pouvons en recommander aucune spécifique pour le moment.
Limitations connues
Aucune instrumentation automatique: l'agent n'active pas automatiquement les instrumentations OpenTelemetry. Les clients doivent instrumenter manuellement leur code à l'aide des API OpenTelemetry.
Activer la prise en charge de l'API OpenTelemetry
Activez la prise en charge de l'API OpenTelemetry à l'aide des variables d'environnement ou du fichier de configuration XML newrelic.config.
Utilisation des variables d'environnement :
bash
$
NEW_RELIC_OPENTELEMETRY_ENABLED=true
Utilisation de newrelic.config :
<configuration>
<openTelemetryenabled="true"/>
</configuration>
Conseil
Les Traces et les Métriques sont activées par défaut lorsque la prise en charge d'OpenTelemetry est activée.
Instrumentations natives prises en charge
Lorsque vous activez la prise en charge de l'API OpenTelemetry, l'agent .NET peut capturer la télémétrie provenant des bibliothèques instrumentées par OpenTelemetry.
Instrumentations des traces
L'Agent prend en charge les bibliothèques avec une instrumentation de tracing OpenTelemetry native. L'instrumentation personnalisée écrite à l'aide de l'API de traçage OpenTelemetry est également prise en charge.
Instrumentations des métriques
Lorsque les métriques sont activées, l'agent prend en charge les instrumentations de métriques OpenTelemetry provenant de bibliothèques et de frameworks. L'instrumentation personnalisée écrite à l'aide de l'API OpenTelemetry Metrics est également prise en charge.
Instrumentations des logs
L'agent .NET instrumente déjà la bibliothèque de logging qui est devenue l'API OpenTelemetry pour les données de logs. Aucune modification n'est requise pour les logs lors de l'activation de la prise en charge de l'API OpenTelemetry. Pour assurer la rétrocompatibilité, l'instrumentation des logs continue de fonctionner comme auparavant.
Activer la prise en charge de l'API OpenTelemetry
Activez la prise en charge de l'API OpenTelemetry dans votre fichier de configuration newrelic.ini ou via des variables d'environnement :
Utilisation de newrelic.ini :
[newrelic]
opentelemetry.enabled=true
Utilisation de la variable d'environnement :
bash
$
NEW_RELIC_OPENTELEMETRY_ENABLED=true
Important
Lorsque la prise en charge d'OpenTelemetry est activée, l'agent détecte automatiquement si opentelemetry-api est installé et bascule vers l'instrumentation OpenTelemetry pour les bibliothèques prises en charge.
Comment ça marche
Lorsque la prise en charge d'OpenTelemetry est activée et que l'agent détecte que opentelemetry-api est installé :
Instrumentation native: Pour les bibliothèques avec une instrumentation OpenTelemetry native intégrée, l'agent désactive automatiquement les hooks de New Relic et utilise l'instrumentation OpenTelemetry native à la place.
Instrumentation de bibliothèque: Si une bibliothèque d'instrumentation OpenTelemetry est détectée, l'agent utilise automatiquement l'instrumentation OpenTelemetry au lieu des hooks d'instrumentation de New Relic.
Certaines instrumentations (telles que les bibliothèques AWS et gRPC) continueront d'utiliser l'instrumentation de New Relic. Les bibliothèques d'IA avec instrumentation native sont explicitement désactivées pour l'instant et seront prises en charge dans une future version.
Instrumentation manuelle
Toute instrumentation personnalisée écrite à l'aide de l'API de traçage OpenTelemetry sera capturée par l'agent.
Exemple:
from opentelemetry import trace
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("my-custom-span")as span:
span.set_attribute("custom.attribute","value")
# Your code here
Fonctionnalités prises en charge
API Traces
✅ Entièrement pris en charge: Créer des spans personnalisés et ajouter des attributs à l'aide de l'API de tracing OpenTelemetry
API métriques
❌ Pas encore pris en charge: l'API OpenTelemetry Metrics n'est pas activée dans l'agent Python
API Logs
✅ Fonctionne déjà: L'agent prend déjà en charge le module de logging. Il n'existe pas d'API OpenTelemetry pour le logging en Python (seul un SDK existe). Ce qu'OpenTelemetry configure pour le logging est si c'est activé et vers quels points de terminaison envoyer les données.
Comment ça marche
Lorsque la prise en charge d'OpenTelemetry est activée :
L'Agent recherche dans le système pour déterminer si les bibliothèques d'instrumentation OpenTelemetry sont installées
Basculement automatique: si elle est détectée, l'agent utilise l'instrumentation de la bibliothèque OpenTelemetry au lieu des hooks de New Relic
Intégration transparente: les spans OpenTelemetry sont intégrés aux traces New Relic
Limitations connues
Métriques non prises en charge: l'API OpenTelemetry Metrics n'est pas encore activée
Certaines bibliothèques AWS et gRPC exclues: continueront d'utiliser l'instrumentation New Relic
Bibliothèques d'IA désactivées: L'instrumentation OpenTelemetry native pour les bibliothèques d'IA est désactivée pour le moment
Paramètres d'inclusion/exclusion: Des options d'affinement sont prévues pour les futures versions, mais seule l'activation/désactivation est actuellement fonctionnelle.
Activer la prise en charge de l'API OpenTelemetry
Pour activer la prise en charge de l'API OpenTelemetry dans l'agent Ruby, ajoutez ce qui suit à votre fichier de configuration newrelic.yml :
opentelemetry:
enabled:true
Ou définissez la variable d'environnement :
bash
$
NEW_RELIC_OPENTELEMETRY_ENABLED=true
Important
Lorsque la prise en charge d'OpenTelemetry est activée, l'agent détecte automatiquement si opentelemetry-api est installé et bascule vers l'instrumentation OpenTelemetry pour les bibliothèques prises en charge.
Instrumentation manuelle
Toute instrumentation personnalisée écrite à l'aide de l'API de traçage OpenTelemetry sera capturée par l'agent.
✅ Pris en charge: Créer des spans personnalisées et ajouter des attributs à l'aide de l'API de traçage OpenTelemetry
API métriques
❌ Non pris en charge: OpenTelemetry Metrics API
API Logs
❌ Non pris en charge: OpenTelemetry Logs API
Liens de span
❌ Non pris en charge: Liens de span
Événements sur les spans
❌ Non pris en charge: Événements sur les Spans
Comment ça marche
Lorsque la prise en charge d'OpenTelemetry est activée, l'agent Ruby New Relic :
Écoute les appels vers les API de tracing OpenTelemetry
Traduit ces appels en modèles de données New Relic
Intègre les spans OpenTelemetry dans les traces New Relic
callout.information
Par défaut, l'instrumentation OpenTelemetry est exclue pour les bibliothèques que l'agent Ruby New Relic instrumente également. Cela inclut les bibliothèques instrumentées nativement et les bibliothèques avec des packages d'instrumentation dans opentelemetry-ruby-contrib.
Limitations connues
Prise en charge limitée de l'API: seule l'API Traces est prise en charge dans cette version
Métriques et logs: Non disponible
Liens de span et événements: Non pris en charge actuellement
Vérifier que cela fonctionne
Après avoir activé la prise en charge de l'API OpenTelemetry, vérifiez que cela fonctionne :
Déployez votre application avec la configuration de l'agent mise à jour.
Si vous utilisez une instrumentation personnalisée, assurez-vous que votre code génère des spans/métriques à l'aide des API OpenTelemetry.
Affichez les traces distribuées pour voir les spans créés par les API OpenTelemetry intégrés à vos traces
Limitations et problèmes connus
Limitations de l'instrumentation
Limitation
Description
Instrumentation de bibliothèque non prise en charge
Les instrumentations de bibliothèques OpenTelemetry nécessitant l'installation de paquets distincts ne sont pas prises en charge dans cette version. Seules les instrumentations natives intégrées directement à la bibliothèque par son mainteneur fonctionnent automatiquement.
Instrumentation du bytecode Java non détectée
L'auto-instrumentation Java OpenTelemetry qui utilise la manipulation de bytecode ne sera pas détectée par l'agent Java New Relic.
Différences des conventions sémantiques
Certaines instrumentations OpenTelemetry utilisent des conventions de nommage différentes pour les spans et les métriques par rapport à l'instrumentation intégrée de New Relic :
Elasticsearch: Les noms de span et les noms d'opération peuvent différer par la casse et la longueur
RabbitMQ: Le traçage distribué fonctionne différemment (liens de span vs relations parent/enfant)
Conseil
Ces différences peuvent affecter les dashboards et les conditions d'alerte existants qui reposent sur des noms de spans ou de métriques spécifiques. Vérifiez et mettez à jour vos requêtes si vous passez de l'instrumentation New Relic à l'instrumentation OpenTelemetry pour ces services.
Limitations spécifiques à l'Agent
Python: Seule l'API Traces est prise en charge ; les API Metrics et Logs ne sont pas disponibles
Ruby: Seule l'API Traces est prise en charge ; les API Metrics et Logs ne sont pas disponibles
.NET: L'activation des métriques OpenTelemetry peut augmenter les coûts d'ingestion des métriques dimensionnelles
Dépannage
Les spans OpenTelemetry n'apparaissent pas dans les traces
Si vous avez activé la prise en charge de l'API OpenTelemetry mais que vous ne voyez pas les spans générés par OTel dans vos traces :
Vérifiez la configuration de votre agent pour confirmer que la prise en charge d'OpenTelemetry est activée :
Vérifier les variables d'environnement ou les fichiers de configuration
Vérifiez les logs de l'agent pour confirmer que la prise en charge d'OpenTelemetry est active.
Assurez-vous d'avoir redémarré votre application après avoir modifié la configuration
Confirmez que vous utilisez la version minimale requise de l'agent prenant en charge les API OpenTelemetry. Voir le tableau des langages pris en charge ci-dessus.
Besoin d'aide ?
Si vous rencontrez des problèmes avec la prise en charge de l'API OpenTelemetry, veuillez contacter le support New Relic pour obtenir de l'aide.