Rozwiązywanie problemów z dziennikami zasobów
Ten przewodnik z instrukcjami zawiera omówienie dzienników zasobów usługi Azure Web PubSub i porady dotyczące używania dzienników do rozwiązywania problemów. Dzienniki można używać do identyfikacji problemów, śledzenia połączeń, śledzenia komunikatów, śledzenia żądań HTTP i analizy.
Co to są dzienniki zasobów?
Istnieją trzy typy dzienników zasobów:
- Dzienniki łączności zawierają szczegółowe informacje dotyczące połączeń usługi Azure Web PubSub Hub. Mogą one zawierać podstawowe informacje, takie jak identyfikator użytkownika i identyfikator połączenia, lub informacje o zdarzeniach, takie jak łączenie i rozłączanie.
- Dzienniki obsługi komunikatów udostępniają informacje o śledzeniu komunikatów centrum, które są wysyłane lub odbierane za pośrednictwem usługi Azure Web PubSub, takie jak identyfikator śledzenia lub typ komunikatu.
- Dzienniki żądań HTTP udostępniają informacje o śledzeniu żądań HTTP do usługi Azure Web PubSub, takiej jak metoda HTTP lub kod stanu. Zazwyczaj żądanie HTTP jest rejestrowane po nadejściu usługi lub odejściu z niej.
Przechwytywanie dzienników zasobów przy użyciu narzędzia do śledzenia na żywo
Narzędzie do śledzenia na żywo w usłudze Azure Web PubSub może zbierać dzienniki zasobów w czasie rzeczywistym, co jest pomocne w rozwiązywaniu problemów w środowisku deweloperów. Narzędzie do śledzenia na żywo może przechwytywać dzienniki łączności, dzienniki obsługi komunikatów i dzienniki żądań HTTP.
Podczas korzystania z narzędzia do śledzenia na żywo należy wziąć pod uwagę następujące czynniki:
- Dzienniki zasobów czasu rzeczywistego przechwytywane przez narzędzie do śledzenia na żywo są rozliczane jako komunikaty (ruch wychodzący).
- Wystąpienie warstwy Bezpłatna usługi Azure Web PubSub ma dzienny limit 20 000 komunikatów (ruch wychodzący). Możesz nieoczekiwanie osiągnąć dzienny limit przy użyciu funkcji śledzenia na żywo.
- Narzędzie do śledzenia na żywo nie obsługuje obecnie autoryzacji firmy Microsoft Entra. Aby używać śledzenia na żywo, musisz włączyć klucze dostępu. W obszarze Ustawienia wybierz pozycję Klucze, a następnie włącz klucz dostępu.
Uruchamianie narzędzia do śledzenia na żywo
Po włączeniu klucza dostępu należy użyć tokenu dostępu do uwierzytelniania narzędzia do śledzenia na żywo. W przeciwnym razie używasz identyfikatora Entra firmy Microsoft do uwierzytelniania narzędzia do śledzenia na żywo. Jeśli klucz dostępu jest włączony, przejdź do okienka Klucze w wystąpieniu usługi Azure SignalR Service w witrynie Azure Portal.
Otwórz ślad na żywo po włączeniu klucza dostępu
Przejdź do witryny Azure Portal i okienka usługi SignalR Service.
W menu usługi w obszarze Monitorowanie wybierz pozycję Ustawienia śledzenia na żywo.
Wybierz pozycję Włącz śledzenie na żywo.
Wybierz przycisk zapisywania. Wprowadzenie zmian trwa chwilę.
Po zakończeniu aktualizacji wybierz pozycję Otwórz narzędzie do śledzenia na żywo.
Otwórz narzędzie do śledzenia na żywo, gdy klucz dostępu jest wyłączony
Przypisywanie uprawnień interfejsu API narzędzia do śledzenia na żywo do siebie
Przejdź do witryny Azure Portal i okienka usługi SignalR Service.
Wybierz pozycję Kontrola dostępu (IAM).
Wybierz pozycję +Dodaj , a następnie wybierz pozycję Przypisanie roli.
Na karcie Role funkcji zadania wybierz rolę Właściciel usługi SignalR Service, a następnie wybierz pozycję Dalej.
W okienku Członkowie kliknij pozycję +Wybierz członków.
Wyszukaj i wybierz członków, a następnie kliknij pozycję Wybierz.
Wybierz pozycję Przejrzyj i przypisz i poczekaj na powiadomienie o zakończeniu.
Włączanie narzędzia do śledzenia na żywo
Przejdź do witryny Azure Portal i okienka usługi SignalR Service.
W menu usługi w obszarze Monitorowanie wybierz pozycję Ustawienia śledzenia na żywo.
Wybierz pozycję Włącz śledzenie na żywo.
Wybierz przycisk zapisywania. Wprowadzenie zmian trwa chwilę.
Po zakończeniu aktualizacji wybierz pozycję Otwórz narzędzie do śledzenia na żywo.
Zaloguj się za pomocą konta Microsoft
Narzędzie do śledzenia na żywo powoduje otwarcie okna logowania firmy Microsoft. Jeśli okno nie zostanie otwarte, zezwól na wyskakujące okna w ustawieniach przeglądarki.
Poczekaj na wyświetlenie pozycji Gotowe na pasku stanu.
Przechwytywanie dzienników zasobów
Narzędzie do śledzenia na żywo może pomóc w przechwyceniu dzienników zasobów na potrzeby rozwiązywania problemów.
- Przechwytywanie rozpoczyna przechwytywanie dzienników zasobów w czasie rzeczywistym z usługi Azure Web PubSub.
- Wyczyść czyszczenie przechwyconych dzienników zasobów w czasie rzeczywistym.
- Filtr dzienników filtruje przechwycone dzienniki zasobów w czasie rzeczywistym za pomocą jednego określonego słowa kluczowego. Typowe separatory, takie jak spacja, przecinek i średnik, są traktowane jako część słowa kluczowego.
- Stan pokazuje, czy narzędzie do śledzenia na żywo jest połączone, czy odłączone od określonego wystąpienia.
Dzienniki zasobów w czasie rzeczywistym przechwycone przez narzędzie do śledzenia na żywo zawierają szczegółowe informacje dotyczące rozwiązywania problemów.
Nazwa/nazwisko | Opis |
---|---|
Czas | Czas zdarzenia dziennika |
Poziom dziennika | Poziom zdarzeń dziennika (Trace , Debug , Warning Informational lub Error ) |
Nazwa zdarzenia | Nazwa operacji zdarzenia |
Wiadomość | Szczegółowy komunikat dotyczący zdarzenia |
Wyjątek | Wyjątek środowiska uruchomieniowego usługi Azure Web PubSub |
Centrum | Nazwa centrum zdefiniowanego przez użytkownika |
Identyfikator połączenia | Tożsamość połączenia |
Identyfikator użytkownika | Tożsamość użytkownika |
Adres IP | Adres IP klienta |
Szablon trasy | Szablon trasy interfejsu API |
HTTP, metoda | Metoda HTTP (POST , GET , PUT lub DELETE ) |
Adres URL | Jednolity lokalizator zasobów |
Identyfikator śledzenia | Unikatowy identyfikator wywołania |
Kod stanu | Kod odpowiedzi HTTP |
Czas trwania | Czas trwania między odbieraniem żądania a przetwarzaniem żądania |
Nagłówki | Dodatkowe informacje przekazywane przez klienta i serwer z żądaniem HTTP lub odpowiedzią |
Przechwytywanie dzienników zasobów za pomocą usługi Azure Monitor
Włączanie dzienników zasobów
Obecnie usługa Azure Web PubSub obsługuje integrację z usługą Azure Storage.
Przejdź do portalu Azure Portal.
W okienku Ustawienia diagnostyczne wystąpienia usługi Azure Web PubSub wybierz pozycję + Dodaj ustawienie diagnostyczne.
W polu Nazwa ustawienia diagnostycznego wprowadź nazwę ustawienia.
W obszarze Szczegóły kategorii wybierz dowolną potrzebną kategorię dziennika.
W obszarze Szczegóły miejsca docelowego wybierz pozycję Archiwum na koncie magazynu.
Wybierz pozycję Zapisz , aby zapisać ustawienie diagnostyczne.
Uwaga
Konto magazynu powinno znajdować się w tym samym regionie co usługa Azure Web PubSub.
Archiwizowanie na koncie usługi Azure Storage
Dzienniki są przechowywane na koncie magazynu skonfigurowanym w okienku ustawienia diagnostyki. Kontener o nazwie insights-logs-<CATEGORY_NAME>
jest tworzony automatycznie do przechowywania dzienników zasobów. W kontenerze dzienniki są przechowywane w pliku 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
. Ścieżka jest łączona przez resource ID
i Date Time
. Pliki dziennika są dzielone na .hour
Wartość minuty to zawsze m=00
.
Wszystkie dzienniki są przechowywane w formacie JavaScript Object Notation (JSON). Każdy wpis zawiera pola ciągów, które używają formatu opisanego w poniższych sekcjach.
Ciągi JSON w dziennikach archiwum zawierają elementy wymienione w poniższych tabelach.
Formatuj
Nazwa/nazwisko | opis |
---|---|
time |
Czas zdarzenia dziennika |
level |
Poziom zdarzeń dziennika |
resourceId |
Identyfikator zasobu wystąpienia usługi Azure SignalR Service |
location |
Lokalizacja wystąpienia usługi Azure SignalR Service |
category |
Kategoria zdarzenia dziennika |
operationName |
Nazwa operacji zdarzenia |
callerIpAddress |
Adres IP serwera lub klienta |
properties |
Szczegółowe właściwości związane z tym zdarzeniem dziennika (zobacz poniższą tabelę) |
Tabela właściwości
Nazwa/nazwisko | opis |
---|---|
collection |
Kolekcja zdarzenia dziennika (Connection Authorization lub Throttling ) |
connectionId |
Tożsamość połączenia |
userId |
Tożsamość użytkownika |
message |
Szczegółowy komunikat zdarzenia dziennika |
hub |
Nazwa centrum zdefiniowanego przez użytkownika |
routeTemplate |
Szablon trasy interfejsu API |
httpMethod |
Metoda HTTP (POST , GET , PUT lub DELETE ) |
url |
Jednolity lokalizator zasobów |
traceId |
Unikatowy identyfikator wywołania |
statusCode |
Kod odpowiedzi HTTP |
duration |
Czas trwania między odebraniem i przetworzeniem żądania |
headers |
Dodatkowe informacje przekazywane przez klienta i serwer z żądaniem HTTP lub odpowiedzią |
Poniższy kod jest przykładem ciągu JSON w dzienniku archiwum:
{
"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"
}
Archiwizowanie w usłudze Azure Log Analytics
Aby wysyłać dzienniki do obszaru roboczego usługi Log Analytics:
W okienku Ustawienia diagnostyczne w obszarze Szczegóły miejsca docelowego wybierz pozycję Wyślij do obszaru roboczego usługi Log Analytics.
W polu Subskrypcja wybierz subskrypcję, która ma być używana.
W obszarze docelowym dzienników wybierz pozycję Obszar roboczy usługi Log Analytics.
Aby wyświetlić dzienniki zasobów, wykonaj następujące kroki:
Wybierz pozycję Dzienniki w docelowym obszarze roboczym usługi Log Analytics.
Aby wykonać zapytanie dotyczące dziennika, wprowadź
WebPubSubConnectivity
,WebPubSubMessaging
lubWebPubSubHttpRequest
, a następnie wybierz zakres czasu. Aby uzyskać zaawansowane zapytania, zobacz Rozpoczynanie pracy z usługą Log Analytics w usłudze Azure Monitor.
Aby użyć przykładowego zapytania dla usługi SignalR, wykonaj następujące kroki:
Wybierz pozycję Dzienniki w docelowym obszarze roboczym usługi Log Analytics.
Wybierz pozycję Zapytania , aby otworzyć eksploratora zapytań.
Wybierz pozycję Typ zasobu, aby zgrupować przykładowe zapytania według typu zasobu.
Wybierz pozycję Uruchom , aby uruchomić skrypt.
Kolumny dziennika archiwum zawierają elementy wymienione w poniższej tabeli.
Nazwa/nazwisko | opis |
---|---|
TimeGenerated |
Czas zdarzenia dziennika |
Collection |
Kolekcja zdarzeń dziennika (Connection , Authorization i Throttling ) |
OperationName |
Nazwa operacji zdarzenia |
Location |
Lokalizacja wystąpienia usługi Azure SignalR Service |
Level |
Poziom zdarzeń dziennika |
CallerIpAddress |
Adres IP serwera/klienta |
Message |
Szczegółowy komunikat zdarzenia dziennika |
UserId |
Tożsamość użytkownika |
ConnectionId |
Tożsamość połączenia |
ConnectionType |
Typ połączenia (Server połączenie po stronie serwera i Client , połączenie po stronie klienta) |
TransportType |
Typ transportu połączenia (Websockets , ServerSentEvents , i LongPolling ) |
Rozwiązywanie problemów przy użyciu dzienników zasobów
Jeśli znajdziesz nieoczekiwane wzrosty lub spadki liczby połączeń, możesz rozwiązać ten problem przy użyciu dzienników zasobów. Potencjalne problemy obejmują nieoczekiwane zmiany liczby połączeń, połączenia osiągające limity połączeń i niepowodzenie autoryzacji.
Nieoczekiwane zdarzenia rozłączenia
Jeśli połączenie zostanie rozłączone, dzienniki zasobów rejestrują zdarzenie rozłączenia z elementem ConnectionAborted
lub ConnectionEnded
w programie operationName
.
Różnica między elementami ConnectionAborted
i ConnectionEnded
polega ConnectionEnded
na oczekiwanym rozłączeniu wyzwalanym przez klienta lub po stronie serwera. Natomiast zwykle odnosi się do zdarzenia, ConnectionAborted
w którym połączenie nieoczekiwanie spada, a przyczyna rozłączenia jest podana w elemecie message
.
W poniższej tabeli wymieniono przyczyny nieoczekiwanego rozłączenia.
Przyczyna | opis |
---|---|
Liczba połączeń osiąga limit | Liczba połączeń osiąga limit bieżącej warstwy cenowej. Rozważ skalowanie w górę jednostki usługi. |
Ponowne ładowanie usługi, ponowne łączenie | Usługa Azure Web PubSub jest ładowana ponownie. Musisz zaimplementować własny mechanizm ponownego łączenia lub ręcznie ponownie nawiązać połączenie z usługą Azure Web PubSub. |
Wewnętrzny błąd przejściowy serwera | W usłudze Azure Web PubSub występuje błąd przejściowy. Odzyskiwanie powinno być automatyczne. |
Nieoczekiwany wzrost liczby połączeń
W przypadku nieoczekiwanego zwiększenia liczby połączeń klienckich należy wykonać następujące kroki. Najpierw odfiltruj zbędne połączenia i dodaj unikatowy identyfikator użytkownika testowego do testowego połączenia klienta. Następnie sprawdź dzienniki zasobów. Jeśli zauważysz, że więcej niż jedno połączenie klienckie ma ten sam testowy identyfikator użytkownika lub adres IP, prawdopodobnie klient tworzy więcej połączeń niż oczekiwano. Sprawdź kod klienta, aby znaleźć źródło dodatkowych połączeń.
Błąd autoryzacji
Jeśli otrzymasz komunikat 401 Brak autoryzacji zwrócony dla żądań klientów, sprawdź dzienniki zasobów. Jeśli znajdziesz Failed to validate audience. Expected Audiences: <valid audience>. Actual Audiences: <actual audience>
wartość , oznacza to, że wszystkie grupy odbiorców w tokenie dostępu są nieprawidłowe. Spróbuj użyć prawidłowych odbiorców sugerowanych w dzienniku.
Ograniczanie przepływności
Jeśli okaże się, że nie możesz nawiązać połączeń klienta z usługą Azure Web PubSub, sprawdź dzienniki zasobów. Jeśli widzisz Connection count reaches limit
w dzienniku zasobów, ustanowiono zbyt wiele połączeń z usługą Azure Web PubSub i osiągnięto limit liczby połączeń. Rozważ skalowanie w górę wystąpienia usługi Azure Web PubSub.
Jeśli widzisz Message count reaches limit
w dzienniku zasobów i używasz warstwy Bezpłatna, oznacza to, że użyto limitu przydziału komunikatów. Jeśli chcesz wysłać więcej komunikatów, rozważ zmianę wystąpienia usługi Azure Web PubSub na warstwę Standardowa. Aby uzyskać więcej informacji, zobacz Cennik usługi Azure Web PubSub.