Activer Azure Monitor OpenTelemetry pour les applications .NET, Node.js, Python et Java

Cet article explique comment activer et configurer la collecte de données basée sur OpenTelemetry pour appuyer les expériences dans Azure Monitor Application Insights. Nous allons découvrir comment installer la distribution OpenTelemetry Azure Monitor. La distribution OpenTelemetry d’Azure Monitor fournit une distribution OpenTelemetry qui inclut la prise en charge des fonctionnalités spécifiques à Azure Monitor. La distribution permet une télémétrie automatique en incluant les bibliothèques d’instrumentation OpenTelemetry pour collecter des traces, des métriques, des journaux et des exceptions, et permet de collecter des données de télémétrie personnalisées. Vous pouvez également utiliser la fonctionnalité Métriques actives incluses dans la distribution pour surveiller et collecter davantage de données de télémétrie à partir d’applications web en production en direct. Pour plus d’informations sur les avantages de l’utilisation de la distribution OpenTelemetry Azure Monitor, consultez Pourquoi utiliser la distribution OpenTelemetry Azure Monitor ? dans FAQ OpenTelemetry.

Pour en savoir plus sur la collecte de données à l’aide de OpenTelemetry, veuillez consulter la rubrique Principes de base sur la collecte de données ou FAQ OpenTelemetry.

Statut de publication d’OpenTelemetry

Les offres OpenTelemetry sont disponibles pour les applications .NET, Node.js, Python et Java.

Remarque

Pour connaître l’état de la publication fonctionnalité par fonctionnalité, consultez la FAQ.

Bien démarrer

Suivez les étapes de cette section pour instrumenter votre application avec OpenTelemetry.

Prérequis

Installer la bibliothèque de client

Installez le package NuGet Azure.Monitor.OpenTelemetry.AspNetCore le plus récent :

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Activer Azure Monitor Application Insights

Pour activer Azure Monitor Application Insights, apportez une modification mineure à votre application et définissez votre « chaîne de connexion ». La chaîne de connexion indique à votre application où envoyer les données de télémétrie collectées par la distribution, et elle vous est unique.

Modifier votre application

Ajoutez UseAzureMonitor() au démarrage de votre application, situé dans votre classe program.cs.

// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;

// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);

// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the application.
var app = builder.Build();

// Run the application.
app.Run();

Copier la chaîne de connexion à partir de votre ressource Application Insights

Conseil

Si vous n’en avez pas encore une, le moment est venu de créer une ressource Application Insights. Voici dans quel cas nous recommandons de créer une ressource Application Insights plutôt que d’en utiliser une existante.

Pour copier votre chaîne de connexion unique :

Capture d’écran montrant l’aperçu d’Application Insights et la chaîne de connexion.

  1. Accédez au panneau Vue d’ensemble de votre ressource Application Insights.
  2. Recherchez votre chaîne de connexion.
  3. Pointez sur la chaîne de connexion et sélectionnez l’icône Copier dans le Presse-papiers.

Coller la chaîne de connexion dans votre environnement

Pour coller votre chaîne de connexion, sélectionnez l’une des options suivantes :

R. Définir via une variable d’environnement (recommandé)

Dans la commande suivante, remplacez <Your Connection String> par votre chaîne de connexion unique.

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

B. Définir via le fichier de configuration : Java uniquement (recommandé)

Créez un fichier de configuration nommé applicationinsights.json, puis placez-le dans le même répertoire que applicationinsights-agent-3.5.1.jar, avec le contenu suivant :

{
  "connectionString": "<Your Connection String>"
}

Remplacez <Your Connection String> dans le code JSON précédent par votre chaîne de connexion unique.

C. Définir via le code : ASP.NET Core, Node.js et Python uniquement (non recommandé)

Consultez Configuration de la chaîne de connexion pour obtenir un exemple de définition de chaîne de connexion par le code.

Remarque

Si vous définissez la chaîne de connexion à plusieurs emplacements, nous respectons la précédence suivante :

  1. Code
  2. Variable d’environnement
  3. Fichier de configuration

Confirmer le déplacement des données

Exécutez votre application et ouvrez votre onglet Ressource Application Insights dans le portail Azure. L’affichage des données dans le portail peut prendre plusieurs minutes.

Capture d’écran de l’onglet Vue d’ensemble d’Application Insights avec les demandes serveur et le temps de réponse du serveur mis en évidence.

Application Insights est maintenant activé pour votre application. Toutes les étapes suivantes sont facultatives et permettent une personnalisation supplémentaire.

Important

Si vous avez deux ou plusieurs services émettant de la télémétrie vers la même ressource Application Insights, vous devez définir les noms des rôles cloud pour les représenter correctement sur la cartographie d’application.

Dans le cadre de l’utilisation de l’instrumentation Application Insights, nous collectons et envoyons des données de diagnostic à Microsoft. Ces données nous permettent d’exécuter et d’améliorer Application Insights. Pour en savoir plus, consultez Statsbeat dans Azure Application Insights.

Exemples

Les exemples d’applications Azure Monitor OpenTelemetry sont disponibles pour toutes les langues prises en charge.

Étapes suivantes

Forum aux questions

Cette section fournit des réponses aux questions fréquentes.

Qu’est-ce qu’OpenTelemetry ?

C’est une nouvelle norme open source pour l’observabilité. Pour en savoir plus, rendez-vous sur OpenTelemetry.

Pourquoi Microsoft Azure Monitor investit-il dans OpenTelemetry ?

Microsoft fait partie des plus importants contributeurs d’OpenTelemetry.

Les principales propositions de valeur d’OpenTelemetry reposent sur le fait qu’elles sont indépendantes du fournisseur et qu’elles offrent des API/kits SDK cohérents dans tous les langages.

Au fil du temps, nous pensons qu’OpenTelemetry permettra aux clients d’Azure Monitor d’observer des applications écrites dans des langages autres que nos langages pris en charge. Il étend également les types de données que vous pouvez collecter via un ensemble complet de bibliothèques d’instrumentation. En outre, les kits de développement logiciel (SDK) OpenTelemetry ont tendance à être plus performants à grande échelle que leurs prédécesseurs, les kits de développement logiciel (SDK) Application Insights.

Enfin, OpenTelemetry est en phase avec la stratégie de Microsoft qui vise à adopter l’open source.

Quel est l’état d’OpenTelemetry ?

Consultez l’état d’OpenTelemetry.

Qu’est-ce que la « distribution Azure Monitor OpenTelemetry » ?

Vous pouvez le considérer comme un wrapper mince qui regroupe tous les composants OpenTelemetry pour une expérience de première classe sur Azure. Ce wrapper est également appelé une distribution dans OpenTelemetry.

Pourquoi utiliser la « distribution Azure Monitor OpenTelemetry » ?

Il existe plusieurs avantages à utiliser la distribution Azure Monitor OpenTelemetry par rapport à OpenTelemetry natif de la communauté :

Dans l’esprit d’OpenTelemetry, nous avons conçu la distribution pour qu’elle soit ouverte et extensible. Par exemple, vous pouvez ajouter :

  • Un exportateur OTLP (OpenTelemetry Protocol) et l’envoi vers une seconde destination simultanément
  • Autres bibliothèques d’instrumentation non incluses dans la distribution

Étant donné que la distribution fournit une distribution OpenTelemetry, la distribution prend en charge tout ce qui est pris en charge par OpenTelemetry. Par exemple, vous pouvez ajouter d’autres processeurs de télémétrie, exportateurs ou bibliothèques d’instrumentation si OpenTelemetry les prend en charge.

Remarque

La distribution définit l’échantillonneur sur un échantillonneur personnalisé à taux fixe pour Application Insights. Vous pouvez le modifier pour un autre échantillonneur, mais cela peut désactiver certaines des fonctionnalités incluses de la distribution. Pour plus d’informations sur l’échantillonneur pris en charge, consultez la section Activer l’échantillonnage de Configurer Azure Monitor OpenTelemetry.

Pour les langues sans exportateur OpenTelemetry autonome pris en charge, la distribution OpenTelemetry d’Azure Monitor est la seule façon actuellement prise en charge d’utiliser OpenTelemetry avec Azure Monitor. Pour les langues avec un exportateur OpenTelemetry autonome pris en charge, vous avez la possibilité d’utiliser la distribution OpenTelemetry Azure Monitor ou l’exportateur OpenTelemetry autonome approprié en fonction de votre scénario de télémétrie. Pour plus d’informations, consultez Quand dois-je utiliser l’exportateur Azure Monitor OpenTelemetry ?.

Comment tester la distribution Azure Monitor OpenTelemetry ?

Consultez notre documentation sur l’activation pour .NET, Java, JavaScript (Node.js) et Python.

Dois-je utiliser le kit de développement logiciel (SDK) OpenTelemetry ou Application Insights ?

Nous vous recommandons d’utiliser la distribution OpenTelemetry, sauf si vous avez besoin d’une fonctionnalité disponible uniquement avec une prise en charge officielle dans le kit SDK Application Insights.

L’adoption d’OpenTelemetry empêche désormais la migration à une date ultérieure.

Quand utiliser l’exportateur OpenTelemetry Azure Monitor ?

Pour ASP.NET Core, Java, Node.js et Python, nous vous recommandons d’utiliser la distribution OpenTelemetry Azure Monitor. Il s’agit d’une ligne de code pour démarrer.

Pour tous les autres scénarios .NET, comme les applications ASP.NET classiques, Console, etc., nous vous recommandons d’utiliser l’exportateur OpenTelemetry Azure Monitor .NET : Azure.Monitor.OpenTelemetry.Exporter.

Pour les scénarios de télémétrie Python plus complexes nécessitant une configuration avancée, nous vous recommandons utiliser l’Exportateur Azure Monitor OpenTelemetry.

Quel est l’état de publication actuel des fonctionnalités de la distribution Azure Monitor OpenTelemetry ?

Le graphique suivant présente la prise en charge des fonctionnalités OpenTelemetry pour chaque langage.

Fonctionnalité .NET Node.js Python Java
Traçage distribué
Métriques personnalisées
Métriques standard (précision affectée par l’échantillonnage)
Échantillonnage à fréquence fixe
Stockage hors connexion et nouvelles tentatives automatiques
Rapports d’exceptions
Collection de journaux ⚠️
Événements personnalisés ⚠️ ⚠️ ⚠️
Authentification Microsoft Entra
Métriques temps réel
Détecter le contexte de ressource pour les VM/VMSS et App Service
Détecter le contexte de ressource pour AKS et les fonctions
Filtrage de l’étendue des tests de disponibilité
Remplissage automatique de l’identifiant utilisateur, de l’identifiant utilisateur authentifié et de l’IP utilisateur
Remplacer/définir manuellement le nom de l’opération, l’ID utilisateur ou l’ID utilisateur authentifié
échantillonnage adaptatif
Profiler ⚠️
Débogueur de capture instantanée

Clé

OpenTelemetry peut-il être utilisé pour les navigateurs web ?

Oui, mais cela n’est pas recommandé ou pris en charge par Azure. OpenTelemetry JavaScript est fortement optimisé pour Node.js. Au lieu de cela, nous vous recommandons d’utiliser le Kit de développement logiciel (SDK) JavaScript Application Insights.

Quand pouvons-nous nous attendre à ce que le Kit de développement logiciel (SDK) OpenTelemetry soit disponible pour être utilisé dans les navigateurs web ?

Le SDK web OpenTelemetry n’a pas de planning de disponibilité défini. Il faudra probablement attendre encore plusieurs années avant qu’un SDK pour navigateur ne constitue une alternative viable au SDK JavaScript d’Application Insights.

Puis-je tester OpenTelemetry dans un navigateur web aujourd’hui ?

Le bac à sable web OpenTelemetry est une duplication (fork) conçue pour permettre à OpenTelemetry de fonctionner dans un navigateur. Il n’est pas encore possible d’envoyer des données de télémétrie à Application Insights. Le SDK ne définit pas d’événements clients d’ordre général.

L’exécution d’Application Insights avec les agents concurrents tels que AppDynamics, DataDog et NewRelic est-elle prise en charge ?

Nombre Bien que nos distributions vous permettent d’exporter simultanément vers un point de terminaison OTLP et Azure Monitor, nous ne prévoyons pas de tester ou de prendre en charge cette pratique.

Puis-je utiliser les fonctionnalités d’évaluation dans les environnements de production ?

Nous ne le recommandons pas. Consultez Conditions d’utilisation supplémentaires des Préversions Microsoft Azure.

Quelle est la différence entre une instrumentation manuelle et automatique ?

Consultez la rubrique Présentation d’OpenTelemetry.

Est-il possible d’utiliser le collecteur OpenTelemetry ?

Certains clients utilisent le collecteur OpenTelemetry comme agent de substitution, même si Microsoft ne prend pas encore officiellement en charge une approche basée sur un agent pour la surveillance d’applications. En attendant, la communauté open source a contribué à créer un exportateur Azure Monitor de collecteur OpenTelemetry que certains clients utilisent pour envoyer des données à Azure Monitor Application Insights. Ce n’est pas pris en charge par Microsoft.

Quelle est la différence entre OpenCensus et OpenTelemetry ?

OpenCensus est le précurseur d’OpenTelemetry. Microsoft a contribué à réunir OpenTracing et OpenCensus pour créer OpenTelemetry, une norme d’observabilité unique et disponible à l’échelle mondiale. Le Kit de développement logiciel (SDK) Python actuellement recommandé en production pour Azure Monitor est basé sur OpenCensus. Microsoft s’engage à baser Azure Monitor sur OpenTelemetry.

Dépannage

Cela ne fonctionne pas ? Consultez la page de résolution des problèmes pour ASP.NET Core.

Support

Sélectionnez un onglet correspondant à la langue de votre choix pour découvrir les options de support.

Commentaires OpenTelemetry

Pour fournir des commentaires :