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.
De interactieve, chat-achtige interface zoekt naar veelvoorkomende problemen en helpt u 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:
- Open uw App Service toepassing in de Azure Portal.
- Selecteer Geavanceerde hulpprogramma's of zoek naar Kudu.
- Selecteer Zoeken.
- 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:
Als Snapshot Debugger is ingeschakeld via het deelvenster Application Insights in de portal, moet uw toepassing al het nieuwste NuGet-pakket uitvoeren.
Als Snapshot Debugger is ingeschakeld door het NuGet-pakket Microsoft.ApplicationInsights.SnapshotCollector op te nemen, gebruikt u NuGet Package Manager van Visual Studio om ervoor te zorgen dat u de nieuwste versie van
Microsoft.ApplicationInsights.SnapshotCollector
gebruikt.
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.
- Open uw App Service toepassing in de Azure Portal.
- Selecteer Geavanceerde hulpprogramma's of zoek naar Kudu.
- Selecteer Zoeken.
- Selecteer CMD in de vervolgkeuzelijst Foutopsporingsconsole.
- 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 c12a605e73c44346a984e00000000000
de 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.
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>
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 vanOnStart
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 } } }
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.UnauthorizedAccessException
vaak . 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.
- Blader naar uw Application Insights-resource in de Azure Portal.
- Selecteer Zoeken.
- Typ
ai.snapshot.id
het tekstvak Search en druk op Enter.
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:
Controleer of u de juiste Application Insights-resource bekijkt door de instrumentatiesleutel te controleren.
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.