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: łączność, obsługa komunikatów i żądania HTTP.
- Dzienniki łączności 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
Przejdź do witryny Azure Portal i strony usługi SignalR Service.
Z menu po lewej stronie w obszarze Monitorowanie wybierz pozycję Ustawienia śledzenia na żywo.
Wybierz pozycję Włącz śledzenie na żywo.
Wybierz przycisk Zapisz . Wprowadzenie zmian potrwa chwilę.
Po zakończeniu aktualizacji wybierz pozycję Otwórz narzędzie do śledzenia na żywo.
Procedura wyłączania klucza dostępu
Przypisywanie uprawnień interfejsu API narzędzia do śledzenia na żywo do siebie
- Przejdź do witryny Azure Portal i strony usługi SignalR Service.
- Wybierz pozycję Kontrola dostępu (IAM) .
- Na nowej stronie kliknij pozycję +Dodaj, a następnie kliknij pozycję Przypisanie roli.
- 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.
- Na stronie Członkowie kliknij pozycję +Wybierz członków.
- W nowym panelu wyszukaj i wybierz członków, a następnie kliknij pozycję Wybierz.
- Kliknij pozycję Przejrzyj i przypisz i poczekaj na powiadomienie o zakończeniu.
Odwiedź narzędzie do śledzenia na żywo
Przejdź do witryny Azure Portal i strony usługi SignalR Service.
Z menu po lewej stronie w obszarze Monitorowanie wybierz pozycję Ustawienia śledzenia na żywo.
Wybierz pozycję Włącz śledzenie na żywo.
Wybierz przycisk Zapisz . Wprowadzenie zmian potrwa 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 wyświetli okno logowania firmy Microsoft. Jeśli okno nie jest wyskakujące, sprawdź i zezwól na wyskakujące okna w przeglądarce.
- 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.
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 |
Komunikat | 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łą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/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.
Przejdź do portalu Azure Portal.
Na stronie 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 zaznacz 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 dziennika archiwum zawierają elementy wymienione w następujących tabelach:
Formatuj
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 |
koncentrator | 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:
- Na stronie Ustawienia diagnostyczne w obszarze Szczegóły miejsca docelowego wybierz pozycję **Wyślij do obszaru roboczego usługi Log Analytics.
- Wybierz subskrypcję, której chcesz użyć.
- 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:
Wybierz
Logs
w docelowej usłudze Log Analytics.Wprowadź
WebPubSubConnectivity
,WebPubSubMessaging
lubWebPubSubHttpRequest
, 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.
Aby użyć przykładowego zapytania dla usługi SignalR, wykonaj poniższe kroki.
- Wybierz
Logs
w docelowej usłudze Log Analytics. - Wybierz,
Queries
aby otworzyć eksploratora zapytań. - Wybierz
Resource type
opcję grupowania przykładowych zapytań w typie zasobu. - Wybierz,
Run
aby uruchomić skrypt.
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 |
Komunikat | 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łą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 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.