Migrer des SDK de l'API Application Insights Classic vers Azure Monitor OpenTelemetry

Ce guide fournit des instructions pas à pas pour migrer des applications à partir des kits SDK Application Insights (API classique) vers Azure Monitor OpenTelemetry.

Vous bénéficiez d’une expérience similaire avec l’instrumentation Azure Monitor OpenTelemetry, comme avec les kits sdk Application Insights. Pour plus d’informations et une comparaison de fonctionnalités par fonctionnalité, consultez l’état de publication des fonctionnalités.

Conseil / Astuce

Pour consulter les informations archivées du SDK .NET ou Node.js de l'API classique, consultez API 2.x.

Utilisez Application Insights .NET kit de développement logiciel (SDK) 3.x pour effectuer une mise à niveau à partir d’Application Insights .NET SDK 2.x vers une implémentation basée sur OpenTelemetry (OTel). Le SDK 3.x conserve la plupart des interfaces de programmation d’applications TelemetryClient et TelemetryConfiguration et utilise les Azure Monitor OpenTelemetry Exporter pour envoyer des données de télémétrie à Application Insights.

La plupart des appels classiques Track* continuent de fonctionner après la mise à niveau, mais ils sont routés via une couche de mappage interne qui émet des signaux OpenTelemetry.

Si vous créez une nouvelle application ou que vous utilisez déjà le Azure Monitor OpenTelemetry Distro, utilisez plutôt le Azure Monitor OpenTelemetry Distro. N'utilisez pas Application Insights .NET SDK 3.x et la Azure Monitor distribution OpenTelemetry dans la même application.

Vue d’ensemble d’Application Insights .NET SDK 3.x

Application Insights .NET SDK 3.x fournit ces packages NuGet :

  • Microsoft.ApplicationInsights pour TelemetryClient et TelemetryConfiguration
  • Microsoft.ApplicationInsights.AspNetCore pour les applications Web ASP.NET (Active Server Pages .NET) Core
  • Microsoft.ApplicationInsights.WorkerService pour les applications de service de travail et de console
  • Microsoft.ApplicationInsights.Web pour les applications ASP.NET sur .NET Framework
  • Microsoft.ApplicationInsights.NLogTarget pour l’intégration de NLog (bêta)

Pour obtenir des exemples de code et des instructions détaillées sur la migration, consultez la documentation du référentiel :

Mettre à niveau vers la version 3.x

Étape 1 : Supprimer les références aux packages incompatibles

Supprimez ces packages, car ils ne sont pas compatibles avec le Kit de développement logiciel (SDK) 3.x :

  • Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel
  • Microsoft.ApplicationInsights.DependencyCollector
  • Microsoft.ApplicationInsights.EventCounterCollector
  • Microsoft.ApplicationInsights.PerfCounterCollector
  • Microsoft.ApplicationInsights.WindowsServer
  • Microsoft.Extensions.Logging.ApplicationInsights
  • Microsoft.ApplicationInsights.Log4NetAppender
  • Microsoft.ApplicationInsights.TraceListener
  • Microsoft.ApplicationInsights.DiagnosticSourceListener
  • Microsoft.ApplicationInsights.EtwCollector
  • Microsoft.ApplicationInsights.EventSourceListener

Sdk 3.x ne publie pas les versions 3.x de ces packages. Utilisez les packages 3.x pris en charge répertoriés dans Application Insights .NET SDK 3.x vue d’ensemble à la place. Les sections suivantes décrivent les remplacements prévus pour ces packages. Dans certains cas, la fonctionnalité est intégrée aux packages 3.x pris en charge ou remplacée par les API OpenTelemetry.

Note

Cette liste inclut uniquement les packages Microsoft. Si vous utilisez des packages tiers qui dépendent de Microsoft.ApplicationInsights la version 2.x (par exemple Serilog.Sinks.ApplicationInsights), vérifiez que ces packages prennent en charge SDK 3.x avant la mise à niveau. Suivez les conseils des mainteneurs de paquets.

Étape 2 : Mettre à niveau les versions du package vers 3.x

Mettez à niveau les packages Application Insights restants pris en charge vers la dernière version 3.x.

Important

Ne mélangez pas les packages Application Insights 2.x et 3.x dans la même application. Effectuez la mise à niveau de toutes les références de modules Application Insights ensemble.

Étape 3 : Mettre à jour le code et la configuration afin de prendre en compte les changements cassants

Consultez à la fois la référence des changements cassants et le guide détaillé de migration. La plupart des applications doivent mettre à jour le code ou la configuration dans un ou plusieurs des domaines suivants :

API, paramètre ou modèle 2.x Conseils 3.x
TrackPageView Supprimez les TrackPageView appels. Le suivi de la vue de page est supprimé dans le Kit de développement logiciel (SDK) .NET 3.x.
TrackEvent, TrackException, et TrackAvailability surcharges qui incluent IDictionary<string, double> metrics Supprimez le paramètre de métriques personnalisées. Suivez les métriques séparément à l’aide de TrackMetric().
GetMetric surcharges qui utilisent MetricConfiguration ou MetricAggregationScope Utilisez les surcharges simplifiées GetMetric overloads. La configuration et l’agrégation des métriques sont gérées en interne dans le Kit de développement logiciel (SDK) 3.x.
InstrumentationKey configuration ou TelemetryClient.InstrumentationKey Utilisez TelemetryConfiguration.ConnectionString et fournissez une chaîne de connexion au lieu d’une clé d’instrumentation. Le SDK 3.x nécessite une chaîne de connexion et peut échouer au démarrage si elle n’est pas configurée. Pour les scénarios de test, vous pouvez utiliser une chaîne de connexion factice telle que InstrumentationKey=00000000-0000-0000-0000-000000000000.
TelemetryClient() ou TelemetryConfiguration.Active Créez une configuration explicitement en utilisant TelemetryConfiguration.CreateDefault(), puis passez-la à new TelemetryClient(config).
TelemetryModule, TelemetryInitializer,ouTelemetryProcessorpersonnalisation Les initialiseurs ou processeurs personnalisés doivent être migrés vers des processeurs basés sur OpenTelemetry. Les références aux processeurs 2.x intégrés, aux initialiseurs et aux modules doivent être supprimées. Pour plus d’informations, consultez les instructions de migration.
ITelemetryChannel ou TelemetryConfiguration.TelemetryChannel L’abstraction de canal classique est supprimée, car 3.x intègre en interne l’exportateur Azure Monitor. Pour les tests, utilisez une validation compatible avec OpenTelemetry, telle qu'un exportateur en mémoire.
EnableAdaptiveSampling Remplacez l’échantillonnage adaptatif par TracesPerSecond ou SamplingRatio.
Microsoft.ApplicationInsights.Web ciblant .NET Framework 4.5.2 Cible .NET Framework 4.6.2 ou version ultérieure.
Conventions de nommage des noms de métriques et des espaces de noms Pour suivre la syntaxe de nommage des instruments OpenTelemetry, mettez à jour les valeurs name, metricId, et metricNamespace utilisées avec TrackMetric(), GetMetric(), et MetricIdentifier. Les noms de métriques et les espaces de noms doivent commencer par une lettre et ne peuvent contenir que des lettres, des chiffres, _, .ou -/. Les espaces ne sont pas autorisés.

Remplacer les points d’extensibilité supprimés

Application Insights .NET SDK 2.x a fourni des types d’extensibilité spécifiques à Application Insights, tels que les modules de télémétrie, les initialiseurs, les processeurs et les canaux. Application Insights .NET SDK 3.x utilise plutôt l’extensibilité OpenTelemetry.

Pour obtenir des instructions détaillées sur le remplacement de points d’extensibilité 2.x, y compris les cas de périphérie, consultez les instructions de migration.

Conseil / Astuce

Les valeurs basées sur des ressources telles que les métadonnées de rôle peuvent transiter par des mappages de ressources OpenTelemetry au lieu d’apparaître sur chaque élément de télémétrie. Si vous avez besoin d’une paire clé-valeur sur chaque élément de télémétrie, utilisez GlobalProperties ou un processeur personnalisé.

Configurer l’échantillonnage

Application Insights .NET SDK 3.x prend en charge deux modes d’échantillonnage pour les traces (demandes et dépendances) :

  • Définissez SamplingRatio (0,0 à 1,0) pour l’échantillonnage basé sur des pourcentages.
  • Défini TracesPerSecond pour l’échantillonnage limité à la fréquence (valeur par défaut : cinq traces par seconde).

Sdk 3.x applique les mêmes paramètres d’échantillonnage aux demandes et aux dépendances. Sdk 3.x ne prend pas en charge les paramètres d’échantillonnage distincts pour les demandes et les dépendances.

Lorsqu’une requête ou une dépendance fait l’objet d’un échantillonnage, le SDK 3.x applique par défaut la décision d’échantillonnage de la trace parente aux journaux d’activité associés. Pour désactiver ce comportement, définissez EnableTraceBasedLogsSampler sur false.

Vous pouvez définir SamplingRatio, TracesPerSecondet EnableTraceBasedLogsSampler dans TelemetryConfiguration, appsettings.jsonou applicationinsights.config.

Dépannage d’une mise à niveau

Procédez comme suit pour valider les données de télémétrie lors d’une mise à niveau vers sdk 3.x :

  • Vérifiez qu’une chaîne de connexion complète est configurée avant le démarrage. Si vous validez la télémétrie dans les tests sans ressource réelle, utilisez une chaîne de connexion factice.
  • Collectez les journaux de diagnostic automatique Application Insights pour identifier les erreurs de configuration et les échecs d’exportation.
  • Ajoutez l’exportateur de console OpenTelemetry afin de vérifier que les traces, les mesures et les journaux d’activité s’affichent conformément aux attentes avant de vous appuyer sur l’ingestion Azure Monitor.
  • Si vous avez précédemment testé la télémétrie unitaire en simulant ITelemetryChannel, basculez vers une validation compatible avec OpenTelemetry, comme les exportateurs de test en mémoire ou d’autres exportateurs de test dans des environnements non-production.
  • Vérifiez que les paramètres d’échantillonnage se comportent comme prévu en validant les décisions de trace parent-enfant.
  • Validez les attributs de ressource tels que le nom de service, le nom du rôle, l’instance de rôle et l’environnement pour garantir une attribution correcte dans Application Insights.
  • Si vous avez migré un enrichissement personnalisé, vérifiez que vos propriétés apparaissent là où vous vous attendez. Les mappages basés sur des ressources peuvent différer du comportement 2.x.

Pour obtenir des conseils détaillés sur la résolution des problèmes et des exemples, utilisez les ressources suivantes :

Terminologie OpenTelemetry

Pour plus d’informations sur la terminologie, consultez le glossaire dans les spécifications d’OpenTelemetry.

Le tableau suivant met en évidence les termes hérités utilisés dans Application Insights et leurs remplacements OpenTelemetry.

Application Insights OpenTelemetry
Autocollecteurs Bibliothèques d’instrumentation
Canal Exportateur
Sans code/basé sur un agent Instrumentation automatique
Traces Journaux
Demandes Étendues de serveur
Dépendances Autres types d’étendues (client, interne, etc.)
ID d’opération ID de trace
ID ou ID parent de l’opération ID d’étendue