Résoudre les problèmes liés à l’activation du débogueur de capture instantanée Application Insights ou à l’affichage des captures instantanées

Si vous avez activé le débogueur d’instantané Application Insights pour votre application, mais que vous ne voyez pas d’instantanés pour les exceptions, vous pouvez utiliser ces instructions pour résoudre les problèmes.

Il peut y avoir de nombreuses raisons différentes pour lesquelles les instantanés ne sont pas générés. Vous pouvez commencer par exécuter le case activée d’intégrité instantané pour identifier certaines des causes courantes possibles.

Scénarios non pris en charge

Vous trouverez ci-dessous des scénarios où le collecteur d’instantanés n’est pas pris en charge :

Scénario Effets secondaires Recommandation
Lorsque vous utilisez le SDK Collecteur d’instantanés directement dans votre application (.csproj) et que vous avez activé l’option « Interopérabilité ». Le KIT de développement logiciel (SDK) Application Insights local (y compris la télémétrie du collecteur d’instantanés) sera perdu ; par conséquent, aucun instantané n’est disponible.
Votre application peut se bloquer au démarrage avec System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
Pour plus d’informations sur la fonctionnalité Application Insights « Interop », consultez supervision des applications pour Azure App Service et ASP.NET Core.
Si vous utilisez l’option avancée « Interopérabilité », utilisez l’injection de collecteur d’instantanés sans code (activée via l’expérience utilisateur Portail Azure).

Vérifiez que vous utilisez le point de terminaison du débogueur de capture instantanée approprié

Actuellement, les seules régions qui nécessitent des modifications de point de terminaison sont Azure Government et Azure Chine.

Pour App Service et les applications utilisant le Kit de développement logiciel (SDK) Application Insights, vous devez mettre à jour le chaîne de connexion à l’aide des remplacements pris en charge pour le débogueur d’instantané, comme défini ci-dessous :

Propriété de chaîne de connexion Cloud du gouvernement des États-Unis Cloud chine
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Pour plus d’informations sur les autres remplacements de connexion, consultez la documentation Application Insights.

Pour l’application de fonction, vous devez mettre à jour à l’aide host.json des remplacements pris en charge ci-dessous :

Propriété Cloud du gouvernement des États-Unis Cloud chine
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Voici un exemple de mise à jour avec le point de terminaison de l’agent host.json cloud us Government :

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      },
      "snapshotConfiguration": {
        "isEnabled": true,
        "agentEndpoint": "https://snapshot.monitor.azure.us"
      }
    }
  }
}

Utiliser le case activée d’intégrité instantané

Plusieurs problèmes courants entraînent l’affichage de l’instantané open debug. Par exemple, un collecteur d’instantanés obsolète est utilisé ; la limite de chargement quotidienne est atteinte ; ou peut-être que le instantané prend juste beaucoup de temps à charger. Utilisez le contrôle d’intégrité des instantanés pour résoudre les problèmes courants.

Il existe un lien dans le volet d’exception de la vue de suivi de bout en bout qui vous dirige vers le contrôle d’intégrité d’instantané.

Capture d’écran montrant comment entrer instantané case activée d’intégrité.

L’interface interactive de type conversation recherche les problèmes courants et vous guide pour les résoudre.

Capture d’écran montrant la fenêtre interactive Contrôle d’intégrité répertoriant les problèmes et les suggestions pour les résoudre.

Si cela ne résout pas le problème, reportez-vous aux étapes de dépannage manuelles suivantes.

Vérifier la clé d’instrumentation

Vérifiez que vous utilisez la clé d’instrumentation correcte dans votre application publiée. En règle générale, la clé d’instrumentation est lue à partir du fichier ApplicationInsights.config . Vérifiez que la valeur est identique à la clé d’instrumentation de la ressource Application Insights que vous voyez dans le portail.

Le 31 mars 2025, la prise en charge de l’ingestion des clés d’instrumentation prendra fin. L’ingestion des clés d’instrumentation continuera de fonctionner, mais nous ne fournirons plus de mises à jour ni de prise en charge de la fonctionnalité. Passez aux chaînes de connexion pour tirer parti des nouvelles fonctionnalités.

Vérifier les paramètres du client TLS/SSL (ASP.NET)

Si vous avez une application ASP.NET hébergée dans Azure App Service ou IIS sur une machine virtuelle, votre application risque de ne pas se connecter au service Débogueur de capture instantanée en raison d’un protocole de sécurité SSL manquant.

Le point de terminaison du débogueur de capture instantanée nécessite TLS version 1.2. L’ensemble des protocoles de sécurité SSL est l’une des bizarres activées par la httpRuntime targetFramework valeur dans la system.web section de web.config. Si est httpRuntime targetFramework 4.5.2 ou une version antérieure, TLS 1.2 n’est pas inclus par défaut.

Remarque

La httpRuntime targetFramework valeur est indépendante de l’infrastructure cible utilisée lors de la création de votre application.

Pour case activée le paramètre, ouvrez votre fichier web.config et recherchez la section system.web. Vérifiez que le targetFramework pour httpRuntime est défini sur 4.6 ou version ultérieure.

<system.web>
   ...
   <httpRuntime targetFramework="4.7.2" />
   ...
</system.web>

Remarque

La modification de la httpRuntime targetFramework valeur modifie les bizarres du runtime appliquées à votre application et peut entraîner d’autres changements de comportement subtils. Veillez à tester minutieusement votre application après avoir apporté cette modification. Pour obtenir la liste complète des modifications de compatibilité, consultez Re-ciblage des modifications.

Remarque

Si est targetFramework 4.7 ou version ultérieure, Windows détermine les protocoles disponibles. Dans Azure App Service, TLS 1.2 est disponible. Toutefois, si vous utilisez votre propre machine virtuelle, vous devrez peut-être activer TLS 1.2 dans le système d’exploitation.

Préversion de .NET Core

Si vous utilisez une préversion de .NET Core ou si votre application fait référence au Kit de développement logiciel (SDK) Application Insights, directement ou indirectement via un assembly dépendant, suivez les instructions pour Activer le débogueur d’instantané pour d’autres environnements.

Vérifier la page d’état de l’extension de site Des services de diagnostic

Si le débogueur de capture instantanée a été activé via le volet Application Insights du portail, il a été activé par l’extension de site Services de diagnostic.

Remarque

L’installation sans code du débogueur d’instantané Application Insights suit la stratégie de prise en charge de .NET Core. Pour plus d’informations sur les runtimes pris en charge, consultez Stratégie de prise en charge de .NET Core.

Vous pouvez case activée la page d’état de cette extension en accédant à l’URL suivante :https://{site-name}.scm.azurewebsites.net/DiagnosticServices

Remarque

Le domaine du lien Page d’état varie en fonction du cloud. Ce domaine sera le même que le site de gestion Kudu pour App Service.

Cette page d’état affiche l’état d’installation des agents profileur et collecteur d’instantanés. En cas d’erreur inattendue, elle s’affiche et montre comment la corriger.

Vous pouvez utiliser le site de gestion Kudu pour App Service obtenir l’URL de base de cette page d’état :

  1. Ouvrez votre application App Service dans le Portail Azure.
  2. Sélectionnez Outils avancés ou recherchez Kudu.
  3. Sélectionner Aller.
  4. Une fois que vous êtes sur le site de gestion Kudu, dans l’URL, ajoutez et /DiagnosticServicesappuyez sur Entrée. Elle se termine comme suit : https://<kudu-url>/DiagnosticServices.

Mettre à niveau vers la dernière version du package NuGet

En fonction de la façon dont le débogueur de capture instantanée a été activé, consultez les options suivantes :

  • Si le débogueur de capture instantanée a été activé via le volet Application Insights du portail, votre application doit déjà exécuter le dernier package NuGet.

  • Si le débogueur de capture instantanée a été activé en incluant le package NuGet Microsoft.ApplicationInsights.SnapshotCollector , utilisez le Gestionnaire de package NuGet de Visual Studio pour vous assurer que vous utilisez la dernière version de Microsoft.ApplicationInsights.SnapshotCollector.

Pour connaître les dernières mises à jour et correctifs de bogues, consultez les notes de publication.

Vérifier les journaux du chargeur

Après la création d’un instantané, un fichier minidump (.dmp) est créé sur le disque. Un processus de chargement distinct crée ce fichier minidump et le charge, ainsi que tous les PDB associés, dans le stockage du débogueur d’instantané Application Insights. Une fois le minidump chargé avec succès, il est supprimé du disque. Les fichiers journaux du processus de chargement sont conservés sur disque. Dans un environnement App Service, vous pouvez trouver ces journaux dans D:\Home\LogFiles. Utilisez le site de gestion Kudu pour App Service trouver ces fichiers journaux.

  1. Ouvrez votre application App Service dans le Portail Azure.
  2. Sélectionnez Outils avancés ou recherchez Kudu.
  3. Sélectionner Aller.
  4. Dans la liste déroulante Console de débogage , sélectionnez CMD.
  5. Sélectionnez LogFiles.

Vous devez voir au moins un fichier dont le nom commence Uploader_ par ou SnapshotUploader_ et une .log extension. Sélectionnez l’icône appropriée pour télécharger les fichiers journaux ou les ouvrir dans un navigateur. Le nom de fichier inclut un suffixe unique qui identifie le App Service instance. Si votre App Service instance est hébergé sur plusieurs ordinateurs, il existe des fichiers journaux distincts pour chaque ordinateur. Lorsque le chargeur détecte un nouveau fichier minidump, il est enregistré dans le fichier journal. Voici un exemple de instantané et de chargement réussis :

SnapshotUploader.exe Information: 0 : Received Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: 139e411a23934dc0b9ea08a626db16c5.dm_
    DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available 139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp, 214.42 MB (uncompressed)
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Upload successful. Compressed size 86.56 MB
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Extracting PDB info from D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp.
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Matched 2 PDB(s) with local files.
    DateTime=2018-03-09T01:42:59.6809606Z
SnapshotUploader.exe Information: 0 : Stamp does not want any of our matched PDBs.
    DateTime=2018-03-09T01:42:59.8059929Z
SnapshotUploader.exe Information: 0 : Deleted D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:59.8530649Z

Remarque

L’exemple ci-dessus provient de la version 1.2.0 du Microsoft.ApplicationInsights.SnapshotCollector package NuGet. Dans les versions antérieures, le processus de chargement est appelé MinidumpUploader.exe et le journal est moins détaillé.

Dans l’exemple précédent, la clé d’instrumentation est c12a605e73c44346a984e00000000000. Cette valeur doit correspondre à la clé d’instrumentation de votre application. Le minidump est associé à un instantané avec l’ID 139e411a23934dc0b9ea08a626db16c5. Vous pouvez utiliser cet ID ultérieurement pour localiser l’enregistrement d’exception associé dans Application Insights Analytics.

Le chargeur recherche les nouveaux PDB environ une fois toutes les 15 minutes. Voici un exemple :

SnapshotUploader.exe Information: 0 : PDB rescan requested.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Scanning D:\home\site\wwwroot for local PDBs.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Local PDB scan complete. Found 2 PDB(s).
    DateTime=2018-03-09T01:47:19.4614027Z
SnapshotUploader.exe Information: 0 : Deleted PDB scan marker : D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\6368.pdbscan
    DateTime=2018-03-09T01:47:19.4614027Z

Pour les applications qui ne sont pas hébergées dans App Service, les journaux du chargeur se trouvent dans le même dossier que les minidumps : %TEMP%\Dumps\<ikey> (où <ikey> est votre clé d’instrumentation).

Résoudre les problèmes Services cloud

Dans Services cloud, le dossier temporaire par défaut peut être trop petit pour contenir les fichiers minidump, ce qui entraîne la perte d’instantanés.

L’espace nécessaire dépend du jeu de travail total de votre application et du nombre d’instantanés simultanés.

L’ensemble de travail d’un rôle web ASP.NET 32 bits est généralement compris entre 200 Mo et 500 Mo. Autorisez au moins deux instantanés simultanés.

Par exemple, si votre application utilise 1 Go de jeu de travail total, vous devez vous assurer qu’il y a au moins 2 Go d’espace disque pour stocker les captures instantanées.

Suivez ces étapes pour configurer votre rôle de service cloud avec une ressource locale dédiée pour les instantanés.

  1. Ajoutez une nouvelle ressource locale à votre service cloud en modifiant le fichier de définition de service cloud (.csdef). L’exemple suivant définit une ressource appelée SnapshotStore avec une taille de 5 Go.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. Modifiez le code de démarrage de votre rôle pour ajouter une variable d’environnement qui pointe vers la SnapshotStore ressource locale. Pour les rôles de travail, le code doit être ajouté à la méthode de OnStart votre rôle :

    public override bool OnStart()
    {
        Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
        return base.OnStart();
    }
    

    Pour les rôles web (ASP.NET), le code doit être ajouté à la méthode de Application_Start votre application web :

    using Microsoft.WindowsAzure.ServiceRuntime;
    using System;
    
    namespace MyWebRoleApp
    {
        public class MyMvcApplication : System.Web.HttpApplication
        {
           protected void Application_Start()
           {
              Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
              // TODO: The rest of your application startup code
           }
        }
    }
    
  3. Mettez à jour le fichier ApplicationInsights.config de votre rôle pour remplacer l’emplacement du dossier temporaire utilisé par SnapshotCollector.

    <TelemetryProcessors>
     <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
       <!-- Use the SnapshotStore local resource for snapshots -->
       <TempFolder>%SNAPSHOTSTORE%</TempFolder>
       <!-- Other SnapshotCollector configuration options -->
     </Add>
    </TelemetryProcessors>
    

Remplacer le dossier Cliché instantané

Lorsque le collecteur d’instantanés démarre, il tente de trouver sur le disque un dossier qui convient à l’exécution du processus de chargement de captures instantanées. Le dossier choisi est appelé dossier cliché instantané.

Le collecteur d’instantanés vérifie quelques emplacements connus, en s’assurant qu’il dispose des autorisations nécessaires pour copier les fichiers binaires du chargeur d’instantanés. Les variables d’environnement suivantes sont utilisées :

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • TEMP

Si un dossier approprié est introuvable, le collecteur d’instantanés signale une erreur indiquant « Impossible de trouver un dossier de cliché instantané approprié ».

Si la copie échoue, le collecteur d’instantanés signale une ShadowCopyFailed erreur.

Si le chargeur ne peut pas être lancé, le collecteur d’instantanés signale une UploaderCannotStartFromShadowCopy erreur. Le corps du message contient System.UnauthorizedAccessExceptionsouvent . Cette erreur se produit généralement parce que l’application s’exécute sous un compte avec des autorisations réduites. Le compte a l’autorisation d’écrire dans le dossier de cliché instantané, mais il n’est pas autorisé à exécuter du code.

Étant donné que ces erreurs se produisent généralement au démarrage, elles sont généralement suivies d’une ExceptionDuringConnect erreur indiquant « Échec du démarrage du chargeur ».

Pour contourner ces erreurs, vous pouvez spécifier le dossier de cliché instantané manuellement via l’option de ShadowCopyFolder configuration. Par exemple, en utilisant ApplicationInsights.config:

<TelemetryProcessors>
 <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
   <!-- Override the default shadow copy folder. -->
   <ShadowCopyFolder>D:\SnapshotUploader</ShadowCopyFolder>
   <!-- Other SnapshotCollector configuration options -->
 </Add>
</TelemetryProcessors>

Ou, si vous utilisez appsettings.json avec une application .NET Core :

{
  "ApplicationInsights": {
    "InstrumentationKey": "<your instrumentation key>"
  },
  "SnapshotCollectorConfiguration": {
    "ShadowCopyFolder": "D:\\SnapshotUploader"
  }
}

Utiliser la recherche Application Insights pour rechercher des exceptions avec des instantanés

Lorsqu’un instantané est créé, l’exception levée est marquée avec un ID instantané. Cet ID instantané est inclus en tant que propriété personnalisée lorsque l’exception est signalée à Application Insights. À l’aide de Recherche dans Application Insights, vous pouvez trouver tous les enregistrements avec la ai.snapshot.id propriété personnalisée.

  1. Accédez à votre ressource Application Insights dans le Portail Azure.
  2. Sélectionner Rechercher.
  3. Tapez ai.snapshot.id dans la zone de texte Recherche et appuyez sur Entrée.

Capture d’écran montrant la recherche de données de télémétrie avec un ID instantané dans le portail.

Si cette recherche ne retourne aucun résultat, aucun instantané n’a été signalé à Application Insights dans l’intervalle de temps sélectionné.

Pour rechercher un ID de instantané spécifique dans les journaux du chargeur, tapez cet ID dans la zone Recherche. Si vous ne trouvez pas les enregistrements d’un instantané dont vous savez qu’il a été chargé, procédez comme suit :

  1. Double case activée que vous examinez la ressource Application Insights appropriée en vérifiant la clé d’instrumentation.

  2. Ajustez le filtre Intervalle de temps de la recherche pour couvrir cet intervalle de temps à l’aide de l’horodatage du journal du chargeur.

Si vous ne voyez toujours pas d’exception avec cet ID instantané, l’enregistrement d’exception n’a pas été signalé à Application Insights. Cette situation peut se produire si votre application s’est bloquée après avoir pris le instantané, mais avant de signaler l’enregistrement d’exception. Dans ce cas, case activée les journaux App Service sous Diagnose and solve problems pour voir s’il y a eu des redémarrages inattendus ou des exceptions non gérées.

Modifier les règles de proxy réseau ou de pare-feu

Si votre application se connecte à Internet via un proxy ou un pare-feu, vous devrez peut-être mettre à jour les règles pour communiquer avec le service Débogueur de capture instantanée.

Les adresses IP utilisées par le débogueur d’instantané Application Insights sont incluses dans l’étiquette de service Azure Monitor. Pour plus d’informations, consultez la documentation sur les étiquettes de service.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.