Włączanie rejestrowania diagnostyki dla aplikacji w usłudze Azure App Service
Uwaga
Od 1 czerwca 2024 r. wszystkie nowo utworzone aplikacje usługi App Service będą miały możliwość wygenerowania unikatowej domyślnej nazwy hosta przy użyciu konwencji <app-name>-<random-hash>.<region>.azurewebsites.net
nazewnictwa . Istniejące nazwy aplikacji pozostaną niezmienione.
Przykład: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Aby uzyskać więcej informacji, zapoznaj się z unikatową domyślną nazwą hosta zasobu usługi App Service.
W tym filmie wideo pokazano, jak włączyć rejestrowanie diagnostyczne dla aplikacji.
Kroki opisane w filmie wideo zostały również opisane w poniższych sekcjach.
Omówienie
Platforma Azure udostępnia wbudowaną diagnostykę , która ułatwia debugowanie aplikacji usługi App Service. Z tego artykułu dowiesz się, jak włączyć rejestrowanie diagnostyczne i dodać instrumentację do aplikacji, a także jak uzyskać dostęp do informacji rejestrowanych przez platformę Azure.
W tym artykule do pracy z dziennikami diagnostycznymi są używane witryny Azure Portal i interfejs wiersza polecenia platformy Azure. Aby uzyskać informacje na temat pracy z dziennikami diagnostycznymi przy użyciu programu Visual Studio, zobacz Rozwiązywanie problemów z platformą Azure w programie Visual Studio.
Uwaga
Oprócz instrukcji rejestrowania w tym artykule można również użyć funkcji rejestrowania zintegrowanego usługi Azure Monitor. Więcej informacji na ten temat można znaleźć w sekcji Wysyłanie dzienników do usługi Azure Monitor .
Typ | Platforma | Lokalizacja przechowywania dzienników | opis |
---|---|---|---|
Rejestrowanie aplikacji | Windows, Linux | System plików usługi App Service i/lub obiekty blob usługi Azure Storage | Rejestruje komunikaty generowane przez kod aplikacji. Komunikaty mogą być generowane przez wybraną strukturę internetową lub z poziomu kodu aplikacji bezpośrednio przy użyciu standardowego wzorca rejestrowania języka. Każdy komunikat jest przypisany do jednej z następujących kategorii: Krytyczne, Błąd, Ostrzeżenie, Informacje, Debugowanie i Śledzenie. Możesz wybrać sposób pełnego rejestrowania, ustawiając poziom ważności podczas włączania rejestrowania aplikacji. |
Rejestrowanie serwera sieci Web | Windows | System plików usługi App Service lub obiekty blob usługi Azure Storage | Nieprzetworzone dane żądania HTTP w formacie rozszerzonego pliku dziennika W3C. Każdy komunikat dziennika zawiera dane, takie jak metoda HTTP, identyfikator URI zasobu, adres IP klienta, port klienta, agent użytkownika, kod odpowiedzi itd. |
Szczegółowe komunikaty o błędach | Windows | System plików usługi App Service | Kopie stron błędów .htm, które zostałyby wysłane do przeglądarki klienta. Ze względów bezpieczeństwa szczegółowe strony błędów nie powinny być wysyłane do klientów w środowisku produkcyjnym, ale usługa App Service może zapisać stronę błędu za każdym razem, gdy wystąpi błąd aplikacji z kodem HTTP 400 lub nowszym. Strona może zawierać informacje, które mogą pomóc określić, dlaczego serwer zwraca kod błędu. |
śledzenia żądań zakończonego niepowodzeniem | Windows | System plików usługi App Service | Szczegółowe informacje dotyczące śledzenia żądań, w tym ślad składników usług IIS używanych do przetwarzania żądania i czasu potrzebnego w każdym składniku. Te informacje są przydatne, jeśli chcesz zwiększyć wydajność lokacji lub wyizolować określony błąd HTTP. Jeden folder jest generowany dla każdego żądania, które zakończyło się niepowodzeniem. Folder zawiera plik dziennika XML i arkusz stylów XSL w celu wyświetlenia pliku dziennika. |
Rejestrowanie wdrożenia | Windows, Linux | System plików usługi App Service | Rejestruje podczas publikowania zawartości w aplikacji. Rejestrowanie wdrożenia odbywa się automatycznie i nie ma konfigurowalnych ustawień rejestrowania wdrożenia. Pomaga określić, dlaczego wdrożenie nie powiodło się. Jeśli na przykład używasz niestandardowego skryptu wdrażania, możesz użyć rejestrowania wdrożenia, aby określić, dlaczego skrypt kończy się niepowodzeniem. |
W przypadku przechowywania w systemie plików usługi App Service dzienniki podlegają dostępnemu magazynowi dla warstwy cenowej (zobacz Limity usługi App Service).
Uwaga
Usługa App Service udostępnia dedykowane, interaktywne narzędzie diagnostyczne ułatwiające rozwiązywanie problemów z aplikacją. Aby uzyskać więcej informacji, zobacz omówienie diagnostyki usługi aplikacja systemu Azure Service.
Ponadto możesz użyć innych usług platformy Azure, takich jak Azure Monitor, aby ulepszyć możliwości rejestrowania i monitorowania aplikacji.
Włączanie rejestrowania aplikacji (Windows)
Aby włączyć rejestrowanie aplikacji dla aplikacji systemu Windows w witrynie Azure Portal, przejdź do aplikacji i wybierz pozycję Dzienniki usługi App Service.
Wybierz pozycję Włączone dla opcji Rejestrowanie aplikacji (system plików) lub Rejestrowanie aplikacji (blob) lub oba te elementy.
Opcja System plików służy do tymczasowego debugowania i wyłącza się w ciągu 12 godzin. Opcja Obiekt blob dotyczy rejestrowania długoterminowego i wymaga kontenera magazynu obiektów blob do zapisywania dzienników. Opcja Obiekt blob zawiera również dodatkowe informacje w komunikatach dziennika, takie jak identyfikator początkowego wystąpienia maszyny wirtualnej komunikatu dziennika (), identyfikator wątku (Tid
InstanceId
) i bardziej szczegółowy znacznik czasu (EventTickCount
).
Uwaga
Obecnie tylko dzienniki aplikacji platformy .NET można zapisywać w magazynie obiektów blob. Dzienniki aplikacji Java, PHP, Node.js i Python można przechowywać tylko w systemie plików usługi App Service (bez modyfikacji kodu w celu zapisywania dzienników w magazynie zewnętrznym).
Ponadto w przypadku ponownego wygenerowania kluczy dostępu konta magazynu należy zresetować odpowiednią konfigurację rejestrowania, aby używać zaktualizowanych kluczy dostępu. Czynność:
- Na karcie Konfigurowanie ustaw odpowiednią funkcję rejestrowania na Wyłączone. Zapisz ustawienie.
- Ponownie włącz rejestrowanie w obiekcie blob konta magazynu. Zapisz ustawienie.
Wybierz poziom lub poziom szczegółów do zarejestrowania. W poniższej tabeli przedstawiono kategorie dzienników uwzględnione na każdym poziomie:
Poziom | Uwzględnione kategorie |
---|---|
Disabled | Brak |
Błąd | Błąd, krytyczny |
Ostrzeżenie | Ostrzeżenie, błąd, krytyczny |
Informacje | Informacje, ostrzeżenie, błąd, krytyczne |
Gadatliwy | Śledzenie, debugowanie, informacje, ostrzeżenie, błąd, krytyczne (wszystkie kategorie) |
Po zakończeniu wybierz Zapisz.
Uwaga
Jeśli zapisujesz dzienniki w obiektach blob, zasady przechowywania nie będą już stosowane, jeśli usuniesz aplikację, ale zachowasz dzienniki w obiektach blob. Aby uzyskać więcej informacji, zobacz Koszty, które mogą być naliczane po usunięciu zasobu.
Włączanie rejestrowania aplikacji (Linux/Container)
Aby włączyć rejestrowanie aplikacji dla aplikacji systemu Linux lub kontenerów niestandardowych w witrynie Azure Portal, przejdź do aplikacji i wybierz pozycję Dzienniki usługi App Service.
W obszarze Rejestrowanie aplikacji wybierz pozycję System plików.
W obszarze Limit przydziału (MB) określ limit przydziału dysku dla dzienników aplikacji. W obszarze Okres przechowywania (dni) ustaw liczbę dni przechowywania dzienników.
Po zakończeniu wybierz Zapisz.
Włączanie rejestrowania serwera internetowego
Aby włączyć rejestrowanie serwera internetowego dla aplikacji systemu Windows w witrynie Azure Portal, przejdź do aplikacji i wybierz pozycję Dzienniki usługi App Service.
W przypadku rejestrowania serwera internetowego wybierz pozycję Magazyn , aby przechowywać dzienniki w magazynie obiektów blob lub system plików, aby przechowywać dzienniki w systemie plików usługi App Service.
W obszarze Okres przechowywania (dni) ustaw liczbę dni przechowywania dzienników.
Uwaga
Jeśli ponownie wygenerujesz klucze dostępu konta magazynu, musisz zresetować odpowiednią konfigurację rejestrowania, aby używać zaktualizowanych kluczy. Czynność:
- Na karcie Konfigurowanie ustaw odpowiednią funkcję rejestrowania na Wyłączone. Zapisz ustawienie.
- Ponownie włącz rejestrowanie w obiekcie blob konta magazynu. Zapisz ustawienie.
Po zakończeniu wybierz Zapisz.
Uwaga
Jeśli zapisujesz dzienniki w obiektach blob, zasady przechowywania nie będą już stosowane, jeśli usuniesz aplikację, ale zachowasz dzienniki w obiektach blob. Aby uzyskać więcej informacji, zobacz Koszty, które mogą być naliczane po usunięciu zasobu.
Rejestrowanie szczegółowych błędów
Aby zapisać stronę błędu lub śledzenie żądań niepomyślnych dla aplikacji systemu Windows w witrynie Azure Portal, przejdź do aplikacji i wybierz pozycję Dzienniki usługi App Service.
W obszarze Szczegółowe rejestrowanie błędów lub Śledzenie niepomyślnych żądań wybierz pozycję Włączone, a następnie wybierz pozycję Zapisz.
Oba typy dzienników są przechowywane w systemie plików usługi App Service. Zachowywane są maksymalnie 50 błędów (plików lub folderów). Gdy liczba plików HTML przekracza 50, najstarsze pliki błędów są automatycznie usuwane.
Funkcja Śledzenie żądań niepomyślnych domyślnie przechwytuje dziennik żądań, które zakończyły się niepowodzeniem z kodami stanu HTTP z zakresu od 400 do 600. Aby określić reguły niestandardowe, możesz zastąpić sekcję <traceFailedRequests>
w pliku web.config .
Dodawanie komunikatów dziennika w kodzie
W kodzie aplikacji używasz zwykłych obiektów rejestrowania do wysyłania komunikatów dziennika do dzienników aplikacji. Na przykład:
ASP.NET aplikacje mogą używać klasy System.Diagnostics.Trace do rejestrowania informacji w dzienniku diagnostycznym aplikacji. Na przykład:
System.Diagnostics.Trace.TraceError("If you're seeing this, something bad happened");
Domyślnie ASP.NET Core używa dostawcy rejestrowania Microsoft.Extensions.Logging.AzureAppServices . Aby uzyskać więcej informacji, zobacz ASP.NET Core logging in Azure (Rejestrowanie podstawowe na platformie Azure). Aby uzyskać informacje na temat rejestrowania zestawu SDK usługi WebJobs, zobacz Rozpoczynanie pracy z zestawem SDK usługi Azure WebJobs.
Aplikacje języka Python mogą używać pakietu OpenCensus do wysyłania dzienników do dziennika diagnostyki aplikacji.
Strumieniowe przesyłanie dzienników
Przed przesyłaniem strumieniowego dzienników w czasie rzeczywistym włącz odpowiedni typ dziennika. Wszystkie informacje zapisywane w danych wyjściowych lub plikach konsoli kończących się na .txt, .log lub .htm przechowywanych w katalogu /home/LogFiles (D:\home\LogFiles) są przesyłane strumieniowo przez usługę App Service.
Uwaga
Niektóre typy rejestrowania zapisu w pliku dziennika, co może spowodować pojawienie się zdarzeń w nieprawidłowej kolejności w strumieniu. Na przykład wpis dziennika aplikacji, który występuje, gdy użytkownik odwiedza stronę, może być wyświetlany w strumieniu przed odpowiednim wpisem dziennika HTTP dla żądania strony.
W witrynie Azure Portal
Aby przesłać strumieniowo dzienniki w witrynie Azure Portal, przejdź do aplikacji i wybierz pozycję Strumień dzienników.
W usłudze Cloud Shell
Aby przesyłać strumieniowo dzienniki na żywo w usłudze Cloud Shell, użyj następującego polecenia:
Ważne
To polecenie może nie działać z aplikacjami internetowymi hostowanymi w planie usługi app service systemu Linux.
az webapp log tail --name appname --resource-group myResourceGroup
Aby filtrować określone typy dzienników, takie jak HTTP, użyj parametru --provider . Na przykład:
az webapp log tail --name appname --resource-group myResourceGroup --provider http
W terminalu lokalnym
Aby przesyłać strumieniowo dzienniki w konsoli lokalnej, zainstaluj interfejs wiersza polecenia platformy Azure i zaloguj się do swojego konta. Po zalogowaniu postępuj zgodnie z instrukcjami dotyczącymi usługi Cloud Shell.
Uzyskiwanie dostępu do plików dziennika
Jeśli skonfigurujesz opcję Obiektów blob usługi Azure Storage dla typu dziennika, potrzebujesz narzędzia klienckiego, które współpracuje z usługą Azure Storage. Aby uzyskać więcej informacji, zobacz Azure Storage Client Tools (Narzędzia klienckie usługi Azure Storage).
W przypadku dzienników przechowywanych w systemie plików usługi App Service najprostszym sposobem uzyskania dostępu do plików jest pobranie pliku ZIP w przeglądarce pod adresem:
- Kontenery niestandardowe systemu Linux/:
https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
- Aplikacje systemu Windows:
https://<app-name>.scm.azurewebsites.net/api/dump
W przypadku kontenerów niestandardowych systemu Linux plik ZIP zawiera dzienniki wyjściowe konsoli zarówno dla hosta platformy Docker, jak i kontenera platformy Docker. W przypadku aplikacji skalowanej w poziomie plik ZIP zawiera jeden zestaw dzienników dla każdego wystąpienia. W systemie plików usługi App Service te pliki dziennika są zawartością katalogu /home/LogFiles . Dzienniki wdrażania są przechowywane w lokalizacji /site/deployments/.
W przypadku aplikacji systemu Windows plik ZIP zawiera zawartość katalogu D:\Home\LogFiles w systemie plików usługi App Service. Ma następującą strukturę:
Typ dziennika | Katalog | opis |
---|---|---|
Dzienniki aplikacji | /LogFiles/Application/ | Zawiera co najmniej jeden plik tekstowy. Format komunikatów dziennika zależy od używanego dostawcy rejestrowania. |
Ślady żądań, które zakończyły się niepowodzeniem | /LogFiles/W3SVC#########/ | Zawiera pliki XML i plik XSL. Sformatowane pliki XML można wyświetlić w przeglądarce. |
Szczegółowe dzienniki błędów | /LogFiles/DetailedErrors/ | Zawiera pliki błędów HTM. Pliki HTM można wyświetlić w przeglądarce. Innym sposobem wyświetlenia śladów żądań, które nie powiodły się, jest przejście do strony aplikacji w portalu. W menu po lewej stronie wybierz pozycję Diagnozuj i rozwiąż problemy, wyszukaj dzienniki śledzenia żądań niepomyślnych, a następnie kliknij ikonę, aby przeglądać i wyświetlać żądany ślad. |
Dzienniki serwera internetowego | /LogFiles/http/RawLogs/ | Zawiera pliki tekstowe sformatowane przy użyciu rozszerzonego formatu pliku dziennika W3C. Te pliki można odczytać przy użyciu edytora tekstów lub narzędzia, takiego jak Analizator dzienników. Usługa App Service nie obsługuje s-computername pól , s-ip ani cs-version . |
Dzienniki wdrażania | /LogFiles/Git/ i /deployments/ | Zawiera dzienniki generowane przez wewnętrzne procesy wdrażania, a także dzienniki wdrożeń usługi Git. |
Wysyłanie dzienników do usługi Azure Monitor
Integracja z usługą Azure Monitor umożliwia tworzenie ustawień diagnostycznych w celu wysyłania dzienników do kont magazynu, centrów zdarzeń i usługi Log Analytics. Po dodaniu ustawienia diagnostycznego usługa App Service dodaje ustawienia aplikacji do aplikacji, co powoduje ponowne uruchomienie aplikacji.
Obsługiwane typy dzienników
Aby uzyskać listę obsługiwanych typów dzienników i ich opisów, zobacz Obsługiwane dzienniki zasobów dla witryny Microsoft.Web.
Zagadnienia dotyczące pracy w sieci
Aby uzyskać informacje o ograniczeniach ustawień diagnostycznych, zapoznaj się z oficjalną dokumentacją ustawień diagnostycznych dotyczącą limitów miejsc docelowych.
Następne kroki
- Wykonywanie zapytań dotyczących dzienników za pomocą usługi Azure Monitor
- Jak monitorować usługę aplikacja systemu Azure
- Rozwiązywanie problemów z usługą aplikacja systemu Azure w programie Visual Studio
- Samouczek: uruchamianie testu obciążeniowego w celu zidentyfikowania wąskich gardeł wydajności w aplikacji internetowej