Teilen über


Problembehandlung mithilfe von Ressourcenprotokollen

Diese Schrittanleitung enthält eine Übersicht über Azure Web PubSub-Ressourcenprotokolle und Tipps zur Verwendung der Protokolle zur Behandlung bestimmter Probleme. Protokolle können zur Problemidentifikation, Verbindungsverfolgung, Nachrichtenablaufverfolgung, HTTP-Anforderungsablaufverfolgung und Analyse verwendet werden.

Was sind Ressourcenprotokolle?

Es stehen drei Arten von Ressourcenprotokollen zur Verfügung:

  • Konnektivitätsprotokolle enthalten detaillierte Informationen für Azure Web PubSub-Hubverbindungen. Sie können grundlegende Informationen wie Benutzer-ID und Verbindungs-ID oder Ereignisinformationen wie Verbinden und Trennen enthalten.
  • Messaging-Protokolle stellen Ablaufverfolgungsinformationen für Hubnachrichten bereit, die über den Azure Web PubSub-Dienst gesendet oder empfangen werden, z. B. die Ablaufverfolgungs-ID oder den Nachrichtentyp.
  • HTTP-Anforderungsprotokolle stellen Ablaufverfolgungsinformationen für HTTP-Anforderungen für den Azure Web PubSub-Dienst bereit, z. B. HTTP-Methode oder Statuscode. In der Regel wird die HTTP-Anforderung erfasst, wenn sie beim Dienst eingeht oder ihn verlässt.

Erfassen von Ressourcenprotokollen mithilfe des Live-Ablaufverfolgungstools

Das Tool für die Liveablaufverfolgung des Azure Web PubSub-Diensts kann Ressourcenprotokolle in Echtzeit erfassen, was für die Problembehandlung in Ihrer Entwicklungsumgebung hilfreich ist. Das Live-Ablaufverfolgungstool kann Verbindungsprotokolle, Messagingprotokolle und HTTP-Anforderungsprotokolle erfassen.

Bei Verwendung des Tools für die Liveablaufverfolgung sollten Sie die folgenden Faktoren berücksichtigen:

  • Die vom Tool für die Liveablaufverfolgung aufgezeichneten Echtzeit-Ressourcenprotokolle werden als Nachrichten (ausgehender Datenverkehr) abgerechnet.
  • Für Free-Instanzen des Azure Web PubSub-Diensts gilt beim ausgehenden Datenverkehr eine Beschränkung auf 20.000 Nachrichten pro Tag. Die Liveablaufverfolgung kann dazu führen, dass Sie unerwartet den täglichen Grenzwert erreichen.
  • Das Tool für die Liveablaufverfolgung unterstützt derzeit keine Microsoft Entra-Autorisierung. Sie müssen Zugriffsschlüssel aktivieren, um die Live-Ablaufverfolgung zu verwenden. Wählen Sie unter EinstellungenSchlüssel aus, und aktivieren Sie dann die Option Zugriffsschlüssel.

Starten des Liveablaufverfolgungs-Tools

Wenn Sie einen Zugriffsschlüssel aktivieren, verwenden Sie ein Zugriffstoken zum Authentifizieren des Tools für die Liveablaufverfolgung. Andernfalls verwenden Sie Microsoft Entra ID zum Authentifizieren des Tool für die Liveablaufverfolgung. Sie können ermitteln, ob der Zugriffsschlüssel aktiviert ist, indem Sie im Azure-Portal zum Bereich Schlüssel in Ihrer Azure SignalR Service-Instanz wechseln.

Öffnen der Liveablaufverfolgung, wenn der Zugriffsschlüssel aktiviert ist

  1. Wechseln Sie zum Azure-Portal und zu Ihrem SignalR Service-Bereich.

  2. Wählen Sie im Dienstmenü unter Überwachung die Option Einstellungen der Live-Ablaufverfolgung aus.

  3. Wählen Sie Liveablaufverfolgung aktivieren aus.

  4. Wählen Sie die Schaltfläche Speichern aus. Es dauert einen Moment, bis die Änderungen wirksam werden.

  5. Wenn die Aktualisierung abgeschlossen ist, wählen Sie Tool für die Liveablaufverfolgung öffnen aus.

    Screenshot: Öffnen des Tools für die Liveablaufverfolgung.

Öffnen des Tools für die Liveablaufverfolgung, wenn der Zugriffsschlüssel deaktiviert ist

Zuweisen der API-Berechtigung zum Live-Ablaufverfolgungstool für sich selbst

  1. Wechseln Sie zum Azure-Portal und zu Ihrem SignalR Service-Bereich.

  2. Wählen Sie Zugriffssteuerung (IAM) aus.

  3. Wählen Sie +Hinzufügen und dann Rollenzuweisung aus.

  4. Wählen Sie die Registerkarte Rollen der Stellenfunktion aus, wählen Sie die Rolle SignalR Service-Besitzer aus, und wählen Sie dann Weiter aus.

  5. Klicken Sie im Bereich Mitglieder auf +Mitglieder auswählen.

  6. Suchen Sie nach Mitgliedern, wählen Sie sie aus, und klicken Sie dann auf Auswählen.

  7. Wählen Sie Überprüfen und zuweisen aus, und warten Sie auf die Abschlussbenachrichtigung.

Starten des Tools für die Liveablaufverfolgung

  1. Wechseln Sie zum Azure-Portal und zu Ihrem SignalR Service-Bereich.

  2. Wählen Sie im Dienstmenü unter Überwachung die Option Einstellungen der Live-Ablaufverfolgung aus.

  3. Wählen Sie Liveablaufverfolgung aktivieren aus.

  4. Wählen Sie die Schaltfläche Speichern aus. Es dauert einen Moment, bis die Änderungen wirksam werden.

  5. Wenn die Aktualisierung abgeschlossen ist, wählen Sie Tool für die Liveablaufverfolgung öffnen aus.

    Screenshot: Öffnen des Tools für die Liveablaufverfolgung.

Anmelden mit Ihrem Microsoft-Konto

  1. Das Tool für die Liveablaufverfolgung öffnet ein Microsoft-Anmeldefenster. Wenn kein Fenster angezeigt wird, erlauben Sie Popupfenster in Ihren Browsereinstellungen.

  2. Warten Sie, bis in der Statusleiste Bereit angezeigt wird.

Aufzeichnen der Ressourcenprotokolle

Mit dem Tool zur Liveablaufverfolgung können Sie die Ressourcenprotokolle zur Problembehandlung erfassen.

  • Aufzeichnen: Beginnt mit dem Aufzeichnen der Echtzeit-Ressourcenprotokolle aus Azure Web PubSub.
  • Löschen: Löscht die aufgezeichneten Echtzeit-Ressourcenprotokolle.
  • Protokollfilter filtert die erfassten Echtzeitressourcenprotokolle mit einem bestimmten Schlüsselwort. Die allgemeinen Trennzeichen wie Leerzeichen, Komma und Semikolon werden als Teil des Schlüsselworts behandelt.
  • Status zeigt an, ob das Tool für die Liveablaufverfolgung mit der jeweiligen Instanz verbunden oder von dieser getrennt ist.

Screenshot: Aufzeichnen von Ressourcenprotokollen mit dem Tool für die Liveablaufverfolgung.

Die vom Tool für die Liveablaufverfolgung aufgezeichneten Echtzeit-Ressourcenprotokolle enthalten ausführliche Informationen für die Problembehandlung.

Name Beschreibung
Zeit Protokollereigniszeit
Protokollebene Protokollereignisebene (Trace, Debug, Informational, Warning oder Error)
Name des Ereignisses Vorgangsname des Ereignisses.
Meldung Detaillierte Nachricht für das Ereignis
Exception Laufzeitausnahme des Azure Web PubSub-Diensts
Hub Benutzerdefinierter Hubname
Verbindungs-ID Identität der Verbindung.
Benutzer-ID Benutzeridentität
IP Client-IP-Adresse
Routenvorlage Routenvorlage der API
HTTP-Methode HTTP-Methode (POST, GET, PUT oder DELETE)
URL Uniform Resource Locator
Ablaufverfolgungs-ID Der eindeutige Bezeichner für den Aufruf
Statuscode HTTP-Antwortcode
Dauer Die Dauer zwischen Empfang und Verarbeitung der Anforderung
Headers Zusätzliche Informationen, die vom Client und vom Server mit einer HTTP-Anforderung oder -Antwort übergeben werden

Erfassen von Ressourcenprotokollen mit Azure Monitor

Aktivieren von Ressourcenprotokollen

Derzeit unterstützt Azure Web PubSub die Integration in Azure Storage.

  1. Öffnen Sie das Azure-Portal.

  2. Wählen Sie im Bereich Diagnoseeinstellungen Ihrer Azure Web PubSub-Dienstinstanz die Option + Diagnoseeinstellung hinzufügen aus.

    Screenshot: Anzeigen von Diagnoseeinstellungen und Erstellen einer neuen Einstellung.

  3. Geben Sie im Feld Name der Diagnoseeinstellung den Namen der Einstellung ein.

  4. Wählen Sie unter Kategoriedetails die benötigten Protokollkategorien aus.

  5. Wählen Sie unter Zieldetails die Option In ein Speicherkonto archivieren aus.

    Screenshot: Konfigurieren der Diagnoseeinstellung.

  6. Wählen Sie Speichern aus, um die Diagnoseeinstellung zu speichern.

    Hinweis

    Das Speicherkonto sollte sich in derselben Region wie der Azure Web PubSub-Dienst befinden.

Archivieren in einem Azure Storage-Konto

Die Protokolle werden in dem im Bereich Diagnoseeinstellung konfigurierten Speicherkonto gespeichert. Ein Container mit dem Namen insights-logs-<CATEGORY_NAME> wird automatisch erstellt, um Ressourcenprotokolle zu speichern. In dem Container werden Protokolle in der Datei resourceId=/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/XXXX/PROVIDERS/MICROSOFT.SIGNALRSERVICE/SIGNALR/XXX/y=YYYY/m=MM/d=DD/h=HH/m=00/PT1H.json gespeichert. Der Pfad setzt sich aus resource ID und Date Time zusammen. Die Protokolldateien werden anhand der hour aufgeteilt. Der Minutenwert ist immer m=00.

Alle Protokolle werden im JavaScript Object Notation (JSON)-Format gespeichert. Jeder Eintrag enthält Zeichenfolgenfelder im nachfolgend beschriebenen Format.

JSON-Zeichenfolgen in Archivprotokollen enthalten die Elemente, die in den folgenden Tabellen aufgeführt sind.

Format

Name Beschreibung
time Protokollereigniszeit
level Protokollereignisebene
resourceId Ressourcen-ID Ihrer Azure SignalR Service-Instanz
location Speicherort Ihrer Azure SignalR Service-Instanz
category Kategorie des Protokollereignisses.
operationName Vorgangsname des Ereignisses.
callerIpAddress IP-Adresse Ihres Servers oder Clients
properties Detaillierte Eigenschaften im Zusammenhang mit diesem Protokollereignis (siehe folgende Tabelle)

Eigenschaftentabelle

Name Beschreibung
collection Sammlung des Protokollereignisses (Connection, Authorization oder Throttling)
connectionId Identität der Verbindung.
userId Identität des Benutzers.
message Ausführliche Meldung des Protokollereignisses.
hub Benutzerdefinierter Hubname
routeTemplate Routenvorlage der API
httpMethod HTTP-Methode (POST, GET, PUT oder DELETE)
url Uniform Resource Locator
traceId Der eindeutige Bezeichner für den Aufruf
statusCode HTTP-Antwortcode
duration Die Dauer zwischen dem Empfang und der Verarbeitung der Anforderung
headers Zusätzliche Informationen, die vom Client und vom Server mit einer HTTP-Anforderung oder -Antwort übergeben werden

Es folgt ein Codebeispiel für eine JSON-Zeichenfolge in einem Archivierungsprotokoll:

{
  "properties": {
    "message": "Connection started",
    "collection": "Connection",
    "connectionId": "LW61bMG2VQLIMYIVBMmyXgb3c418200",
    "userId": null
  },
  "operationName": "ConnectionStarted",
  "category": "ConnectivityLogs",
  "level": "Informational",
  "callerIpAddress": "167.220.255.79",
  "resourceId": "/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/MYGROUP/PROVIDERS/MICROSOFT.SIGNALRSERVICE/WEBPUBSUB/MYWEBPUBSUB",
  "time": "2021-09-17T05:25:05Z",
  "location": "westus"
}

Archivieren in Azure Log Analytics

So senden Sie Protokolle an einen Log Analytics-Arbeitsbereich:

  1. Wählen Sie auf der Seite Diagnoseeinstellung unter Zieldetails die Option An Log Analytics-Arbeitsbereich senden aus.

  2. Wählen Sie unter Abonnement das gewünschte Abonnement aus.

  3. Wählen Sie Log Analytics-Arbeitsbereich als Ziel für die Protokolle aus.

Führen Sie die folgenden Schritte aus, um die Ressourcenprotokolle anzuzeigen:

  1. Wählen Sie in Ihrem Log Analytics-Zielarbeitsbereich Protokolle aus.

    Screenshot eines Log Analytics-Menüelements.

  2. Geben Sie zum Abfragen des Protokolls WebPubSubConnectivity, WebPubSubMessaging oder WebPubSubHttpRequest ein, und wählen Sie dann den Zeitbereich aus. Informationen zu komplexeren Abfragen finden Sie unter Erste Schritte mit Log Analytics in Azure Monitor.

    Screenshot einer Abfrage in Log Analytics.

Führen Sie die folgenden Schritte aus, um eine Beispielabfrage für SignalR Service zu verwenden:

  1. Wählen Sie in Ihrem Log Analytics-Zielarbeitsbereich Protokolle aus.

  2. Klicken Sie auf Abfragen, um den Abfrage-Explorer zu öffnen.

  3. Wählen Sie Ressourcentyp aus, um Beispielabfragen nach Ressourcentyp zu gruppieren.

  4. Klicken Sie auf Ausführen, um das Skript auszuführen.

    Screenshot: Beispielabfrage in Log Analytics.

Archivprotokollspalten enthalten Elemente, die in der folgenden Tabelle aufgeführt sind:

Name Beschreibung
TimeGenerated Protokollereigniszeit
Collection Sammlung des Protokollereignisses (Connection, Authorization und Throttling)
OperationName Vorgangsname des Ereignisses.
Location Speicherort Ihrer Azure SignalR Service-Instanz
Level Protokollereignisebene
CallerIpAddress IP-Adresse Ihres Servers/Clients.
Message Ausführliche Meldung des Protokollereignisses.
UserId Identität des Benutzers.
ConnectionId Identität der Verbindung.
ConnectionType Typ der Verbindung (Server, eine Verbindung von der Serverseite; und Client, eine Verbindung von der Clientseite)
TransportType Transporttyp der Verbindung (Websockets, ServerSentEvents und LongPolling)

Behandeln von Problemen anhand von Protokollen

Wenn die Anzahl der Verbindungen unerwartet steigt oder sinkt, können Sie das Problem mithilfe von Ressourcenprotokollen beheben. Typische Probleme sind unerwartete Änderungen bei der Anzahl der Verbindungen, das Erreichen von Verbindungslimits sowie Autorisierungsfehler.

Unerwartete Trennungsereignisse

Wenn eine Verbindung getrennt wird, zeichnen die Ressourcenprotokolle das Trennungsereignis mit ConnectionAborted oder ConnectionEnded in operationName auf.

Der Unterschied zwischen ConnectionAborted und ConnectionEnded besteht darin, dass ConnectionEnded eine erwartete Trennung ist, die client- oder serverseitig ausgelöst wird. Im Gegensatz dazu bezieht sich ConnectionAborted in der Regel auf ein Ereignis, bei dem eine Verbindung unerwartet abbricht. Der Grund für die Trennung wird in message angegeben.

In der folgenden Tabelle sind die Gründe für eine unerwartete Trennung aufgeführt.

Ursache BESCHREIBUNG
Anzahl der Verbindungen erreicht das Limit. Die Anzahl der Verbindungen erreicht das Limit Ihres aktuellen Tarifs. Erwägen Sie eine Skalierung der Diensteinheit.
Erneutes Laden des Diensts, Wiederherstellen der Verbindung. Der Azure Web PubSub-Dienst wird neu geladen. Sie müssen Ihren eigenen Mechanismus für das Wiederverbinden implementieren oder manuell eine neue Verbindung mit dem Azure Web PubSub-Dienst herstellen.
Vorübergehender interner Serverfehler. Ein vorübergehender Fehler tritt im Azure Web PubSub-Dienst auf. Die Wiederherstellung sollte automatisch erfolgen.

Unerwarteter Anstieg der Verbindungen

Wenn die Anzahl der Clientverbindungen unerwartet zunimmt, sollten Sie die folgenden Schritte ausführen. Filtern Sie zunächst die überflüssigen Verbindungen, und fügen Sie Ihrer Testclientverbindung eine eindeutige Testbenutzer-ID hinzu. Überprüfen Sie dann die Ressourcenprotokolle. Wenn mehrere Clientverbindungen dieselbe Testbenutzer-ID oder IP-Adresse aufweisen, werden wahrscheinlich auf Clientseite mehr Verbindungen hergestellt als erwartet. Überprüfen Sie Ihren Clientcode, um die Quelle der zusätzlichen Verbindungen zu finden.

Autorisierungsfehler

Wenn bei Clientanforderungen 401 – Nicht autorisiert zurückgegeben wird, überprüfen Sie Ihre Ressourcenprotokolle. Wenn Sie Failed to validate audience. Expected Audiences: <valid audience>. Actual Audiences: <actual audience> finden, bedeutet dies, dass alle Zielgruppen in Ihrem Zugriffstoken ungültig sind. Versuchen Sie, die im Protokoll vorgeschlagenen gültigen Zielgruppen zu verwenden.

Drosselung

Wenn Sie feststellen, dass Sie keine Clientverbindungen mit dem Azure Web PubSub-Dienst herstellen können, überprüfen Sie Ihre Ressourcenprotokolle. Wenn im Ressourcenprotokoll Connection count reaches limit angezeigt wird, haben Sie zu viele Verbindungen mit dem Azure Web PubSub-Dienst hergestellt und das Limit für die Verbindungsanzahl erreicht. Erwägen Sie die Hochskalierung Ihrer Azure Web PubSub-Dienstinstanz.

Wenn Message count reaches limit im Ressourcenprotokoll angezeigt wird und Sie die Stufe "Frei" verwenden, bedeutet dies, dass Sie das Kontingent von Nachrichten verwendet haben. Wenn Sie weitere Nachrichten senden möchten, sollten Sie ihre Azure Web PubSub-Dienstinstanz auf die Standardebene ändern. Weitere Informationen finden Sie in der Preisübersicht für Azure Web PubSub.