Udostępnij za pośrednictwem


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

  1. Przejdź do witryny Azure Portal i okienka usługi SignalR Service.

  2. W menu usługi w obszarze Monitorowanie wybierz pozycję Ustawienia śledzenia na żywo.

  3. Wybierz pozycję Włącz śledzenie na żywo.

  4. Wybierz przycisk zapisywania. Wprowadzenie zmian trwa chwilę.

  5. Po zakończeniu aktualizacji wybierz pozycję Otwórz narzędzie do śledzenia na żywo.

    Zrzut ekranu przedstawiający otwieranie narzędzia 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

  1. Przejdź do witryny Azure Portal i okienka usługi SignalR Service.

  2. Wybierz pozycję Kontrola dostępu (IAM).

  3. Wybierz pozycję +Dodaj , a następnie wybierz pozycję Przypisanie roli.

  4. Na karcie Role funkcji zadania wybierz rolę Właściciel usługi SignalR Service, a następnie wybierz pozycję Dalej.

  5. W okienku Członkowie kliknij pozycję +Wybierz członków.

  6. Wyszukaj i wybierz członków, a następnie kliknij pozycję Wybierz.

  7. Wybierz pozycję Przejrzyj i przypisz i poczekaj na powiadomienie o zakończeniu.

Włączanie narzędzia do śledzenia na żywo

  1. Przejdź do witryny Azure Portal i okienka usługi SignalR Service.

  2. W menu usługi w obszarze Monitorowanie wybierz pozycję Ustawienia śledzenia na żywo.

  3. Wybierz pozycję Włącz śledzenie na żywo.

  4. Wybierz przycisk zapisywania. Wprowadzenie zmian trwa chwilę.

  5. Po zakończeniu aktualizacji wybierz pozycję Otwórz narzędzie do śledzenia na żywo.

    Zrzut ekranu przedstawiający otwieranie narzędzia do śledzenia na żywo.

Zaloguj się za pomocą konta Microsoft

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

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

Zrzut ekranu przedstawiający przechwytywanie dzienników zasobów za pomocą narzędzia do śledzenia na żywo.

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, WarningInformationallub 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.

  1. Przejdź do portalu Azure Portal.

  2. W okienku Ustawienia diagnostyczne wystąpienia usługi Azure Web PubSub wybierz pozycję + Dodaj ustawienie diagnostyczne.

    Zrzut ekranu przedstawiający wyświetlanie ustawień diagnostycznych i tworzenie nowego.

  3. W polu Nazwa ustawienia diagnostycznego wprowadź nazwę ustawienia.

  4. W obszarze Szczegóły kategorii wybierz dowolną potrzebną kategorię dziennika.

  5. W obszarze Szczegóły miejsca docelowego wybierz pozycję Archiwum na koncie magazynu.

    Zrzut ekranu przedstawiający konfigurowanie ustawienia diagnostycznego.

  6. 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 (ConnectionAuthorizationlub 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:

  1. W okienku Ustawienia diagnostyczne w obszarze Szczegóły miejsca docelowego wybierz pozycję Wyślij do obszaru roboczego usługi Log Analytics.

  2. W polu Subskrypcja wybierz subskrypcję, która ma być używana.

  3. W obszarze docelowym dzienników wybierz pozycję Obszar roboczy usługi Log Analytics.

Aby wyświetlić dzienniki zasobów, wykonaj następujące kroki:

  1. Wybierz pozycję Dzienniki w docelowym obszarze roboczym usługi Log Analytics.

    Zrzut ekranu przedstawiający element menu usługi Log Analytics.

  2. Aby wykonać zapytanie dotyczące dziennika, wprowadź WebPubSubConnectivity, WebPubSubMessaginglub WebPubSubHttpRequest, a następnie wybierz zakres czasu. Aby uzyskać zaawansowane zapytania, zobacz Rozpoczynanie pracy z usługą Log Analytics w usłudze Azure Monitor.

    Zrzut ekranu przedstawiający zapytanie w usłudze Log Analytics.

Aby użyć przykładowego zapytania dla usługi SignalR, wykonaj następujące kroki:

  1. Wybierz pozycję Dzienniki w docelowym obszarze roboczym usługi Log Analytics.

  2. Wybierz pozycję Zapytania , aby otworzyć eksploratora zapytań.

  3. Wybierz pozycję Typ zasobu, aby zgrupować przykładowe zapytania według typu zasobu.

  4. Wybierz pozycję Uruchom , aby uruchomić skrypt.

    Zrzut ekranu przedstawiający przykładowe zapytanie w usłudze Log Analytics.

Kolumny dziennika archiwum zawierają elementy wymienione w poniższej tabeli.

Nazwa/nazwisko opis
TimeGenerated Czas zdarzenia dziennika
Collection Kolekcja zdarzeń dziennika (Connection, Authorizationi 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 (Serverpołą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.