Application Insights pour les services cloud Azure
Application Insights peut superviser les applications de service cloud Azure pour vérifier la disponibilité, les performances, les échecs et l’utilisation en combinant les données des SDK Application Insights avec les données d’Azure Diagnostics de vos services cloud. Avec les retours que vous obtenez sur les performances et l’efficacité de votre application dans la nature, vous pouvez prendre des décisions avisées sur la direction de la conception de chaque cycle de développement.
Remarque
Le support de l’ingestion de clé d’instrumentation prendra fin le 31 mars 2025. L’ingestion de clé d’instrumentation continuera de fonctionner, mais nous ne fournirons plus de mises à jour ni de support pour la fonctionnalité. Passez aux chaînes de connexion pour tirer parti des nouvelles fonctionnalités.
Prérequis
Avant de commencer, vous avez besoin des éléments suivants :
Un abonnement Azure.
Connexion avec un compte Microsoft pour Windows, Xbox Live ou d’autres services cloud de Microsoft.
Microsoft Azure Tools 2.9 ou ultérieur.
Developer Analytics Tools 7.10 ou ultérieur.
Prise en main rapide
Le moyen le plus simple et le plus rapide pour surveiller votre service cloud avec Application Insights consiste à choisir cette option quand vous publiez votre service dans Azure.
Cette option instrumente votre application au moment de l’exécution, ce qui vous donne toutes les données de télémétrie dont vous avez besoin pour superviser les demandes, les exceptions et les dépendances dans votre rôle web. Elle supervise également les compteurs de performances de vos rôles de travail. Les traces de diagnostics générées par votre application sont également envoyées à Application Insights.
Si cette option vous suffit, vous avez terminé.
Les étapes suivantes sont la consultation des métriques de votre application et l’interrogation de vos données avec Analytics.
Pour superviser les performances dans le navigateur, vous pouvez configurer des tests de disponibilité et ajouter du code à vos pages web.
Les sections suivantes décrivent les options supplémentaires suivantes :
- Envoyer des données de différents composants et différentes configurations de build à des ressources distinctes.
- Ajouter une télémétrie personnalisée à partir de votre application.
Exemple d’application instrumentée avec Application Insights
Dans cet exemple d’application, Application Insights est ajouté à un service cloud avec deux rôles de travail hébergés dans Azure.
Dans la section suivante, vous découvrez comment adapter votre propre projet de service cloud de la même façon.
Planifier des ressources et des groupes de ressources
Les données de télémétrie de votre application sont stockées, analysées et affichées dans une ressource Azure de type Application Insights.
Chaque ressource appartient à un groupe de ressources. Les groupes de ressources servent à gérer les coûts, à accorder l’accès aux membres d’équipe et à déployer des mises à jour dans une seule transaction coordonnée. Par exemple, vous pouvez écrire un script pour déployer un service cloud Azure et ses ressources de supervision Application Insights en une seule opération.
Ressources pour les composants
Nous vous recommandons d’ajouter une propriété de dimension à chaque élément de télémétrie identifiant son rôle source. Dans cette approche, les graphiques de métriques comme les exceptions affichent normalement une agrégation des décomptes des différents rôles, mais vous pouvez segmenter le graphique en fonction de l’identificateur de rôle si nécessaire. Vous pouvez également filtrer les recherches sur la même dimension. Cette solution facilite légèrement la consultation simultanée de tous les éléments, mais elle peut aussi entraîner une certaine confusion entre les rôles.
La télémétrie de navigateur est généralement comprise dans la même ressource que son rôle web côté serveur.
Placez les ressources Application Insights pour les différents composants dans un groupe de ressources. De cette façon, vous pouvez facilement les gérer ensemble.
Séparer développement, test et production
Si vous développez des événements personnalisés pour votre prochaine fonctionnalité alors que la version précédente est active, vous devez envoyer la télémétrie de développement à une ressource Application Insights distincte. Sinon, vous retrouvez difficilement vos données de télémétrie de test dans l’ensemble du trafic provenant du site actif.
Pour éviter cette situation, créez des ressources distinctes pour chaque configuration de build ou « tampon » (développement, test, production, etc.) de votre système. Placez les ressources pour chaque configuration de build dans un groupe de ressources distinct.
Pour envoyer les données de télémétrie aux ressources appropriées, vous pouvez configurer le SDK Application Insights pour qu’il récupère une clé d’instrumentation différente en fonction de la configuration de build.
Découvrez comment définir dynamiquement la clé d’instrumentation pour différentes étapes.
Création d’une ressource Application Insights pour chaque rôle
Si vous avez décidé de créer une ressource distincte pour chaque rôle (et éventuellement un ensemble distinct pour chaque configuration de build), créez-les plutôt dans le portail Application Insights. Si vous créez beaucoup de ressources, vous pouvez automatiser le processus.
Dans le portail Azure, sélectionnez Nouveau>Services de développement>Application Insights.
Dans la liste déroulante Type d’application, sélectionnez Application web ASP.NET.
Chaque ressource est identifiée par une clé d’instrumentation. Vous pouvez avoir besoin de cette clé plus tard pour configurer ou vérifier manuellement la configuration du SDK.
Configurer Diagnostics Azure pour chaque rôle
Définissez cette option pour surveiller votre application avec Application Insights. Pour les rôles web, cette option permet de superviser les performances, de recevoir des alertes, des diagnostics et d’analyser l’utilisation. Pour d’autres rôles, vous pouvez rechercher et superviser des diagnostics Azure comme le redémarrage, les compteurs de performances et les appels à System.Diagnostics.Trace.
Dans l’Explorateur de solutions Visual Studio, sous <votre_service_cloud>>Rôles, ouvrez les propriétés de chaque rôle.
Dans Configuration, cochez la case Envoyer des données de diagnostic à Application Insights et sélectionnez la ressource Application Insights que vous avez créée plus tôt.
Si vous avez décidé d’utiliser une ressource Application Insights distincte pour chaque configuration de build, sélectionnez d’abord la configuration.
L’objectif est d’insérer vos clés d’instrumentation Application Insights dans les fichiers nommés ServiceConfiguration.*.cscfg. Voici l’exemple de code.
Si vous voulez changer le niveau des informations de diagnostics envoyées à Application Insights, modifiez directement les fichiers .cscfg.
Installation du Kit de développement logiciel (SDK) dans chaque projet
Avec cette option, vous pouvez ajouter une télémétrie métier personnalisée à n’importe quel rôle. L’option permet d’analyser en détail l’utilisation et les performances de votre application.
Dans Visual Studio, configurez le Kit de développement logiciel (SDK) Application Insights pour chaque projet d’application cloud.
Pour configurer des rôles web, cliquez avec le bouton droit sur le projet et sélectionnez Configurer Application Insights ou Ajouter > Télémétrie Application Insights.
Pour configurer des rôles de travail :
a. Cliquez avec le bouton droit sur le projet et sélectionnez Gérer les packages NuGet.
b. Ajoutez Application Insights pour les serveurs Windows.
Pour configurer le SDK afin d’envoyer des données à la ressource Application Insights :
a. Dans une fonction de démarrage appropriée, définissez la clé d’instrumentation à partir du paramètre de configuration dans le fichier .cscfg :
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault(); configuration.InstrumentationKey = RoleEnvironment.GetConfigurationSettingValue("APPINSIGHTS_INSTRUMENTATIONKEY"); var telemetryClient = new TelemetryClient(configuration);
b. Répétez l’« étape a » pour chaque rôle de votre application. Consultez les exemples :
Définissez le fichier ApplicationInsights.config pour qu’il soit toujours copié dans le répertoire de sortie.
Un message dans le fichier .config vous demande de placer ici la clé d’instrumentation. Toutefois, pour les applications cloud, définissez-la à partir du fichier .cscfg. De cette façon, le rôle est identifié correctement dans le portail.
Configurer Status Monitor pour collecter des requêtes SQL complètes (facultatif)
Cette étape est uniquement nécessaire si vous voulez capturer des requêtes SQL complètes sur .NET Framework.
Dans le fichier
\*.csdef
, ajoutez une tâche de démarrage pour chaque rôle similaire à<Startup> <Task commandLine="AppInsightsAgent\InstallAgent.bat" executionContext="elevated" taskType="simple"> <Environment> <Variable name="ApplicationInsightsAgent.DownloadLink" value="http://go.microsoft.com/fwlink/?LinkID=522371" /> <Variable name="RoleEnvironment.IsEmulated"> <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" /> </Variable> </Environment> </Task> </Startup>
Téléchargez InstallAgent.bat et InstallAgent.ps1, et placez-les dans le dossier
AppInsightsAgent
de chaque projet de rôle. Veillez à les copier dans le répertoire de sortie par le biais des propriétés de fichier Visual Studio ou de scripts de build.Sur tous les workers, ajoutez les variables d’environnement :
<Environment> <Variable name="COR_ENABLE_PROFILING" value="1" /> <Variable name="COR_PROFILER" value="{324F817A-7420-4E6D-B3C1-143FBED6D855}" /> <Variable name="MicrosoftInstrumentationEngine_Host" value="{CA487940-57D2-10BF-11B2-A3AD5A13CBC0}" /> </Environment>
Exécution et publication de l’application
Exécutez votre application et connectez-vous à Azure.
Ouvrez la ressource Application Insights que vous avez créée.
Les points de données individuels sont affichés dans Recherche et les données agrégées sont affichées dans Metrics Explorer.
Ajoutez plus de données de télémétrie (voir les sections suivantes) et publiez votre application pour obtenir en direct des diagnostics et un retour sur l’utilisation.
S’il n’y a pas de données, effectuez ce qui suit :
- Pour voir les événements individuels, ouvrez la vignette Rechercher.
- Dans l’application, ouvrez différentes pages pour générer des données de télémétrie.
- Attendez quelques secondes, puis cliquez sur Actualiser.
Voir les événements Diagnostics Azure
Les informations d’Azure Diagnostics sont disponibles dans Application Insights aux emplacements suivants :
- Les compteurs de performances s’affichent comme mesures personnalisées.
- Les journaux des événements Windows s’affichent comme traces et événements personnalisés.
- Les journaux des applications, les journaux d’activité ETW et tous les journaux d’activité d’infrastructure des diagnostics s’affichent comme traces.
Pour voir les compteurs de performances et le nombre d’événements, ouvrez Metrics Explorer et ajoutez le graphique suivant :
Pour rechercher dans les différents journaux de trace envoyés par Azure Diagnostics, utilisez Recherche ou une requête Analytics. Par exemple, supposons qu’une exception non prise en charge a provoqué le blocage et le recyclage d’un rôle. Cette information s’affiche dans le canal Application du Journal des événements Windows. Vous pouvez utiliser Recherche pour voir l’erreur du Journal des événements Windows et obtenir la trace complète de l’exception. De cette façon, vous pouvez identifier la cause racine du problème.
Données de télémétrie supplémentaires
Les sections suivantes décrivent comment obtenir davantage de données de télémétrie à partir de différents aspects de votre application.
Suivre les demandes des rôles de travail
Dans les rôles Web, le module des requêtes collecte automatiquement les données relatives aux requêtes HTTP. Pour obtenir des exemples de remplacement du comportement de collecte par défaut, consultez l’exemple MVCWebRole.
Vous pouvez capturer les performances des appels aux rôles de travail en effectuant le suivi de la même façon que les requêtes HTTP. Dans Application Insights, le type de demande de télémétrie mesure une unité de travail côté serveur nommée, pouvant être chronométrée et réussir ou échouer indépendamment. Même si les requêtes HTTP sont automatiquement capturées par le SDK, vous pouvez insérer votre propre code pour suivre les requêtes envoyées aux rôles de travail.
Consultez les deux exemples de rôles de travail instrumentés pour signaler des requêtes :
Exceptions
Pour plus d’informations sur la collecte des exceptions non prises en charge à partir de différents types d’application web, consultez Supervision des exceptions dans Application Insights.
L’exemple du rôle Web dispose de contrôleurs MVC5 et API Web 2. Les exceptions non gérées à partir de deux sont capturées avec les gestionnaires suivants :
- AiHandleErrorAttribute configuré pour les contrôleurs MVC5 comme indiqué dans cet exemple
- AiWebApiExceptionLogger configuré pour les contrôleurs de l’API Web 2 comme indiqué dans cet exemple
Pour les rôles de travail, il existe deux façons de suivre les exceptions :
- Utilisez TrackException(ex).
- Si vous avez ajouté le package NuGet de l’écouteur de trace Application Insights, vous pouvez utiliser System.Diagnostics.Trace pour journaliser les exceptions comme indiqué dans cet exemple.
Compteurs de performance
Les compteurs suivants sont collectés par défaut :
- \Process(??APP_WIN32_PROC??)% Processor Time
- \Memory\Octets disponibles
- .NET CLR Exceptions(??APP_CLR_PROC??)# of Exceps Thrown / sec
- \Processus(??APP_WIN32_PROC??)\Octets privés
- \Processus(??APP_WIN32_PROC??)\Nombre d’octets de données E/S par s
- \Processor(_Total)% de temps processeur
Pour les rôles web, ces compteurs sont également collectés :
- \Applications ASP.NET(??APP_W3SVC_PROC??)\Demandes/s
- \Applications ASP.NET (??APP_W3SVC_PROC??)\Durée d’exécution de la demande
- \Applications ASP.NET (??APP_W3SVC_PROC??)\Demandes dans la file d’attente d’application
Vous pouvez spécifier des compteurs de performances personnalisés ou d’autres compteurs de performances Windows en modifiant ApplicationInsights.config comme indiqué dans cet exemple.
Télémétrie corrélée pour les rôles de travail
Pour un diagnostic complet, vous pouvez voir la cause de l’échec d’une demande ou d’une latence élevée. Avec les rôles web, le SDK configure automatiquement une corrélation entre les données de télémétries associées.
Pour avoir la même chose avec les rôles de travail, vous pouvez utiliser un initialiseur de télémétrie personnalisé pour définir un attribut de contexte Operation.Id commun à toutes les télémétries. De cette façon, vous voyez en un coup d’œil si le problème de latence ou l’échec est lié à une dépendance ou à votre code.
Voici comment faire :
- Définissez l’ID de corrélation dans un CallContext comme indiqué dans cet exemple. Dans ce cas, nous utilisons l’ID de demande comme ID de corrélation.
- Ajoutez une implémentation personnalisée de TelemetryInitializer pour définir l’Operation.Id sur le correlationId défini précédemment. Pour obtenir un exemple, consultez ItemCorrelationTelemetryInitializer.
- Ajoutez l'initialiseur de télémétrie personnalisée. Pour ce faire, utilisez le fichier ApplicationInsights.config ou du code comme indiqué dans cet exemple.
Télémétrie client
Pour obtenir des données de télémétrie basées sur un navigateur, comme le nombre de pages consultées, le temps de chargement des pages ou les exceptions de script, et pour écrire des données de télémétrie personnalisées dans vos scripts de page, consultez Ajouter le SDK JavaScript à vos pages web.
Tests de disponibilité
Pour vérifier que votre application est en ligne et réactive, Configurez des tests web.
Afficher tous les éléments ensemble
Pour une vue d’ensemble de votre système, vous pouvez rassembler les principaux graphiques de supervision sur un même tableau de bord. Vous pouvez par exemple épingler le décompte des demandes et des échecs de chaque rôle.
Si votre système utilise d’autres services Azure, comme Stream Analytics, ajoutez également leurs graphiques de supervision.
Si vous avez une application mobile cliente, utilisez App Center. Créez des requêtes dans Analytics pour afficher le nombre d’événements, et épinglez-les au tableau de bord.
Exemple
L'exemple analyse un service qui dispose d’un rôle Web et de deux rôles de travail.
Exception « méthode introuvable » pendant l’exécution dans les services cloud Azure
Avez-vous effectué une génération pour .NET LTS ? Les versions antérieures ne sont pas automatiquement prises en charge dans les rôles de services cloud. Installez .NET LTS sur chaque rôle avant d’exécuter votre application.