Résoudre des problèmes Application Insights Profiler pour .NET
Cet article vous présente des étapes de résolution des problèmes et des informations vous permettant d’utiliser Application Insights Profiler pour .NET.
Utilisez-vous le point de terminaison .NET Profiler approprié ?
Seules les régions Azure Government et Microsoft Azure géré par 21Vianet nécessitent actuellement des modifications de leurs points de terminaison.
Paramètre d’application | Cloud US Government | China Cloud |
---|---|---|
ApplicationInsightsProfilerEndpoint | https://profiler.monitor.azure.us |
https://profiler.monitor.azure.cn |
ApplicationInsightsEndpoint | https://dc.applicationinsights.us |
https://dc.applicationinsights.azure.cn |
Votre application s’exécute-t-elle sur la bonne version ?
Profiler est pris en charge sur le composant .NET Framework ultérieur à la version 4.6.2.
Si votre application web est une application ASP.NET Core, elle doit exécuter le runtime ASP.NET Core le plus récent.
Utilisez-vous le bon plan de service Azure ?
Pour l’instant, Profiler pour .NET n’est pas pris en charge sur les plans App Service gratuits ou partagés. Effectuer une mise à niveau vers l’un des plans de base de Profiler pour commencer à travailler.
Notes
Le plan de consommation Azure Functions n’est pas pris en charge. Consultez Profiler des applications Azure Functions en production avec Application Insights.
Recherchez-vous des données .NET Profiler dans l’intervalle de temps approprié ?
Si les données que vous essayez d’afficher datent de plus de deux semaines, essayez de limiter votre filtre de temps et réessayez. Les traces sont supprimées après sept jours.
Connaissez-vous le taux d’échantillonnage et la charge de .NET Profiler ?
.NET Profiler s’exécute aléatoirement pendant deux minutes par heure sur chaque machine virtuelle qui héberge des applications sur lesquelles Profiler est activé.
Remarque
Quand Application Insights Profiler pour .NET est en cours d’exécution et collecte des traces, il ajoute généralement une surcharge de 5 à 15 % en termes de processeur et de mémoire sur votre serveur.
Il n’y a aucun coût supplémentaire pour le stockage des données capturées par .NET Profiler. Les données sont automatiquement supprimées après 15 jours.
Pouvez-vous accéder à la passerelle ?
Vérifiez qu’un pare-feu ou des proxys ne bloquent pas votre accès à cette page web.
Constatez-vous des délais d’expiration ou devez-vous vérifier si .NET Profiler est en cours d’exécution ?
Les données de profilage sont chargées uniquement quand elles peuvent être jointes à une demande envoyée pendant l’exécution de Profiler. .NET Profiler collecte les données pendant deux minutes toutes les heures. Vous pouvez également déclencher Profiler en démarrant une session de profilage.
Profiler écrit les messages de trace et les événements personnalisés dans votre ressource Application Insights. Vous pouvez utiliser ces événements pour voir comment Profiler s’exécute.
Recherchez des messages de trace et des événements personnalisés envoyés par .NET Profiler à votre ressource Application Insights.
Dans votre ressource Application Insights, sélectionnez Rechercher dans le menu supérieur.
Utilisez la chaîne de recherche suivante pour trouver les données pertinentes :
stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
Les résultats de recherche ci-dessus incluent deux exemples de recherches à partir de deux ressources IA :
Si l’application ne reçoit pas de requêtes pendant l’exécution de Profiler, le message explique que le chargement a été annulé en raison de l’absence d’activité.
Profiler a démarré et a envoyé des événements personnalisés quand il a détecté des requêtes envoyées pendant son exécution. Si l’événement personnalisé
ServiceProfilerSample
s’affiche, cela signifie qu’un profil a été capturé et qu’il est disponible dans le volet Performances d’Application Insights.
Si aucun enregistrement n’est affiché, Profiler ne fonctionne pas ou prend trop de temps à répondre. Vérifiez que Profiler est activé sur votre service Azure.
.NET Profiler est activé, mais aucune trace n’est capturée
Même quand le Profileur est activé, il peut ne pas capturer ou charger des traces, en particulier dans ces situations :
Pas de requêtes entrantes vers votre application :
Vous pouvez appeler manuellement votre application ou créer un test de disponibilité ou un test de charge.Pas de télémétrie entrante reconnue par Application Insights :
- S’il existe du trafic à destination de votre application : vérifiez que des requêtes entrantes apparaissent dans les Métriques en temps réel d’Application Insights.
- Si les graphiques pour
Incoming Requests
sont vides (aucune donnée ou indiquant zéro) : consultez Résoudre les problèmes d’Application Insights. - Si vous hébergez votre application .NET sur Azure App Service : essayez les étapes de résolution des problèmes de .NET App Service.
Le paramètre du profileur pour l’échantillonnage est désactivé :
Si aucune trace du profileur n’est encore disponible, vérifiez le paramètre d’échantillonnage du profileur.- Ouvrez le panneau Application Insights>Performances.
- Cliquez sur Profileur.
- Cliquez sur le bouton Déclencheurs.
- Dans les paramètres du déclencheur, vérifiez que le bouton bascule Échantillonnage est activé.
Toujours aucune trace chargée ?
Créez une demande de support ou demandez le support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.
Double comptage dans des threads parallèles
Lorsque deux threads parallèles ou plus sont associés à une requête, la métrique de durée totale dans la visionneuse de pile peut être supérieure à la durée de la requête. Dans ce cas, le temps total de threads est supérieur à la durée calendaire.
Par exemple, un thread peut être en attente le temps que l’autre se termine. La visionneuse tente de détecter cette situation et omet l’attente sans intérêt. Ce faisant, elle penche du côté de l’affichage excessif d’informations au lieu d’omettre ce qui peut correspondre à des informations vitales.
Quand vous voyez des threads parallèles dans vos traces, identifiez les threads en attente pour identifier le chemin chaud de la demande. Généralement, le thread qui passe rapidement à un état d’attente attend les autres threads. Concentrez-vous sur ces autres threads et ignorez le temps dans les threads en attente.
Résoudre les problèmes de .NET Profiler sur votre service Azure spécifique
Les sections suivantes vous guident tout au long des étapes de résolution des problèmes d’utilisation de Profiler sur Azure App Service ou Azure Cloud Services.
Azure App Service
Pour que .NET Profiler fonctionne correctement, assurez-vous que :
Application Insights est activé sur votre application web, avec les paramètres appropriés.
La tâche web ApplicationInsightsProfiler3 est en cours d’exécution. Pour vérifier le tâche web :
Accédez à Kudu. Dans le portail Azure :
- Dans votre instance App Service, sélectionnez Outils avancés sur le menu de gauche.
- Sélectionnez Go.
Dans le menu supérieur, sélectionnez Outils>Tableau de bord WebJobs. Le volet WebJobs s’ouvre.
Si ApplicationInsightsProfiler3 n’apparaît pas, redémarrez votre application App Service.
Pour voir les informations de WebJob, notamment le journal, sélectionnez le lien ApplicationInsightsProfiler3. Le volet Détails de la tâche web continue s’ouvre.
Si .NET Profiler ne fonctionne toujours pas pour vous, téléchargez le journal et envoyer un ticket de support Azure.
Vérifier la page d’état de l’extension de site Services de diagnostic
Si vous avez activé .NET Profiler via le volet Application Insights du portail, il est géré par l’extension de site Services de diagnostic. Vous pouvez consulter la page d’état de cette extension en accédant à https://{site-name}.scm.azurewebsites.net/DiagnosticServices
.
Notes
Le domaine du lien de la page d’état varie en fonction du cloud. Ce domaine est le même que le site de gestion Kudu pour App Service.
Cette page d’état indique l’état d’installation des agents .NET Profiler et Débogueur de capture instantanée. En cas d’erreur inattendue, elle s’affiche, ainsi que les étapes à suivre pour la corriger.
Vous pouvez utiliser le site de gestion Kudu pour App Service pour obtenir l’URL de base de cette page d’état :
- Ouvrez votre application App Service dans le portail Azure.
- Sélectionnez Outils avancés.
- Sélectionnez Go.
- Sur le site de gestion Kudu :
- Ajoutez
/DiagnosticServices
à l’URL. - Sélectionnez Entrée.
- Ajoutez
Il se termine comme https://<kudu-url>/DiagnosticServices
.
Une page d’état s’affiche semblable à l’exemple suivant.
Remarque
L’installation sans code d’Application Insights Profiler pour .NET suit la politique de support .NET Core. Si vous souhaitez obtenir plus d’informations sur les runtimes pris en charge, consultez Politique de support .NET Core.
Installation manuelle
Lorsque vous configurez .NET Profiler, des mises à jour sont appliquées aux paramètres de l’application web. Si nécessaire, vous pouvez appliquer les mises à jour manuellement.
Trop de sessions de profilage actives
Dans Azure App Service, il existe une limite de seulement une session de profilage à la fois. Cette limite s’applique au niveau de la machine virtuelle pour l’ensemble des applications et des emplacements de déploiement s’exécutant dans un plan App Service. Cette limite s’applique également aux sessions de profilage démarrées via Diagnostiquer et résoudre les problèmes, Kudu et Application Insights Profiler pour .NET.
Si .NET Profiler tente de démarrer une session alors qu’une autre est déjà en cours d’exécution, une erreur est consignée dans le journal des applications et également dans le journal WebJob continu pour ApplicationInsightsProfiler3
.
Il se peut que l’un des messages suivants figure dans les journaux :
Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E
Le code d’erreur 0xE111005E
indique qu’une session de profilage n’a pas pu démarrer, car une autre session était déjà en cours d’exécution.
Pour éviter cette erreur, déplacez certaines applications web vers un autre plan App Service ou désactivez Profiler sur certaines des applications. Si vous utilisez des emplacements de déploiement, veillez à arrêter les emplacements inutilisés.
Erreur de déploiement : Répertoire non vide « D:\home\site\wwwroot\App_Data\jobs »
Si vous redéployez votre application web sur une ressource Web Apps avec .NET Profiler activé, vous pouvez voir le message suivant :
« Directory Not Empty 'D:\home\site\wwwroot\App_Data\jobs' »
Cette erreur se produit si vous exécutez Web Deploy à partir de scripts ou d’Azure Pipelines. Résolvez-la en ajoutant les paramètres de déploiement suivants à la tâche Web Deploy :
-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'
Ces paramètres suppriment le dossier utilisé par Application Insights Profiler pour .NET et débloquent le processus de redéploiement. Ils n’affectent pas l’instance de Profiler qui est en cours d’exécution.
L’outil Application Insights Profiler pour .NET est-il en cours d’exécution ?
Profiler s’exécute comme un WebJob continu dans l’application web. Vous pouvez ouvrir la ressource de l’application web dans le portail Azure. Dans le volet WebJobs, vérifiez l’état de ApplicationInsightsProfiler. S’il n’est pas en cours d’exécution, ouvrez les Journaux d’activité pour en savoir plus.
Machines virtuelles et Azure Cloud Services
Pour voir si .NET Profiler est correctement configuré par Diagnostics Azure :
Vérifiez que le contenu de la configuration déployée de Diagnostics Azure correspond à ce que vous attendez.
Vérifiez que Diagnostics Azure passe l’iKey appropriée sur la ligne de commande de Profiler.
Consultez le fichier journal de Profiler pour voir si .NET Profiler s’est exécuté et a retourné une erreur.
Pour vérifier les paramètres qui ont été utilisés pour configurer Diagnostics Azure :
Se connecter à la machine virtuelle (VM).
Ouvrir le fichier journal à cet emplacement. La version du plug-in peut être plus récente sur votre machine.
Pour les machines virtuelles :
c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
Pour Azure Cloud Services :
c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
Dans ce fichier, rechercher la chaîne
WadCfg
pour voir les paramètres qui ont été passés à la machine virtuelle pour configurer Diagnostics Azure.Vérifier si l’iKey utilisée par le récepteur de .NET Profiler est correcte.
Vérifiez la ligne de commande qui démarre Profiler. Les arguments de ligne de commande se trouvent dans le fichier suivant (le lecteur peut être
c:
oud:
et il est possible que le répertoire soit masqué) :Pour les machines virtuelles :
C:\ProgramData\ApplicationInsightsProfiler\config.json
Pour Azure Cloud Services :
D:\ProgramData\ApplicationInsightsProfiler\config.json
Vérifiez que l’ikey sur la ligne de commande de Profiler est correcte.
En tirant parti du chemin d’accès trouvé dans le fichier config.json précédent, consultez le fichier journal de Profiler, appelé
BootstrapN.log
. Il affiche :- Les informations de débogage qui indiquent les paramètres utilisés par Profiler.
- Des messages d’état et d’erreur de Profiler.
Vous pouvez trouver le fichier :
Pour les machines virtuelles :
C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
Pour Azure Cloud Services :
C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
Si .NET Profiler s’exécute pendant que votre application reçoit des requêtes, le message suivant s’affiche : « Activité de l’iKey détectée ».
Quand la trace est en cours de chargement, le message suivant s’affiche : « Démarrage du chargement de la trace. »
Modifier les règles de pare-feu ou de proxy réseau
Si votre application se connecte à Internet via un proxy ou un pare-feu, il est possible que vous deviez mettre à jour les règles pour communiquer avec .NET Profiler.
Les adresses IP utilisées par Application Insights Profiler pour .NET sont incluses dans la balise de service Azure Monitor. Si vous souhaitez obtenir plus d’informations, consultez la Documentation relative aux étiquettes de service.
Support
Si vous avez toujours besoin d’aide, envoyez un ticket de support dans le Portail Azure. Indiquez également l’ID de corrélation du message d’erreur.