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
Wechseln Sie zum Azure-Portal und zu Ihrem SignalR Service-Bereich.
Wählen Sie im Dienstmenü unter Überwachung die Option Einstellungen der Live-Ablaufverfolgung aus.
Wählen Sie Liveablaufverfolgung aktivieren aus.
Wählen Sie die Schaltfläche Speichern aus. Es dauert einen Moment, bis die Änderungen wirksam werden.
Wenn die Aktualisierung abgeschlossen ist, wählen Sie Tool für die Liveablaufverfolgung öffnen aus.
Öffnen des Tools für die Liveablaufverfolgung, wenn der Zugriffsschlüssel deaktiviert ist
Zuweisen der API-Berechtigung zum Live-Ablaufverfolgungstool für sich selbst
Wechseln Sie zum Azure-Portal und zu Ihrem SignalR Service-Bereich.
Wählen Sie Zugriffssteuerung (IAM) aus.
Wählen Sie +Hinzufügen und dann Rollenzuweisung aus.
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.
Klicken Sie im Bereich Mitglieder auf +Mitglieder auswählen.
Suchen Sie nach Mitgliedern, wählen Sie sie aus, und klicken Sie dann auf Auswählen.
Wählen Sie Überprüfen und zuweisen aus, und warten Sie auf die Abschlussbenachrichtigung.
Starten des Tools für die Liveablaufverfolgung
Wechseln Sie zum Azure-Portal und zu Ihrem SignalR Service-Bereich.
Wählen Sie im Dienstmenü unter Überwachung die Option Einstellungen der Live-Ablaufverfolgung aus.
Wählen Sie Liveablaufverfolgung aktivieren aus.
Wählen Sie die Schaltfläche Speichern aus. Es dauert einen Moment, bis die Änderungen wirksam werden.
Wenn die Aktualisierung abgeschlossen ist, wählen Sie Tool für die Liveablaufverfolgung öffnen aus.
Anmelden mit Ihrem Microsoft-Konto
Das Tool für die Liveablaufverfolgung öffnet ein Microsoft-Anmeldefenster. Wenn kein Fenster angezeigt wird, erlauben Sie Popupfenster in Ihren Browsereinstellungen.
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.
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.
Öffnen Sie das Azure-Portal.
Wählen Sie im Bereich Diagnoseeinstellungen Ihrer Azure Web PubSub-Dienstinstanz die Option + Diagnoseeinstellung hinzufügen aus.
Geben Sie im Feld Name der Diagnoseeinstellung den Namen der Einstellung ein.
Wählen Sie unter Kategoriedetails die benötigten Protokollkategorien aus.
Wählen Sie unter Zieldetails die Option In ein Speicherkonto archivieren aus.
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:
Wählen Sie auf der Seite Diagnoseeinstellung unter Zieldetails die Option An Log Analytics-Arbeitsbereich senden aus.
Wählen Sie unter Abonnement das gewünschte Abonnement aus.
Wählen Sie Log Analytics-Arbeitsbereich als Ziel für die Protokolle aus.
Führen Sie die folgenden Schritte aus, um die Ressourcenprotokolle anzuzeigen:
Wählen Sie in Ihrem Log Analytics-Zielarbeitsbereich Protokolle aus.
Geben Sie zum Abfragen des Protokolls
WebPubSubConnectivity
,WebPubSubMessaging
oderWebPubSubHttpRequest
ein, und wählen Sie dann den Zeitbereich aus. Informationen zu komplexeren Abfragen finden Sie unter Erste Schritte mit Log Analytics in Azure Monitor.
Führen Sie die folgenden Schritte aus, um eine Beispielabfrage für SignalR Service zu verwenden:
Wählen Sie in Ihrem Log Analytics-Zielarbeitsbereich Protokolle aus.
Klicken Sie auf Abfragen, um den Abfrage-Explorer zu öffnen.
Wählen Sie Ressourcentyp aus, um Beispielabfragen nach Ressourcentyp zu gruppieren.
Klicken Sie auf Ausführen, um das Skript auszuführen.
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.