Problembehandlung mithilfe von Ressourcenprotokollen

Diese Schrittanleitung enthält eine Übersicht über Azure Web PubSub-Ressourcenprotokolle und einige 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 gibt drei Arten von Ressourcenprotokollen: Konnektivität, Messaging und HTTP-Anforderungen.

  • Konnektivitätsprotokolle enthalten detaillierte Informationen für Azure Web PubSub-Hubverbindungen. Hierzu gehören beispielsweise grundlegende Informationen (Benutzer-ID, Verbindungs-ID usw.) und Ereignisinformationen (Verbinden, Trennen usw.).
  • Messagingprotokolle bieten Ablaufverfolgungsinformationen für die Azure Web PubSub-Hubnachrichten, die über den Azure Web PubSub-Dienst empfangen und gesendet werden. Zum Beispiel die Ablaufverfolgungs-ID und der Nachrichtentyp der Nachricht.
  • HTTP-Anforderungsprotokolle stellen Ablaufverfolgungsinformationen für HTTP-Anforderungen an den Azure Web PubSub-Dienst bereit. z. B. die HTTP-Methode und den Statuscode. In der Regel wird die HTTP-Anforderung im Protokoll erfasst, wenn sie beim Dienst eingeht oder ihn verlässt.

Erfassen von Ressourcenprotokollen mithilfe des Live-Ablaufverfolgungstools

Das Live-Ablaufverfolgungstool des Azure Web PubSub-Diensts verfügt über die Möglichkeit, Ressourcenprotokolle in Echtzeit zu sammeln, was für die Problembehandlung in Ihrer Entwicklungsumgebung hilfreich ist. Das Live-Ablaufverfolgungstool kann Verbindungsprotokolle, Messagingprotokolle und HTTP-Anforderungsprotokolle erfassen.

Hinweis

Die folgenden Überlegungen gelten für die Verwendung des Live-Ablaufverfolgungstools:

  • Die vom Liveablaufverfolgungs-Tool aufgezeichneten Echtzeit-Ressourcenprotokolle werden als Nachrichten (ausgehender Datenverkehr) abgerechnet.
  • Das Live-Ablaufverfolgungstool 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.
  • 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.

Starten des Liveablaufverfolgungs-Tools

Hinweis

Wenn Sie zugriffstasten aktivieren, verwenden Sie zugriffstoken zum Authentifizieren des Live-Ablaufverfolgungstools. Andernfalls verwenden Sie Microsoft Entra ID zum Authentifizieren des Live-Ablaufverfolgungstools. Sie können überprüfen, ob Sie die Zugriffstaste in Azure-Portal auf der Seite "Schlüssel" Des SignalR-Diensts aktivieren oder nicht.

Schritte für aktivierte Zugriffstasten

  1. Wechseln Sie zum Azure-Portal und Ihrer SignalR Service-Seite.

  2. Wählen Sie im Menü links unter Überwachung die 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 of launching the live trace tool.

Schritte für deaktivierte Zugriffstaste

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

  1. Wechseln Sie zum Azure-Portal und Ihrer SignalR Service-Seite.
  2. Wählen Sie die Option Zugriffssteuerung (IAM) aus.
  3. Klicken Sie auf der neuen Seite auf +Hinzufügen, und klicken Sie dann auf "Rollenzuweisung".
  4. Konzentrieren Sie sich auf der neuen Seite auf der Registerkarte "Auftragsfunktionsrollen", "Rolle "SignalR-Dienstbesitzer auswählen", und klicken Sie dann auf "Weiter".
  5. Klicken Sie auf der Seite "Mitglieder" auf "+Mitglieder auswählen".
  6. Suchen Sie im neuen Bereich mitglieder, und wählen Sie sie aus, und klicken Sie dann auf "Auswählen".
  7. Klicken Sie auf 'Überprüfen+Zuweisen', und warten Sie auf die Benachrichtigung über den Abschluss.

Live-Ablaufverfolgungstool besuchen

  1. Wechseln Sie zum Azure-Portal und Ihrer SignalR Service-Seite.

  2. Wählen Sie im Menü links unter Überwachung die 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 of launching the live trace tool.

Anmelden mit Ihrem Microsoft-Konto

  1. Das Live-Ablaufverfolgungstool öffnet ein Microsoft-Anmeldefenster. Wenn kein Fenster angezeigt wird, überprüfen Und zulassen Sie Popupfenster in Ihrem Browser.
  2. Warten Sie, bis "Bereit" in der Statusleiste angezeigt wird.

Aufzeichnen der Ressourcenprotokolle

Das Tool zur Liveablaufverfolgung bietet Funktionen, mit denen Sie die Ressourcenprotokolle zur Problembehandlung erfassen können.

  • Aufzeichnen: Beginnen Sie mit dem Aufzeichnen der Echtzeit-Ressourcenprotokolle über die Azure Web PubSub-Instanz mit dem Liveablaufverfolgungs-Tool.
  • Clear (Löschen): Löschen Sie die aufgezeichneten Echtzeit-Ressourcenprotokolle.
  • Protokollfilter: Im Liveablaufverfolgungs-Tool können Sie die aufgezeichneten Echtzeit-Ressourcenprotokolle nach einem bestimmten Schlüsselwort filtern. Die allgemeinen Trennzeichen (z. B. Leerzeichen, Komma, Semikolon usw.) werden als Teil des Schlüsselworts behandelt.
  • Status: Der Status zeigt an, ob das Liveablaufverfolgungs-Tool mit der jeweiligen Instanz verbunden oder von dieser getrennt ist.

Screenshot of capturing resource logs with live trace tool.

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

Name BESCHREIBUNG
Time Protokollereigniszeit
Protokollebene Folgende Protokollereignisebenen sind möglich: „Ablaufverfolgung“, „Debuggen“, „Information“, „Warnung“, „Fehler“.
Veranstaltungsname Vorgangsname des Ereignisses.
`Message` Detaillierte Nachricht für das Ereignis
Ausnahme Die Laufzeitausnahme des Azure Web PubSub-Diensts
Hub Benutzerdefinierter Hubname
Verbindungs-ID Identität der Verbindung.
Benutzerkennung Benutzeridentität
IP Client-IP-Adresse
Routenvorlage Die Routenvorlage der API
HTTP-Methode Die HTTP-Methode (POST/GET/PUT/DELETE)
URL Der Uniform Resource Locator
Ablaufverfolgungs-ID Der eindeutige Bezeichner für den Aufruf
Statuscode Der HTTP-Antwortcode
Duration Die Dauer zwischen Empfang der Anforderung und Verarbeitung der Anforderung
Header Die zusätzlichen 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. Navigieren Sie zum Azure-Portal.

  2. Wählen Sie auf der Seite Diagnoseeinstellungen Ihrer Azure Web PubSub-Dienstinstanz die Option + Diagnoseeinstellung hinzufügen aus. Screenshot of viewing diagnostic settings and create a new one

  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. Aktivieren Sie unter Zieldetails das Kontrollkästchen bei In ein Speicherkonto archivieren.

    Screenshot of configuring diagnostic setting detail

  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 ein Azure Storage-Konto

Protokolle werden im Speicherkonto gespeichert, das im Bereich Diagnoseeinstellungen konfiguriert ist. 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 im Archivprotokoll enthalten Elemente, die in den folgenden Tabellen aufgeführt sind:

Format

Name BESCHREIBUNG
time Protokollereigniszeit
level Protokollereignisebene
resourceId Ressourcen-ID Ihres Azure SignalR Service.
location Standort Ihres Azure SignalR Service.
category Kategorie des Protokollereignisses.
operationName Vorgangsname des Ereignisses.
callerIpAddress IP-Adresse Ihres Servers oder Clients
properties Detaillierte Eigenschaften im Zusammenhang mit diesem Protokollereignis. Weitere Details finden Sie in der unten stehenden Tabelle.

Eigenschaftentabelle

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

Es folgt ein Codebeispiel für eine JSON-Zeichenfolge im 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 das Abonnement aus, das Sie verwenden möchten.
  3. Wählen Sie den Log Analytics-Arbeitsbereich aus, der als Ziel für die Protokolle verwendet werden soll.

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

  1. Wählen Sie Logs in Ihrem Ziel-Log Analytics.

    Log Analytics menu item

  2. Geben Sie WebPubSubConnectivity, WebPubSubMessaging oder WebPubSubHttpRequest ein, und wählen Sie dann den Zeitraum für die Protokollabfrage aus. Informationen zu komplexeren Abfragen finden Sie unter Erste Schritte mit Log Analytics in Azure Monitor.

    Query log in Log Analytics

Führen Sie die folgenden Schritte aus, um eine Beispielabfrage für den SignalR-Dienst zu verwenden.

  1. Wählen Sie Logs in Ihrem Ziel-Log Analytics.
  2. Wählen Sie Queries zum Öffnen des Abfrage-Explorers aus.
  3. Wählen Sie Resource type, um Beispielabfragen im Ressourcentyp zu gruppieren.
  4. Wählen Sie Run aus, um das Skript auszuführen. Sample query in Log Analytics

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

Name Beschreibung
TimeGenerated Protokollereigniszeit
Collection Sammlung des Protokollereignisses. Zulässige Werte sind Connection, Authorization und Throttling.
Vorgangsname Vorgangsname des Ereignisses.
Standort Standort Ihres Azure SignalR Service.
Ebene 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. Zulässige Werte sind: Server | Client. Server: serverseitige Verbindung; Client: clientseitige Verbindung
TransportType Transporttyp der Verbindung. Zulässige Werte sind: Websockets | ServerSentEvents | LongPolling.

Problembehandlung mit den Ressourcenprotokollen

Wenn Sie unerwartete Änderungen an der Anzahl der Verbindungen feststellen – sei es eine Zu- oder eine Abnahme –, können Sie Ressourcenprotokolle nutzen, um das Problem zu beheben. Typische, häufig auftretende Probleme sind unerwartete Änderungen bei der Anzahl der Verbindungen, das Erreichen von Verbindungsgrenzwerten und fehlgeschlagene Autorisierungen.

Unerwartete Änderungen an der Anzahl von Verbindungen

Unerwartete Verbindungsunterbrechungen

Wenn eine Verbindung getrennt wird, zeichnet 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 von client- oder serverseitiger Seite ausgelöst wird. Während die ConnectionAborted in der Regel ein unerwartetes Verbindungsabbruchereignis ist und der Grund für die Trennung in message bereitgestellt wird.

Die Gründe für Abbrüche sind in der folgenden Tabelle aufgeführt:

`Reason` BESCHREIBUNG
Anzahl der Verbindungen erreicht das Limit. Die Anzahl der Verbindungen erreicht das Limit Ihres aktuellen Tarifs. Erwägen Sie, die Diensteinheit hochzuskalieren.
Erneutes Laden des Diensts, Wiederherstellen der Verbindung. 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; sollte automatisch wiederhergestellt werden.

Unerwarteter Anstieg der Verbindungen

Wenn die Anzahl der Clientverbindungen unerwartet zunimmt, müssen Sie zunächst die überflüssigen Verbindungen herausfiltern. Sie können Ihrer Testclientverbindung eine eindeutige Testbenutzer-ID hinzufügen. Überprüfen Sie dann die Ressourcenprotokolle; Wenn mehr als eine Clientverbindung dieselbe Testbenutzer-ID oder IP aufweist, erstellt der Client wahrscheinlich mehr Verbindungen als erwartet. Überprüfen Sie Ihren Clientcode, um die Quelle der zusätzlichen Verbindungen zu finden.

Autorisierungsfehler

Wenn Sie bei Clientanforderungen die Rückgabe „401 – Nicht autorisiert“ erhalten, ü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 der 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 unter Azure Web PubSub-Dienst – Preise.