Udostępnij za pośrednictwem


Jak rozwiązywać problemy z dziennikami zasobów

Ten przewodnik z instrukcjami zawiera omówienie dzienników zasobów usługi Azure Web PubSub oraz wskazówki dotyczące używania dzienników do rozwiązywania niektórych problemów. Dzienniki mogą służyć 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: Połączenie ivity, Messaging i HTTP requests.

  • dzienniki Połączenie ivity zawierają szczegółowe informacje dotyczące połączeń usługi Azure Web PubSub Hub. Na przykład podstawowe informacje (identyfikator użytkownika, identyfikator połączenia itd.) i informacje o zdarzeniu (łączenie, rozłączanie itd.).
  • Dzienniki obsługi komunikatów udostępniają informacje o śledzeniu komunikatów centrum PubSub platformy Azure odebranych i wysłanych za pośrednictwem usługi Azure Web PubSub. Na przykład identyfikator śledzenia i typ komunikatu komunikatu.
  • Dzienniki żądań HTTP zawierają informacje o śledzeniu żądań HTTP do usługi Azure Web PubSub. Na przykład metoda HTTP i kod stanu. Zazwyczaj żądanie HTTP jest rejestrowane po nadejściu lub opuszczeniu usługi.

Przechwytywanie dzienników zasobów przy użyciu narzędzia do śledzenia na żywo

Narzędzie do śledzenia na żywo usługi Azure Web PubSub ma możliwość zbierania dzienników zasobów w czasie rzeczywistym, co jest pomocne w rozwiązywaniu problemów w środowisku projektowym. Narzędzie do śledzenia na żywo może przechwytywać dzienniki łączności, dzienniki obsługi komunikatów i dzienniki żądań HTTP.

Uwaga

Następujące zagadnienia dotyczą korzystania z narzędzia do śledzenia na żywo:

  • Dzienniki zasobów w czasie rzeczywistym przechwycone przez narzędzie do śledzenia na żywo będą rozliczane jako komunikaty (ruch wychodzący).
  • 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.
  • Wystąpienie usługi Azure Web PubSub w warstwie Bezpłatna ma dzienny limit 20 000 komunikatów (ruch wychodzący). Śledzenie na żywo może spowodować nieoczekiwane osiągnięcie dziennego limitu.

Uruchamianie narzędzia do śledzenia na żywo

Uwaga

Po włączeniu klucza dostępu użyjesz tokenu dostępu do uwierzytelniania narzędzia do śledzenia na żywo. W przeciwnym razie użyjesz identyfikatora Entra firmy Microsoft do uwierzytelniania narzędzia do śledzenia na żywo. Możesz sprawdzić, czy klucz dostępu jest włączony, czy nie na stronie Klucze usługi SignalR Service w witrynie Azure Portal.

Procedura włączania klucza dostępu

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

  2. Z menu po lewej stronie w obszarze Monitorowanie wybierz pozycję Ustawienia śledzenia na żywo.

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

  4. Wybierz przycisk Zapisz . Wprowadzenie zmian potrwa chwilę.

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

    Screenshot of launching the live trace tool.

Procedura wyłączania klucza dostępu

Przypisywanie uprawnień interfejsu API narzędzia do śledzenia na żywo do siebie

  1. Przejdź do witryny Azure Portal i strony usługi SignalR Service.
  2. Wybierz pozycję Kontrola dostępu (IAM) .
  3. Na nowej stronie kliknij pozycję +Dodaj, a następnie kliknij pozycję Przypisanie roli.
  4. Na nowej stronie skoncentruj się na karcie Role funkcji zadania, Wybierz rolę Właściciela usługi SignalR Service, a następnie kliknij przycisk Dalej.
  5. Na stronie Członkowie kliknij pozycję +Wybierz członków.
  6. W nowym panelu wyszukaj i wybierz członków, a następnie kliknij pozycję Wybierz.
  7. Kliknij pozycję Przejrzyj i przypisz i poczekaj na powiadomienie o zakończeniu.

Odwiedź narzędzie do śledzenia na żywo

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

  2. Z menu po lewej stronie w obszarze Monitorowanie wybierz pozycję Ustawienia śledzenia na żywo.

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

  4. Wybierz przycisk Zapisz . Wprowadzenie zmian potrwa chwilę.

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

    Screenshot of launching the live trace tool.

Zaloguj się za pomocą konta Microsoft

  1. Narzędzie do śledzenia na żywo wyświetli okno logowania firmy Microsoft. Jeśli okno nie jest wyskakujące, sprawdź i zezwól na wyskakujące okna w przeglądarce.
  2. Poczekaj na wyświetlenie pozycji Gotowe na pasku stanu.

Przechwytywanie dzienników zasobów

Narzędzie do śledzenia na żywo udostępnia funkcje ułatwiające przechwytywanie dzienników zasobów na potrzeby rozwiązywania problemów.

  • Przechwytywanie: rozpocznij przechwytywanie dzienników zasobów w czasie rzeczywistym z usługi Azure Web PubSub.
  • Wyczyść: Wyczyść przechwycone dzienniki zasobów w czasie rzeczywistym.
  • Filtr dziennika: narzędzie do śledzenia na żywo umożliwia filtrowanie przechwyconych dzienników zasobów w czasie rzeczywistym przy użyciu jednego określonego słowa kluczowego. Typowe separatory (na przykład spacja, przecinek, średnik itd.) będą traktowane jako część słowa kluczowego.
  • Stan: Stan pokazuje, czy narzędzie do śledzenia na żywo jest połączone, czy odłączone od określonego wystąpienia.

Screenshot of capturing resource logs with live trace tool.

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
Time Czas zdarzenia dziennika
Poziom dziennika Poziom zdarzeń dziennika może mieć wartość [Trace | Debugowanie | Informacyjny | Ostrzeżenie | Błąd]
Nazwa zdarzenia Nazwa operacji zdarzenia
Wiadomość Szczegółowy komunikat dotyczący zdarzenia
Wyjątek Wyjątek czasu wykonywania usługi Azure Web PubSub
Piasta Nazwa centrum zdefiniowanego przez użytkownika
identyfikator Połączenie ion 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/DELETE)
URL Lokalizator zasobów jednolitych
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 przekazane przez klienta i serwer z żądaniem HTTP lub odpowiedzią

Przechwytywanie dzienników zasobów za pomocą usługi Azure Monitor

Jak włączyć dzienniki zasobów

Obecnie usługa Azure Web PubSub obsługuje integrację z usługą Azure Storage.

  1. Przejdź do portalu Azure Portal.

  2. Na stronie Ustawienia diagnostyczne wystąpienia usługi Azure Web PubSub wybierz pozycję + Dodaj ustawienie diagnostyczne. Screenshot of viewing diagnostic settings and create a new one

  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 zaznacz pozycję Archiwum na koncie magazynu.

    Screenshot of configuring diagnostic setting detail

  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 dziennika archiwum zawierają elementy wymienione w następujących tabelach:

Format

Nazwa/nazwisko Opis
time Czas zdarzenia dziennika
poziom Poziom zdarzeń dziennika
resourceId Identyfikator zasobu usługi Azure SignalR Service
lokalizacja Lokalizacja usługi Azure SignalR Service
category Kategoria zdarzenia dziennika
operationName Nazwa operacji zdarzenia
callerIpAddress Adres IP serwera lub klienta
właściwości Szczegółowe właściwości związane z tym zdarzeniem dziennika. Aby uzyskać więcej szczegółów, zobacz poniższą tabelę właściwości

Tabela właściwości

Nazwa/nazwisko opis
— kolekcja Kolekcja zdarzenia dziennika. Dozwolone wartości to: Connection, Authorization i Throttling
connectionId Tożsamość połączenia
Identyfikator użytkownika Tożsamość użytkownika
wiadomość Szczegółowy komunikat zdarzenia dziennika
Koncentratora Nazwa centrum zdefiniowanego przez użytkownika
routeTemplate Szablon trasy interfejsu API
httpMethod Metoda HTTP (POST/GET/PUT/DELETE)
Adres URL Lokalizator zasobów jednolitych
Traceid Unikatowy identyfikator wywołania
statusCode Kod odpowiedzi HTTP
czas trwania Czas trwania między żądaniem jest odbierany i przetwarzany
Nagłówki Dodatkowe informacje przekazane przez klienta i serwer z żądaniem HTTP lub odpowiedzią

Poniższy kod jest przykładem ciągu JSON dziennika 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. Na stronie Ustawienia diagnostyczne w obszarze Szczegóły miejsca docelowego wybierz pozycję **Wyślij do obszaru roboczego usługi Log Analytics.
  2. Wybierz subskrypcję, której chcesz użyć.
  3. Wybierz obszar roboczy usługi Log Analytics, który ma być używany jako miejsce docelowe dzienników.

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

  1. Wybierz Logs w docelowej usłudze Log Analytics.

    Log Analytics menu item

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

    Query log in Log Analytics

Aby użyć przykładowego zapytania dla usługi SignalR, wykonaj poniższe kroki.

  1. Wybierz Logs w docelowej usłudze Log Analytics.
  2. Wybierz, Queries aby otworzyć eksploratora zapytań.
  3. Wybierz Resource type opcję grupowania przykładowych zapytań w typie zasobu.
  4. Wybierz, Run aby uruchomić skrypt. Sample query in Log Analytics

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

Nazwa/nazwisko opis
TimeGenerated Czas zdarzenia dziennika
Kolekcja Kolekcja zdarzenia dziennika. Dozwolone wartości to: Connection, Authorization i Throttling
OperationName Nazwa operacji zdarzenia
Lokalizacja Lokalizacja usługi Azure SignalR Service
Poziom Poziom zdarzeń dziennika
CallerIpAddress Adres IP serwera/klienta
Wiadomość Szczegółowy komunikat zdarzenia dziennika
Identyfikator użytkownika Tożsamość użytkownika
ConnectionId Tożsamość połączenia
ConnectionType Typ połączenia. Dozwolone wartości to: Server | Client. Server: połączenie po stronie serwera; Client: połączenie po stronie klienta
Typ transportu Typ transportu połączenia. Dozwolone wartości to: Websockets | ServerSentEvents | LongPolling

Rozwiązywanie problemów z dziennikami zasobów

Jeśli znajdziesz nieoczekiwane zmiany liczby połączeń, zwiększenie lub zmniejszenie, możesz skorzystać z dzienników zasobów, aby rozwiązać ten problem. Typowe problemy są często związane z nieoczekiwanymi zmianami ilości połączeń, osiągnięciem limitów połączeń i niepowodzeniem autoryzacji.

Nieoczekiwane zmiany liczby połączeń

Nieoczekiwane porzucanie połączenia

Jeśli połączenie zostanie rozłączone, dzienniki zasobów będą rejestrować 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. Chociaż jest ConnectionAborted to zwykle nieoczekiwane zdarzenie porzucania połączenia, a przyczyna rozłączenia zostanie podana w pliku message.

Przyczyny przerwania są wymienione w poniższej tabeli:

Przyczyna opis
Liczba Połączenie ion osiąga limit liczba Połączenie ion 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 nawiązywania połączenia lub ręcznie ponownie nawiązać połączenie z usługą Azure Web PubSub
Wewnętrzny błąd przejściowy serwera Błąd przejściowy występuje w usłudze Azure Web PubSub, powinien zostać automatycznie odzyskany

Nieoczekiwany wzrost liczby połączeń

Gdy liczba połączeń klientów nieoczekiwanie wzrasta, pierwszą rzeczą, którą należy zrobić, jest odfiltrowywanie nadmiarowych połączeń. Dodaj unikatowy identyfikator użytkownika testowego do testu połączenia klienta. Następnie sprawdź dzienniki zasobów; Jeśli widzisz, że więcej niż jedno połączenie klienckie ma ten sam identyfikator użytkownika testowego 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 ustanowić 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.