Włączanie i konfigurowanie rejestrowania aplikacji usługi App Service
W tej lekcji przyjrzymy się, jak rejestrowanie aplikacji może pomóc w aplikacjach internetowych i pokazać, jak włączyć dzienniki aplikacji.
Co to są dzienniki aplikacji?
Platforma Azure udostępnia wbudowaną diagnostykę z rejestrowaniem aplikacji. Dzienniki aplikacji to dane wyjściowe instrukcji śledzenia środowiska uruchomieniowego w kodzie aplikacji. Na przykład możesz sprawdzić logikę w kodzie, dodając ślad, aby pokazać, kiedy dana funkcja jest przetwarzana. Możesz też chcieć zobaczyć zarejestrowany komunikat tylko wtedy, gdy wystąpi określony poziom błędu. Rejestrowanie aplikacji dotyczy przede wszystkim aplikacji w środowisku przedprodukcyjnym i problemów, ponieważ nadmierne dzienniki mogą mieć trafienie wydajności i szybko korzystać z magazynu. Z tego powodu rejestrowanie w systemie plików jest automatycznie wyłączone po 12 godzinach.
Rejestrowanie aplikacji ma ograniczenia skalowania, głównie dlatego, że pliki są używane do zapisywania zarejestrowanych danych wyjściowych. Jeśli masz wiele wystąpień aplikacji, a ten sam magazyn jest współużytkowany we wszystkich wystąpieniach, komunikaty z różnych wystąpień mogą być przeplatane, co utrudnia rozwiązywanie problemów. Jeśli każde wystąpienie ma własny plik dziennika, istnieje wiele dzienników, co utrudnia rozwiązywanie problemów specyficznych dla wystąpienia.
Typy rejestrowania dostępne za pośrednictwem usługi Azure App Service zależą od platformy kodu aplikacji oraz od tego, czy aplikacja została uruchomiona na hoście aplikacji systemu Windows czy Linux.
ASP.NET
Aplikacje platformy ASP.NET działają tylko w ramach usług aplikacji systemu Windows. Możesz użyć klasy System.Diagnostics.Trace
w celu rejestrowania informacji w dzienniku diagnostycznym aplikacji. Istnieją cztery poziomy śledzenia, których można użyć, które są skorelowane z poziomami error
rejestrowania , warning
, information
i verbose
wyświetlanymi w witrynie Azure Portal:
- Trace.TraceError("Message"); // Zapisuje komunikat o błędzie
- Trace.TraceWarning("Message"); // Zapisuje komunikat ostrzegawczy
- Trace.TraceInformation("Message"); // Zapisuje komunikat informacyjny
- Trace.WriteLine("Message"); // Zapisuje pełny komunikat
Aplikacje platformy ASP.NET Core
Aplikacje platformy ASP.NET Core mogą działać w systemach Windows i Linux. Aby rejestrować informacje w dziennikach aplikacji platformy Azure, użyj klasy logger factory, a następnie jednego z sześciu poziomów rejestrowania:
- logger.LogCritical("Message"); // Zapisuje komunikat krytyczny na poziomie rejestrowania 5
- logger.LogError("Message"); // Zapisuje komunikat o błędzie na poziomie rejestrowania 4
- logger.LogWarning("Message"); // Zapisuje komunikat ostrzegawczy na poziomie rejestrowania 3
- logger.LogInformation("Message"); // Zapisuje komunikat informacyjny na poziomie rejestrowania 2
- logger.LogDebug("Message"); // Zapisuje komunikat dotyczący debugowania na poziomie rejestrowania 1
- logger.LogTrace("Message"); // Zapisuje szczegółowy komunikat dotyczący śledzenia na poziomie 0
W przypadku aplikacji platformy ASP.NET Core dla systemu Windows te komunikaty odnoszą się do filtrów w witrynie Azure Portal w następujący sposób:
- Poziomy 4 i 5 to komunikaty o błędach .
- Poziom 3 jest komunikatem ostrzegawczym.
- Poziom 2 to komunikat informacyjny.
- Poziomy 0 i 1 to pełne komunikaty.
W przypadku aplikacji ASP.NET Core w systemie Linux rejestrowane są tylko komunikaty o błędach (poziomy 4 i 5).
Aplikacje środowiska Node.js
W przypadku aplikacji internetowych opartych na skryptach, takich jak aplikacje środowiska Node.js dla systemu Windows lub Linux, rejestrowanie aplikacji jest włączane przy użyciu metody console():
- console.error("Message"); Zapisuje komunikat w stDERR.
- console.log("Message"); Zapisuje komunikat w pliku STDOUT.
Oba typy komunikatów są zapisywane w dziennikach poziomu błędów usługi App Service platformy Azure.
Różnice rejestrowania między hostami systemów Windows i Linux
Aby kierować komunikaty do plików dziennika, aplikacje internetowe platformy Azure używają serwera internetowego usług informacyjnych (IIS). Ponieważ aplikacje internetowe oparte na systemie Windows to dobrze udokumentowana usługa platformy Azure, a obsługa komunikatów w przypadku aplikacji platformy ASP.NET jest ściśle zintegrowana z podstawową usługą IIS, aplikacje systemu Windows korzystają z zalet zaawansowanej infrastruktury rejestrowania. W przypadku innych aplikacji opcje rejestrowania są ograniczone przez platformę deweloperów, nawet w przypadku uruchamiania w usłudze aplikacji systemu Windows.
Obraz platformy Docker używany dla kontenera aplikacji określa funkcje rejestrowania dostępne dla aplikacji skryptowych opartych na systemie Linux, takich jak Node. Rejestrowanie podstawowe, takie jak używanie przekierowań do stDERR lub STDOUT, używa dzienników platformy Docker. Bogatsza funkcja rejestrowania zależy od obrazu bazowego i tego, czy działa w języku PHP, Perl, Ruby itd. Aby pobrać równoważne rejestrowanie aplikacji internetowej udostępniane przez usługi IIS dla aplikacji systemu Windows, może wymagać nawiązania połączenia z kontenerem przy użyciu protokołu SSH.
Poniższa tabela zawiera podsumowanie obsługi rejestrowania dla typowych środowisk i hostów aplikacji.
Środowisko aplikacji | Gospodarz | Poziomy rejestrowania | Lokalizacja zapisywania |
---|---|---|---|
ASP.NET | Windows | Błąd, ostrzeżenie, informacje, pełne | System plików, magazyn obiektów blob |
ASP.NET Core | Windows | Błąd, ostrzeżenie, informacje, pełne | System plików, magazyn obiektów blob |
ASP.NET Core | Linux | Błąd | System plików |
Node.js | Windows | Błąd (STDERR), informacje (STDOUT), ostrzeżenie, pełne | System plików, magazyn obiektów blob |
Node.js | Linux | Błąd | System plików |
Java | Linux | Błąd | System plików |
Alternatywy diagnostyki aplikacji
aplikacja systemu Azure Insights to rozszerzenie lokacji, które zapewnia więcej funkcji monitorowania wydajności, takich jak szczegółowe dane dotyczące użycia i wydajności. Usługa Application Insights jest przeznaczona do wdrożeń aplikacji produkcyjnych i jest potencjalnie przydatnym narzędziem programistycznym. Współpracuje ona z wieloma środowiskami deweloperskich aplikacji, zapewniając ten sam zestaw bogatych danych telemetrycznych i danych wydajności, niezależnie od tego, czy aplikacja jest ASP.NET, czy Node. Aby jednak używać usługi Application Insights, musisz uwzględnić określony konkretny kod w aplikacji za pomocą zestawu SDK usługi App Insights. Usługa Application Insights jest również usługą rozliczaną. Dlatego w zależności od skali wdrożeń aplikacji i zebranych danych może być konieczne zaplanowanie regularnych kosztów.
Możesz również wyświetlić metryki dla aplikacji, co może pomóc w profilowaniu sposobu działania aplikacji. Te liczniki są przydatne w środowisku produkcyjnym i programistycznym. Można wyświetlić dane użycia procesora, pamięci, sieci i systemu plików, a także skonfigurować alerty, gdy licznik osiągnie określoną wartość progową. Rozliczenia metryki są uwzględnione w warstwie planu usługi App Service.
Włączanie rejestrowania przy użyciu witryny Azure Portal
W portalu rejestrowanie aplikacji jest zarządzane z poziomu okienka dzienników diagnostycznych aplikacji internetowej.
Aby włączyć rejestrowanie aplikacji w systemie plików aplikacji internetowej, należy ustawić pozycję Rejestrowanie aplikacji (system plików) na Wł., a następnie ustawić pozycję Poziom na wartość Błąd, Ostrzeżenie, Informacje lub Pełne. Rejestrowanie w systemie plików zostanie automatycznie zresetowane do pozycji Wyłączone po 12 godzinach.
Aby włączyć rejestrowanie aplikacji w kontenerze magazynu obiektów blob, ustaw wartość Rejestrowanie aplikacji (obiekt blob), a następnie wybierz konto magazynu i kontener. Konto magazynu i aplikacja internetowa muszą zostać utworzone w tym samym regionie świadczenia usługi Azure. Następnie należy ustawić Poziom na Błąd, Ostrzeżenie, Informacje lub Pełne.
Uwaga
Zapisywanie w magazynie obiektów blob jest niedostępne w przypadku dzienników aplikacji systemu Linux.
W przypadku rejestrowania w magazynie obiektów blob należy również ustawić okres przechowywania. W przeciwieństwie do dzienników systemu plików dzienniki obiektów blob nigdy nie są domyślnie usuwane. Opcja okresu przechowywania oznacza, że wszystkie dzienniki starsze niż określona liczba dni zostaną usunięte.
Po skonfigurowaniu dzienników wybierz pozycję Zapisz.
Włączanie rejestrowania przy użyciu wiersza polecenia platformy Azure
Aby włączyć rejestrowanie aplikacji w systemie plików, uruchom to polecenie.
az webapp log config --application-logging filesystem --level verbose --name <app-name> --resource-group <resource-group-name>
Aby na przykład włączyć rejestrowanie w systemie plików dla aplikacji o nazwie contosofashions123 w celu przechwytywania wszystkich komunikatów, uruchom to polecenie.
az webapp log config --application-logging filesystem --level verbose --name contosofashions123 --resource-group contosofashionsRG
Obecnie nie ma możliwości wyłączenia rejestrowania aplikacji przy użyciu poleceń interfejsu wiersza polecenia platformy Azure. Jednak następujące polecenie resetuje rejestrowanie systemu plików tylko na poziomie błędu.
az webapp log config --application-logging off --name <app-name> --resource-group <resource-group-name>
Aby wyświetlić bieżący stan rejestrowania dla aplikacji, użyj tego polecenia.
az webapp log show --name <app-name> --resource-group <resource-group-name>