Behandeln von Problemen beim Aktivieren des Application Insights-Momentaufnahmedebuggers oder Anzeigen von Momentaufnahmen
Wenn Sie den Application Insights-Momentaufnahmedebugger für Ihre Anwendung aktiviert haben, aber keine Momentaufnahmen für Ausnahmen angezeigt werden, können Sie diese Anweisungen zur Problembehandlung verwenden.
Es kann viele verschiedene Gründe geben, warum Momentaufnahmen nicht generiert werden. Sie können zunächst die Momentaufnahme-Integritätsprüfung ausführen, um einige der möglichen häufigen Ursachen zu ermitteln.
Nicht unterstützte Szenarien
Im Folgenden finden Sie Szenarien, in denen Snapshot Collector nicht unterstützt wird:
Szenario | Nebenwirkungen | Empfehlung |
---|---|---|
Wenn Sie das Snapshot Collector SDK direkt in Ihrer Anwendung (CSPROJ) verwenden und die erweiterte Option "Interop" aktiviert haben. | Das lokale Application Insights SDK (einschließlich Momentaufnahmesammlertelemetrie) geht verloren. Daher sind keine Momentaufnahmen verfügbar. Ihre Anwendung kann beim Start mit System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor Weitere Informationen zum Application Insights-Feature "Interop" finden Sie unter Anwendungsüberwachung für Azure App Service und ASP.NET Core. |
Wenn Sie die erweiterte Option "Interop" verwenden, verwenden Sie die Codelose Snapshot Collector-Einschleusung (aktiviert über die Azure-Portal UX). |
Stellen Sie sicher, dass Sie den entsprechenden Momentaufnahmedebugger-Endpunkt verwenden.
Derzeit sind Azure Government und Azure China die einzigen Regionen, in denen Endpunktänderungen erforderlich sind.
Für App Service und Anwendungen, die das Application Insights SDK verwenden, müssen Sie die Verbindungszeichenfolge mithilfe der unterstützten Außerkraftsetzungen für den Momentaufnahmedebugger aktualisieren, wie unten definiert:
Verbindungszeichenfolgeneigenschaft | US Government Cloud | China Cloud |
---|---|---|
SnapshotEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Weitere Informationen zu anderen Verbindungsüberschreibungen finden Sie in der Application Insights-Dokumentation.
Für die Funktions-App müssen Sie die mithilfe der host.json
folgenden unterstützten Außerkraftsetzungen aktualisieren:
Eigenschaft | US Government Cloud | China Cloud |
---|---|---|
AgentEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Hier sehen Sie ein Beispiel für das host.json
mit dem US Government Cloud-Agent-Endpunkt aktualisiert wurde:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingExcludedTypes": "Request",
"samplingSettings": {
"isEnabled": true
},
"snapshotConfiguration": {
"isEnabled": true,
"agentEndpoint": "https://snapshot.monitor.azure.us"
}
}
}
}
Verwenden der Momentaufnahme-Integritätsprüfung
Mehrere häufige Probleme führen dazu, dass die Open Debug Snapshot nicht angezeigt wird. Beispielsweise wird ein veralteter Momentaufnahmesammler verwendet. das tägliche Uploadlimit erreicht ist; oder vielleicht dauert das Hochladen des Momentaufnahme einfach sehr lange. Verwenden Sie die Momentaufnahmeintegritätsprüfung, um häufige Probleme zu beheben.
Es gibt einen Link im Ausnahmebereich der End-to-End-Ablaufverfolgungsansicht, über den Sie zur Momentaufnahmeintegritätsprüfung gelangen.
Die interaktive, chatähnliche Benutzeroberfläche sucht nach häufigen Problemen und führt Sie dazu, diese zu beheben.
Wenn das Problem dadurch nicht behoben wird, lesen Sie die folgenden manuellen Problembehandlungsschritte.
Überprüfen des Instrumentierungsschlüssels
Stellen Sie sicher, dass Sie den richtigen Instrumentierungsschlüssel in Ihrer veröffentlichten Anwendung verwenden. In der Regel wird der Instrumentierungsschlüssel aus der ApplicationInsights.config-Datei gelesen. Vergewissern Sie sich, dass der Wert mit dem Instrumentierungsschlüssel für die Application Insights-Ressource identisch ist, die Im Portal angezeigt wird.
Am 31. März 2025 endet die Unterstützung für die Instrumentierungsschlüsselerfassung. Die Erfassung von Instrumentierungsschlüsseln funktioniert weiterhin, aber wir stellen keine Updates oder Unterstützung für das Feature mehr bereit. Übergang zu Verbindungszeichenfolgen, um neue Funktionen zu nutzen.
Überprüfen der TLS/SSL-Clienteinstellungen (ASP.NET)
Wenn Sie über eine ASP.NET Anwendung verfügen, die in Azure App Service oder in IIS auf einem virtuellen Computer gehostet wird, kann Ihre Anwendung aufgrund eines fehlenden SSL-Sicherheitsprotokolls möglicherweise keine Verbindung mit dem Momentaufnahmedebuggerdienst herstellen.
Der Endpunkt des Momentaufnahmedebuggers erfordert TLS-Version 1.2. Der Satz von SSL-Sicherheitsprotokollen ist eine der Durch den httpRuntime targetFramework
Wert im system.web
Abschnitt von web.config
aktivierten Besonderheiten.
httpRuntime targetFramework
Wenn 4.5.2 oder niedriger ist, ist TLS 1.2 standardmäßig nicht enthalten.
Hinweis
Der httpRuntime targetFramework
Wert ist unabhängig vom Zielframework, das beim Erstellen Ihrer Anwendung verwendet wird.
Um die Einstellung zu überprüfen, öffnen Sie ihre web.config-Datei , und suchen Sie den Abschnitt system.web. Stellen Sie sicher, dass für targetFramework
httpRuntime
auf 4.6 oder höher festgelegt ist.
<system.web>
...
<httpRuntime targetFramework="4.7.2" />
...
</system.web>
Hinweis
Das Ändern des httpRuntime targetFramework
Werts ändert die Laufzeit-Quirks, die auf Ihre Anwendung angewendet werden, und kann andere, subtile Verhaltensänderungen verursachen. Stellen Sie sicher, dass Sie Ihre Anwendung gründlich testen, nachdem Sie diese Änderung vorgenommen haben. Eine vollständige Liste der Kompatibilitätsänderungen finden Sie unter Änderungen mit erneuter Ausrichtung.
Hinweis
targetFramework
Wenn 4.7 oder eine höhere Version ist, bestimmt Windows die verfügbaren Protokolle. In Azure App Service ist TLS 1.2 verfügbar. Wenn Sie jedoch Ihren eigenen virtuellen Computer verwenden, müssen Sie möglicherweise TLS 1.2 im Betriebssystem aktivieren.
Vorschauversionen von .NET Core
Wenn Sie eine Vorschauversion von .NET Core verwenden oder Ihre Anwendung direkt oder indirekt über eine abhängige Assembly auf Application Insights SDK verweist, befolgen Sie die Anweisungen unter Aktivieren des Momentaufnahmedebuggers für andere Umgebungen.
Überprüfen der Statusseite der Diagnosedienste-Websiteerweiterung
Wenn der Momentaufnahmedebugger über den Application Insights-Bereich im Portal aktiviert wurde, wurde er von der Siteerweiterung Diagnosedienste aktiviert.
Hinweis
Die codelose Installation des Application Insights-Momentaufnahmedebuggers folgt der .NET Core-Supportrichtlinie. Weitere Informationen zu unterstützten Runtimes finden Sie unter .NET Core-Supportrichtlinie.
Sie können die Statusseite dieser Erweiterung überprüfen, indem Sie die folgende URL aufrufen: https://{site-name}.scm.azurewebsites.net/DiagnosticServices
Hinweis
Die Domäne des Links "Statusseite" variiert je nach Cloud. Diese Domäne entspricht der Kudu-Verwaltungswebsite für App Service.
Auf dieser Statusseite wird der Installationsstatus der Profiler- und Momentaufnahmesammler-Agents angezeigt. Wenn ein unerwarteter Fehler aufgetreten ist, wird er angezeigt und zeigt, wie er behoben werden kann.
Sie können die Kudu-Verwaltungswebsite für App Service verwenden, um die Basis-URL dieser Statusseite abzurufen:
- Öffnen Sie Ihre App Service-Anwendung im Azure-Portal.
- Wählen Sie Erweiterte Tools aus, oder suchen Sie nach Kudu.
- Wählen Sie Los.
- Wenn Sie sich auf der Kudu-Verwaltungswebsite befinden, fügen Sie in der URL den an, und drücken Sie die
/DiagnosticServices
EINGABETASTE. Es endet wie folgt:https://<kudu-url>/DiagnosticServices
.
Upgrade auf die neueste Version des NuGet-Pakets
Je nachdem, wie der Momentaufnahmedebugger aktiviert wurde, sehen Sie sich die folgenden Optionen an:
Wenn der Momentaufnahmedebugger über den Application Insights-Bereich im Portal aktiviert wurde, sollte ihre Anwendung bereits das neueste NuGet-Paket ausführen.
Wenn der Momentaufnahmedebugger durch Einschließen des NuGet-Pakets Microsoft.ApplicationInsights.SnapshotCollector aktiviert wurde, verwenden Sie den NuGet-Paket-Manager von Visual Studio, um sicherzustellen, dass Sie die neueste Version von
Microsoft.ApplicationInsights.SnapshotCollector
verwenden.
Die neuesten Updates und Fehlerbehebungen finden Sie in den Versionshinweisen.
Überprüfen der Uploaderprotokolle
Nachdem ein Momentaufnahme erstellt wurde, wird eine Minidumpdatei (.dmp) auf dem Datenträger erstellt. Ein separater Uploaderprozess erstellt diese Minidumpdatei und lädt sie zusammen mit allen zugehörigen PDBs in den Application Insights Snapshot Debugger-Speicher hoch. Nachdem der Minidump erfolgreich hochgeladen wurde, wird er vom Datenträger gelöscht. Die Protokolldateien für den Uploaderprozess werden auf dem Datenträger gespeichert. In einer App Service-Umgebung finden Sie diese Protokolle in D:\Home\LogFiles
. Verwenden Sie die Kudu-Verwaltungswebsite für App Service, um diese Protokolldateien zu finden.
- Öffnen Sie Ihre App Service-Anwendung im Azure-Portal.
- Wählen Sie Erweiterte Tools aus, oder suchen Sie nach Kudu.
- Wählen Sie Los.
- Wählen Sie in der Dropdownliste Debugkonsole die Option CMD aus.
- Wählen Sie LogFiles aus.
Es sollte mindestens eine Datei mit einem Namen angezeigt werden, der mit Uploader_
oder SnapshotUploader_
beginnt, und einer .log
Erweiterung. Wählen Sie das entsprechende Symbol aus, um Protokolldateien herunterzuladen oder in einem Browser zu öffnen.
Der Dateiname enthält ein eindeutiges Suffix, das die App Service instance identifiziert. Wenn Ihr App Service instance auf mehreren Computern gehostet wird, gibt es separate Protokolldateien für jeden Computer. Wenn der Uploader eine neue Minidumpdatei erkennt, wird sie in der Protokolldatei aufgezeichnet. Hier sehen Sie ein Beispiel für ein erfolgreiches Momentaufnahme und Hochladen:
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
Hinweis
Das obige Beispiel stammt aus Version 1.2.0 des Microsoft.ApplicationInsights.SnapshotCollector
NuGet-Pakets. In früheren Versionen wird der Uploaderprozess aufgerufen MinidumpUploader.exe
, und das Protokoll ist weniger detailliert.
Im vorherigen Beispiel ist c12a605e73c44346a984e00000000000
der Instrumentierungsschlüssel . Dieser Wert sollte mit dem Instrumentierungsschlüssel für Ihre Anwendung übereinstimmen.
Der Minidump ist einem Momentaufnahme mit der ID 139e411a23934dc0b9ea08a626db16c5
zugeordnet. Sie können diese ID später verwenden, um den zugeordneten Ausnahmedatensatz in Application Insights Analytics zu suchen.
Der Uploader sucht etwa alle 15 Minuten nach neuen PDBs. Hier ist ein Beispiel:
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
Für Anwendungen, die nicht in App Service gehostet werden, befinden sich die Uploaderprotokolle im selben Ordner wie die Minidumps: %TEMP%\Dumps\<ikey>
(wobei <ikey>
Ihr Instrumentierungsschlüssel ist).
Problembehandlung bei Cloud Services
In Cloud Services kann der temporäre Standardordner zu klein sein, um die Minidumpdateien aufzunehmen, was zu verlorenen Momentaufnahmen führt.
Der benötigte Speicherplatz hängt vom Gesamtarbeitssatz Ihrer Anwendung und der Anzahl der gleichzeitigen Momentaufnahmen ab.
Der Arbeitssatz einer 32-Bit-ASP.NET Webrolle liegt in der Regel zwischen 200 MB und 500 MB. Lassen Sie mindestens zwei gleichzeitige Momentaufnahmen zu.
Wenn Ihre Anwendung beispielsweise 1 GB gesamter Arbeitssatz verwendet, sollten Sie sicherstellen, dass mindestens 2 GB Speicherplatz zum Speichern von Momentaufnahmen vorhanden sind.
Führen Sie die folgenden Schritte aus, um Ihre Clouddienstrolle mit einer dedizierten lokalen Ressource für Momentaufnahmen zu konfigurieren.
Fügen Sie Ihrem Clouddienst eine neue lokale Ressource hinzu, indem Sie die Clouddienstdefinitionsdatei (.csdef) bearbeiten. Im folgenden Beispiel wird eine Ressource namens
SnapshotStore
mit einer Größe von 5 GB definiert.<LocalResources> <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" /> </LocalResources>
Ändern Sie den Startcode Ihrer Rolle, um eine Umgebungsvariable hinzuzufügen, die auf die
SnapshotStore
lokale Ressource verweist. Für Workerrollen sollte der Code der -Methode Ihrer RolleOnStart
hinzugefügt werden:public override bool OnStart() { Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath); return base.OnStart(); }
Für Webrollen (ASP.NET) sollte der Code der -Methode Ihrer Webanwendung
Application_Start
hinzugefügt werden: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 } } }
Aktualisieren Sie die ApplicationInsights.config-Datei Ihrer Rolle, um den temporären Ordnerspeicherort zu überschreiben, der von
SnapshotCollector
verwendet wird.<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>
Überschreiben des Schattenkopieordners
Wenn der Momentaufnahmesammler gestartet wird, versucht er, einen Ordner auf dem Datenträger zu finden, der für die Ausführung des Snapshot Uploader-Prozesses geeignet ist. Der ausgewählte Ordner wird als Schattenkopieordner bezeichnet.
Der Momentaufnahmesammler überprüft einige bekannte Speicherorte und stellt sicher, dass er über Berechtigungen zum Kopieren der Binärdateien für den Momentaufnahmeuploader verfügt. Die folgenden Umgebungsvariablen werden verwendet:
Fabric_Folder_App_Temp
LOCALAPPDATA
APPDATA
TEMP
Wenn kein geeigneter Ordner gefunden werden kann, meldet Snapshot Collector eine Fehlermeldung mit der Meldung "Ein geeigneter Schattenkopieordner konnte nicht gefunden werden."
Wenn die Kopie fehlschlägt, meldet Snapshot Collector einen ShadowCopyFailed
Fehler.
Wenn der Uploader nicht gestartet werden kann, meldet Snapshot Collector einen UploaderCannotStartFromShadowCopy
Fehler. Der Text der Nachricht enthält System.UnauthorizedAccessException
häufig . Dieser Fehler tritt in der Regel auf, weil die Anwendung unter einem Konto mit eingeschränkten Berechtigungen ausgeführt wird. Das Konto verfügt über die Berechtigung zum Schreiben in den Schattenkopieordner, aber es verfügt nicht über die Berechtigung zum Ausführen von Code.
Da diese Fehler in der Regel während des Starts auftreten, folgt in der Regel der ExceptionDuringConnect
Fehler "Uploader konnte nicht gestartet werden".
Um diese Fehler zu umgehen, können Sie den Schattenkopieordner manuell über die ShadowCopyFolder
Konfigurationsoption angeben. Verwenden Sie beispielsweise 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>
Wenn Sie appsettings.json mit einer .NET Core-Anwendung verwenden:
{
"ApplicationInsights": {
"InstrumentationKey": "<your instrumentation key>"
},
"SnapshotCollectorConfiguration": {
"ShadowCopyFolder": "D:\\SnapshotUploader"
}
}
Verwenden der Application Insights-Suche zum Suchen von Ausnahmen mit Momentaufnahmen
Wenn ein Momentaufnahme erstellt wird, wird die auslösende Ausnahme mit einer Momentaufnahme-ID gekennzeichnet. Diese Momentaufnahme ID ist als benutzerdefinierte Eigenschaft enthalten, wenn die Ausnahme an Application Insights gemeldet wird. Mit Search in Application Insights können Sie alle Datensätze mit der ai.snapshot.id
benutzerdefinierten Eigenschaft finden.
- Navigieren Sie im Azure-Portal zu Ihrer Application Insights-Ressource.
- Wählen Sie Suchen aus.
- Geben Sie
ai.snapshot.id
in das Textfeld Search ein, und drücken Sie die EINGABETASTE.
Wenn diese Suche keine Ergebnisse zurückgibt, wurden im ausgewählten Zeitbereich keine Momentaufnahmen an Application Insights gemeldet.
Um in den Uploaderprotokollen nach einer bestimmten Momentaufnahme-ID zu suchen, geben Sie diese ID in das Feld Search ein. Wenn Sie keine Datensätze für ein Momentaufnahme finden können, von dem Sie wissen, dass sie hochgeladen wurde, führen Sie die folgenden Schritte aus:
Überprüfen Sie erneut, ob Sie die richtige Application Insights-Ressource anzeigen, indem Sie den Instrumentierungsschlüssel überprüfen.
Passen Sie den Zeitbereichsfilter der Suche an, um diesen Zeitbereich mithilfe des Zeitstempels aus dem Uploader-Protokoll abzudecken.
Wenn immer noch keine Ausnahme mit dieser Momentaufnahme-ID angezeigt wird, wurde der Ausnahmedatensatz nicht an Application Insights gemeldet. Diese Situation kann auftreten, wenn Ihre Anwendung abgestürzt ist, nachdem sie die Momentaufnahme, aber bevor sie den Ausnahmedatensatz gemeldet hat. Überprüfen Sie in diesem Fall die App Service Protokolle unterDiagnose and solve problems
, um zu ermitteln, ob unerwartete Neustarts oder nicht behandelte Ausnahmen aufgetreten sind.
Bearbeiten von Netzwerkproxy- oder Firewallregeln
Wenn Ihre Anwendung über einen Proxy oder eine Firewall eine Verbindung mit dem Internet herstellt, müssen Sie möglicherweise die Regeln für die Kommunikation mit dem Momentaufnahmedebuggerdienst aktualisieren.
Die vom Application Insights-Momentaufnahmedebugger verwendeten IP-Adressen sind im Azure Monitor-Diensttag enthalten. Weitere Informationen finden Sie in der Dokumentation zu Diensttags.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.