Delen via


Problemen oplossen met het inschakelen van Application Insights Snapshot Debugger of het weergeven van momentopnamen

Als u Application Insights Snapshot Debugger hebt ingeschakeld voor uw toepassing, maar geen momentopnamen ziet voor uitzonderingen, kunt u deze instructies gebruiken om problemen op te lossen.

Er kunnen veel verschillende redenen zijn waarom momentopnamen niet worden gegenereerd. U kunt beginnen met het uitvoeren van de statuscontrole van de momentopname om enkele van de mogelijke veelvoorkomende oorzaken te identificeren.

Niet-ondersteunde scenario's

Hieronder vindt u scenario's waarin Snapshot Collector niet wordt ondersteund:

Scenario Bijwerkingen Aanbeveling
Wanneer u de Snapshot Collector SDK rechtstreeks in uw toepassing gebruikt (.csproj) en u de geavanceerde optie 'Interop' hebt ingeschakeld. De lokale Application Insights SDK (inclusief snapshot collector-telemetrie) gaat verloren; daarom zijn er geen momentopnamen beschikbaar.
Uw toepassing kan vastlopen bij het opstarten met System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
Zie Application monitoring for Azure App Service and ASP.NET Core (Toepassingsbewaking voor Azure App Service en ASP.NET Core) voor meer informatie over de functie 'Interop' van Application Insights.
Als u de geavanceerde optie 'Interop' gebruikt, gebruikt u de codeloze Snapshot Collector-injectie (ingeschakeld via de Azure Portal UX).

Zorg ervoor dat u het juiste eindpunt voor het foutopsporingsprogramma voor momentopnamen gebruikt

Momenteel zijn de enige regio's waarvoor eindpuntwijzigingen zijn vereist, Azure Government en Azure China.

Voor App Service en toepassingen die de Application Insights SDK gebruiken, moet u de verbindingsreeks bijwerken met behulp van de ondersteunde onderdrukkingen voor snapshot debugger, zoals hieronder is gedefinieerd:

Verbindingsreekseigenschap Cloud voor de Amerikaanse overheid China Cloud
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Zie application insights-documentatie voor meer informatie over andere verbindingsoverschrijvingen.

Voor functie-app moet u de host.json bijwerken met behulp van de ondersteunde onderdrukkingen hieronder:

Eigenschap Cloud voor de Amerikaanse overheid China Cloud
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Hier volgt een voorbeeld van het host.json bijgewerkt met het eindpunt van de Cloud-agent van de Amerikaanse overheid:

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

De statuscontrole van de momentopname gebruiken

Verschillende veelvoorkomende problemen hebben tot gevolg dat de momentopname voor foutopsporing openen niet wordt weergegeven. Er wordt bijvoorbeeld een verouderde Snapshot Collector gebruikt; de dagelijkse uploadlimiet is bereikt; of misschien duurt het uploaden van de momentopname lang. Gebruik de statuscontrole van momentopname om veelvoorkomende problemen op te lossen.

Er is een koppeling in het uitzonderingsvenster van de end-to-end-traceringsweergave waarmee u naar de statuscontrole van momentopname gaat.

Schermopname die laat zien hoe u de statuscontrole van de momentopname invoert.

De interactieve, chat-achtige interface zoekt naar veelvoorkomende problemen en helpt u deze op te lossen.

Schermopname van het interactieve venster Statuscontrole met de problemen en suggesties om deze op te lossen.

Als het probleem hiermee niet is opgelost, raadpleegt u de volgende handmatige stappen voor probleemoplossing.

De instrumentatiesleutel controleren

Zorg ervoor dat u de juiste instrumentatiesleutel gebruikt in uw gepubliceerde toepassing. Meestal wordt de instrumentatiesleutel gelezen uit het ApplicationInsights.config-bestand . Controleer of de waarde gelijk is aan de instrumentatiesleutel voor de Application Insights-resource die u in de portal ziet.

Op 31 maart 2025 eindigt de ondersteuning voor opname van instrumentatiesleutels. Opname van instrumentatiesleutels blijft werken, maar we bieden geen updates of ondersteuning meer voor de functie. Overgang naar verbindingsreeksen om te profiteren van nieuwe mogelijkheden.

Tls/SSL-clientinstellingen controleren (ASP.NET)

Als u een ASP.NET-toepassing hebt die wordt gehost in Azure App Service of in IIS op een virtuele machine, kan uw toepassing mogelijk geen verbinding maken met de Snapshot Debugger-service vanwege een ontbrekend SSL-beveiligingsprotocol.

Voor het eindpunt snapshot debugger is TLS-versie 1.2 vereist. De set SSL-beveiligingsprotocollen is een van de eigenaardigheden die worden ingeschakeld door de httpRuntime targetFramework waarde in de system.web sectie van web.config. Als de httpRuntime targetFramework 4.5.2 of lager is, wordt TLS 1.2 niet standaard opgenomen.

Opmerking

De httpRuntime targetFramework waarde is onafhankelijk van het doelframework dat wordt gebruikt bij het bouwen van uw toepassing.

Als u de instelling wilt controleren, opent u het web.config-bestand en zoekt u de sectie system.web. Zorg ervoor dat de targetFramework voor httpRuntime is ingesteld op 4,6 of hoger.

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

Opmerking

Als u de httpRuntime targetFramework waarde wijzigt, worden de runtime-grillen die op uw toepassing worden toegepast, gewijzigd en kunnen andere, subtiele gedragswijzigingen worden veroorzaakt. Zorg ervoor dat u uw toepassing grondig test nadat u deze wijziging hebt aangebracht. Zie Wijzigingen opnieuw targeten voor een volledige lijst met compatibiliteitswijzigingen.

Opmerking

Als de targetFramework versie 4.7 of een latere versie is, bepaalt Windows de beschikbare protocollen. In Azure App Service is TLS 1.2 beschikbaar. Als u echter uw eigen virtuele machine gebruikt, moet u mogelijk TLS 1.2 inschakelen in het besturingssysteem.

Preview-versies van .NET Core

Als u een preview-versie van .NET Core gebruikt of als uw toepassing rechtstreeks of indirect via een afhankelijke assembly verwijst naar application insights SDK, volgt u de instructies voor Snapshot Debugger inschakelen voor andere omgevingen.

Controleer de statuspagina van de Diagnostische services-site-extensie

Als Snapshot Debugger is ingeschakeld via het deelvenster Application Insights in de portal, is dit ingeschakeld door de Site-extensie van Diagnostic Services.

Opmerking

Installatie zonder code van Application Insights Snapshot Debugger volgt het .NET Core-ondersteuningsbeleid. Zie Ondersteuningsbeleid voor .NET Core voor meer informatie over ondersteunde runtimes.

U kunt de statuspagina van deze extensie controleren door naar de volgende URL te gaan: https://{site-name}.scm.azurewebsites.net/DiagnosticServices

Opmerking

Het domein van de koppeling Statuspagina is afhankelijk van de cloud. Dit domein is hetzelfde als de Kudu-beheersite voor App Service.

Op deze statuspagina ziet u de installatiestatus van de Profiler- en Snapshot Collector-agents. Als er een onverwachte fout is opgetreden, wordt deze weergegeven en wordt weergegeven hoe u deze kunt oplossen.

U kunt de Kudu-beheersite voor App Service gebruiken om de basis-URL van deze statuspagina op te halen:

  1. Open uw App Service toepassing in de Azure Portal.
  2. Selecteer Geavanceerde hulpprogramma's of zoek naar Kudu.
  3. Selecteer Zoeken.
  4. Zodra u zich op de Kudu-beheersite bevindt, voegt u in de URL de /DiagnosticServices toe en drukt u op Enter. Het eindigt als volgt: https://<kudu-url>/DiagnosticServices.

Upgraden naar de nieuwste versie van het NuGet-pakket

Bekijk de volgende opties op basis van hoe Snapshot Debugger is ingeschakeld:

Raadpleeg de releaseopmerkingen voor de meest recente updates en oplossingen voor fouten.

De uploaderlogboeken controleren

Nadat een momentopname is gemaakt, wordt er een minidump-bestand (.dmp) op schijf gemaakt. Een afzonderlijk uploaderproces maakt dat minidump-bestand en uploadt het, samen met eventuele bijbehorende PBS, naar application insights snapshot debugger-opslag. Nadat de minidump is geüpload, wordt deze van de schijf verwijderd. De logboekbestanden voor het uploaderproces worden op schijf bewaard. In een App Service omgeving vindt u deze logboeken in D:\Home\LogFiles. Gebruik de Kudu-beheersite voor App Service om deze logboekbestanden te vinden.

  1. Open uw App Service toepassing in de Azure Portal.
  2. Selecteer Geavanceerde hulpprogramma's of zoek naar Kudu.
  3. Selecteer Zoeken.
  4. Selecteer CMD in de vervolgkeuzelijst Foutopsporingsconsole.
  5. Selecteer LogFiles.

U ziet ten minste één bestand met een naam die begint met Uploader_ of SnapshotUploader_ en een .log extensie. Selecteer het juiste pictogram om logboekbestanden te downloaden of open ze in een browser. De bestandsnaam bevat een uniek achtervoegsel waarmee de App Service instantie wordt geïdentificeerd. Als uw App Service-exemplaar op meer dan één computer wordt gehost, zijn er afzonderlijke logboekbestanden voor elke computer. Wanneer de uploader een nieuw minidump-bestand detecteert, wordt dit vastgelegd in het logboekbestand. Hier volgt een voorbeeld van een geslaagde momentopname en upload:

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

Opmerking

Het bovenstaande voorbeeld is van versie 1.2.0 van het Microsoft.ApplicationInsights.SnapshotCollector NuGet-pakket. In eerdere versies wordt het uploaderproces aangeroepen MinidumpUploader.exe en is het logboek minder gedetailleerd.

In het vorige voorbeeld is c12a605e73c44346a984e00000000000de instrumentatiesleutel . Deze waarde moet overeenkomen met de instrumentatiesleutel voor uw toepassing. De minidump is gekoppeld aan een momentopname met de id 139e411a23934dc0b9ea08a626db16c5. U kunt deze id later gebruiken om de bijbehorende uitzonderingsrecord te vinden in Application Insights Analytics.

De uploader scant ongeveer elke 15 minuten op nieuwe PDF's. Hier volgt een voorbeeld:

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

Voor toepassingen die niet in App Service worden gehost, bevinden de uploaderlogboeken zich in dezelfde map als de minidumps: %TEMP%\Dumps\<ikey> (waarbij <ikey> uw instrumentatiesleutel is).

Problemen met Cloud Services oplossen

In Cloud Services kan de tijdelijke standaardmap te klein zijn om de minidump-bestanden te bevatten, wat kan leiden tot verloren momentopnamen.

De benodigde ruimte is afhankelijk van de totale werkset van uw toepassing en het aantal gelijktijdige momentopnamen.

De werkset van een 32-bits ASP.NET webrol ligt doorgaans tussen 200 EN 500 MB. Sta ten minste twee gelijktijdige momentopnamen toe.

Als uw toepassing bijvoorbeeld 1 GB aan totale werkset gebruikt, moet u ervoor zorgen dat er ten minste 2 GB schijfruimte is om momentopnamen op te slaan.

Volg deze stappen om uw cloudservicerol te configureren met een toegewezen lokale resource voor momentopnamen.

  1. Voeg een nieuwe lokale resource toe aan uw cloudservice door het cloudservicedefinitiebestand (.csdef) te bewerken. In het volgende voorbeeld wordt een resource met de naam SnapshotStore gedefinieerd met een grootte van 5 GB.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. Wijzig de opstartcode van uw rol om een omgevingsvariabele toe te voegen die verwijst naar de SnapshotStore lokale resource. Voor werkrollen moet de code worden toegevoegd aan de methode van OnStart uw rol:

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

    Voor webrollen (ASP.NET) moet de code worden toegevoegd aan de methode van Application_Start uw webtoepassing:

    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. Werk het ApplicationInsights.config-bestand van uw rol bij om de tijdelijke maplocatie te overschrijven die wordt gebruikt door 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>
    

De map Schaduwkopie overschrijven

Wanneer momentopnameverzamelaar wordt gestart, wordt geprobeerd een map op de schijf te vinden die geschikt is voor het uitvoeren van het momentopname-uploadproces. De gekozen map wordt de map Schaduwkopie genoemd.

Momentopnameverzamelaar controleert een aantal bekende locaties en zorgt ervoor dat deze over machtigingen beschikt om de binaire bestanden van Snapshot Uploader te kopiëren. De volgende omgevingsvariabelen worden gebruikt:

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • TEMP

Als er geen geschikte map kan worden gevonden, meldt Snapshot Collector een fout met de mededeling 'Kan geen geschikte map voor schaduwkopie vinden'.

Als het kopiëren mislukt, meldt Snapshot Collector een ShadowCopyFailed fout.

Als de uploader niet kan worden gestart, meldt Snapshot Collector een UploaderCannotStartFromShadowCopy fout. De hoofdtekst van het bericht bevat System.UnauthorizedAccessExceptionvaak . Deze fout treedt meestal op omdat de toepassing wordt uitgevoerd onder een account met beperkte machtigingen. Het account is gemachtigd om naar de map schaduwkopieer te schrijven, maar heeft geen machtiging om code uit te voeren.

Omdat deze fouten meestal optreden tijdens het opstarten, worden ze meestal gevolgd door de ExceptionDuringConnect foutmelding 'Uploader is niet gestart'.

Als u deze fouten wilt omzeilen, kunt u de map schaduwkopie handmatig opgeven via de ShadowCopyFolder configuratieoptie. Gebruik bijvoorbeeld 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>

Of, als u appsettings.json gebruikt met een .NET Core-toepassing:

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

Application Insights-zoekopdracht gebruiken om uitzonderingen te vinden met momentopnamen

Wanneer een momentopname wordt gemaakt, wordt de uitzondering die wordt gegenereerd getagd met een momentopname-id. Deze momentopname-id wordt opgenomen als een aangepaste eigenschap wanneer de uitzondering wordt gerapporteerd aan Application Insights. Met Search in Application Insights kunt u alle records met de ai.snapshot.id aangepaste eigenschap vinden.

  1. Blader naar uw Application Insights-resource in de Azure Portal.
  2. Selecteer Zoeken.
  3. Typ ai.snapshot.id het tekstvak Search en druk op Enter.

Schermopname van het zoeken naar telemetrie met een momentopname-id in de portal.

Als deze zoekopdracht geen resultaten oplevert, zijn er geen momentopnamen gerapporteerd aan Application Insights in het geselecteerde tijdsbereik.

Als u wilt zoeken naar een specifieke momentopname-id in de Uploader-logboeken, typt u die id in het vak Search. Als u geen records kunt vinden voor een momentopname die u weet dat ze zijn geüpload, voert u de volgende stappen uit:

  1. Controleer of u de juiste Application Insights-resource bekijkt door de instrumentatiesleutel te controleren.

  2. Pas het filter Tijdsbereik van de zoekopdracht aan om dat tijdsbereik te dekken met behulp van het tijdstempel uit het Uploader-logboek.

Als u nog steeds geen uitzondering ziet met die momentopname-id, is de uitzonderingsrecord niet gerapporteerd aan Application Insights. Deze situatie kan optreden als uw toepassing is vastgelopen nadat de momentopname is gemaakt, maar voordat de uitzonderingsrecord is gerapporteerd. In dit geval controleert u de App Service logboeken onder Diagnose and solve problems om te zien of er onverwachte herstarten of onverwerkte uitzonderingen zijn opgeslagen.

Netwerkproxy- of firewallregels bewerken

Als uw toepassing verbinding maakt met internet via een proxy of een firewall, moet u mogelijk de regels bijwerken om te communiceren met de Snapshot Debugger-service.

De IP's die worden gebruikt door Application Insights Snapshot Debugger zijn opgenomen in de Azure Monitor-servicetag. Zie documentatie voor servicetags voor meer informatie.

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Feedback-community van Azure.