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.

Screenshot, der zeigt, wie sie Momentaufnahme Integritätsprüfung eingeben.

Die interaktive, chatähnliche Benutzeroberfläche sucht nach häufigen Problemen und führt Sie dazu, diese zu beheben.

Screenshot des interaktiven Fensters

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.configaktivierten 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 targetFrameworkhttpRuntime 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:

  1. Öffnen Sie Ihre App Service-Anwendung im Azure-Portal.
  2. Wählen Sie Erweiterte Tools aus, oder suchen Sie nach Kudu.
  3. Wählen Sie Los.
  4. Wenn Sie sich auf der Kudu-Verwaltungswebsite befinden, fügen Sie in der URL den an, und drücken Sie die /DiagnosticServicesEINGABETASTE. 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:

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.

  1. Öffnen Sie Ihre App Service-Anwendung im Azure-Portal.
  2. Wählen Sie Erweiterte Tools aus, oder suchen Sie nach Kudu.
  3. Wählen Sie Los.
  4. Wählen Sie in der Dropdownliste Debugkonsole die Option CMD aus.
  5. 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 c12a605e73c44346a984e00000000000der Instrumentierungsschlüssel . Dieser Wert sollte mit dem Instrumentierungsschlüssel für Ihre Anwendung übereinstimmen. Der Minidump ist einem Momentaufnahme mit der ID 139e411a23934dc0b9ea08a626db16c5zugeordnet. 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.

  1. 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>
    
  2. Ä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 Rolle OnStart 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
           }
        }
    }
    
  3. Aktualisieren Sie die ApplicationInsights.config-Datei Ihrer Rolle, um den temporären Ordnerspeicherort zu überschreiben, der von SnapshotCollectorverwendet 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.UnauthorizedAccessExceptionhä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.

  1. Navigieren Sie im Azure-Portal zu Ihrer Application Insights-Ressource.
  2. Wählen Sie Suchen aus.
  3. Geben Sie ai.snapshot.id in das Textfeld Search ein, und drücken Sie die EINGABETASTE.

Screenshot: Suche nach Telemetriedaten mit einer Momentaufnahme-ID im Portal

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:

  1. Überprüfen Sie erneut, ob Sie die richtige Application Insights-Ressource anzeigen, indem Sie den Instrumentierungsschlüssel überprüfen.

  2. 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.