Dzienniki i metryki w usłudze Azure Container Apps
Uwaga
Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.
Ten artykuł dotyczy:✅ Podstawowa/Standardowa ✅ Enterprise
W przypadku przejścia z usługi Azure Spring Apps do usługi Azure Container Apps można znaleźć podobne funkcje obserwowania, ale z pewnymi kluczowymi różnicami. W tym artykule opisano te różnice i wyjaśniono, jak monitorować aplikacje w usłudze Azure Container Apps.
Wymagania wstępne
- Istniejąca aplikacja kontenera platformy Azure. Aby uzyskać więcej informacji, zobacz temat Szybki start: Wdrażanie pierwszej aplikacji kontenera przy użyciu witryny Azure Portal.
- Interfejs wiersza polecenia platformy Azure.
Dzienniki
Konfigurowanie opcji rejestrowania
Usługa Azure Container Apps umożliwia zarządzanie rejestrowaniem w środowisku usługi Azure Container Apps.
Dzienniki można przechowywać zarówno w usłudze Azure Log Analytics, jak i w usłudze Azure Monitor. Jeśli wybierzesz usługę Azure Monitor, znajdziesz menu ustawień diagnostycznych w ustawieniach środowiska, podobnie jak w usłudze Azure Spring Apps.
Podczas tworzenia środowiska przy użyciu interfejsu wiersza polecenia platformy Azure, jak pokazano w poniższym przykładzie, zostanie aprowizowany automatycznie wygenerowany obszar roboczy usługi Log Analytics.
az containerapp env create \
--resource-group MyResourceGroup \
--name MyContainerappEnvironment \
--location eastus2
Możesz również użyć następującego polecenia, aby utworzyć środowisko z istniejącym obszarem roboczym usługi Log Analytics:
az containerapp env create \
--resource-group MyResourceGroup \
--name MyContainerappEnvironment \
--logs-workspace-id myLogsWorkspaceID \
--logs-workspace-key myLogsWorkspaceKey \
--location eastus2
Analizowanie dzienników
Usługa Azure Container Apps umożliwia przesyłanie strumieniowe dzienników z konsoli kontenera. Na poniższej liście opisano główne różnice w rejestrowaniu:
Dzienniki konsoli: w przypadku dzienników konsoli wykonaj zapytanie dotyczące
ContainerAppConsoleLogs_CL
tabeli w usłudze Azure Container Apps zamiast tabeli używanejApplicationConsole
w usłudze Azure Spring Apps.Dzienniki systemowe: usługa Azure Spring Apps zapewnia
SystemLogs
serwer konfiguracji, rejestr usług, portal interfejsu API, usługę konfiguracji aplikacji i usługę Spring Cloud Gateway. W usłudze Azure Container Apps należy aprowizować te składniki jako oddzielne aplikacje i wykonywać zapytania dotyczące dzienników wContainerAppConsoleLogs_CL
tabeli, określając nazwę każdej aplikacji w zapytaniu.Dzienniki kompilacji: tworzenie dzienników z kompilacji lokalnych przy użyciu pakietu Buildpack Paketo nie jest dostępne w usłudze Azure Container Apps, co różni się od usługi Azure Spring Apps.
Wyświetlanie dzienników
Domyślnie usługa Azure Container Apps wysyła dzienniki bezpośrednio do usługi Azure Log Analytics. Jeśli jednak zdecydujesz się przechowywać dzienniki w usłudze Azure Monitor, nazwy tabel i kolumn mogą się różnić. W usłudze Azure Monitor nazwy tabel i kolumn nie zawierają sufiksów. Na przykład użyj polecenia ContainerAppConsoleLogs
zamiast ContainerAppConsoleLogs_CL
i Log
zamiast Log_s
podczas tworzenia zapytań dotyczących dzienników przechowywanych w usłudze Azure Monitor.
Aby wyświetlić dzienniki konsoli w usłudze Azure Container Apps, użyj następującego zapytania jako przykładu:
ContainerAppConsoleLogs_CL
| limit 50
Usługa Azure Log Analytics działa z aparatem Kusto, dzięki czemu można wykonywać zapytania dotyczące dzienników w celu analizy. Aby zapoznać się z wprowadzeniem do wykonywania zapytań dotyczących dzienników przy użyciu usługi Kusto, zobacz Samouczek usługi Log Analytics.
Pokaż dzienniki aplikacji
Aby przejrzeć listę dzienników aplikacji, posortowane według czasu z wyświetlonymi ostatnio dziennikami, użyj następującego zapytania:
ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| sort by TimeGenerated desc
Pokaż wpisy dziennika zawierające błędy lub wyjątki
Aby przejrzeć niesortowane wpisy dziennika, które wspominają o błędzie lub wyjątku, użyj następującego zapytania:
ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| where Log_s contains "error" or Log_s contains "exception"
Użyj tego zapytania, aby znaleźć błędy lub zmodyfikować terminy zapytania, aby znaleźć określone kody błędów lub wyjątki.
Pokaż liczbę błędów i wyjątków zgłoszonych przez aplikację w ciągu ostatniej godziny
Aby utworzyć wykres kołowy, który wyświetla liczbę błędów i wyjątków zarejestrowanych przez aplikację w ciągu ostatniej godziny, użyj następującego zapytania:
ContainerAppConsoleLogs_CL
| where TimeGenerated > ago(1h)
| where Log_s contains "error" or Log_s contains "exception"
| summarize count_per_app = count() by ContainerAppName_s
| sort by count_per_app desc
| render piechart
Pokaż dzienniki usługi Spring Cloud Gateway
Aby przejrzeć wpisy dziennika dla dzienników usługi Spring Cloud Gateway, użyj następującego zapytania:
ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudGateway"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100
Pokaż dzienniki serwera Eureka
Aby przejrzeć wpisy dziennika dla dzienników serwera Eureka, użyj następującego zapytania:
ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudEureka"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100
Metryki
Poniższe tabele mapować metryki między usługą Azure Spring Apps i usługą Azure Container Apps:
Popularny
Nazwa metryki usługi Azure Spring Apps | Nazwa metryki usługi Azure Container Apps |
---|---|
Użycie procesora CPU przez aplikację | Nie dotyczy |
Użycie pamięci przez aplikację | Nie dotyczy |
Sieć aplikacji w usłudze | Nie dotyczy |
Sieć aplikacji na wyjęcie | Nie dotyczy |
Metryki błędów
Nazwa metryki usługi Azure Spring Apps | Nazwa metryki usługi Azure Container Apps |
---|---|
tomcat.global.error |
Nie dotyczy |
Performance metrics (Metryki wydajności)
Nazwa metryki usługi Azure Spring Apps | Nazwa metryki usługi Azure Container Apps |
---|---|
system.cpu.usage |
Procent użycia procesora CPU (wersja zapoznawcza) |
process.cpu.usage |
Nie dotyczy |
Użycie pamięci przez aplikację | Brak |
jvm.memory.committed |
jvm.memory.committed |
jvm.memory.used |
jvm.memory.used |
jvm.memory.max |
Brak |
Dodatkowe metryki JVM | Nie dotyczy |
Metryki wydajności platformy .NET
Nazwa metryki usługi Azure Spring Apps | Nazwa metryki usługi Azure Container Apps |
---|---|
Użycie procesora CPU | Procent użycia procesora CPU (wersja zapoznawcza) |
Zestaw roboczy | Bajty zestawu roboczego pamięci |
Rozmiar sterty GC | Nie dotyczy |
Liczba GC gen 0 | Nie dotyczy |
Dodatkowe metryki GC | Nie dotyczy |
Metryki żądań
Nazwa metryki usługi Azure Spring Apps | Nazwa metryki usługi Azure Container Apps |
---|---|
tomcat.global.sent |
Nie dotyczy |
tomcat.global.request.total.count |
Żądania |
Metryki żądań platformy .NET
Nazwa metryki usługi Azure Spring Apps | Nazwa metryki usługi Azure Container Apps |
---|---|
Żądania na sekundę | Nie dotyczy |
Żądania ogółem | Żądania |
Metryki sesji
Nazwa metryki usługi Azure Spring Apps | Nazwa metryki usługi Azure Container Apps |
---|---|
tomcat.sessions.active.max |
Brak |
tomcat.sessions.alive.max |
Brak |
Metryki języka Java dla aplikacji Java w usłudze Azure Container Apps
Jeśli wybierzesz język Java jako stos programowania dla usługi Azure Container Apps, monitorowanie metryk maszyny wirtualnej Java (JVM) jest niezbędne do zapewnienia kondycji i wydajności aplikacji. Aby uzyskać więcej informacji, zobacz Java metrics for Java apps in Azure Container Apps (Metryki języka Java dla aplikacji Java w usłudze Azure Container Apps).
Składniki zarządzane
W przypadku danych monitorowania składników zarządzanych zobacz następujące artykuły:
Integracja
Usługa Azure Container Apps oferuje kilka wbudowanych funkcji obserwacji, które ułatwiają monitorowanie i diagnozowanie stanu aplikacji. Jeśli jednak chcesz użyć usługi Azure Monitor Application Insights lub innych agentów monitorowania wydajności aplikacji (APM), musisz dodać instrumentację do kodu aplikacji.
Integracja z monitorowaniem wydajności aplikacji
Aby uzyskać informacje na temat integracji z usługą Azure Monitor Application Insights lub innymi interfejsami APM, zobacz Integrowanie monitorowania wydajności aplikacji z obrazami kontenerów.
Agenci OpenTelemetry (wersja zapoznawcza)
Dane z obserwacji można wysyłać w formacie OpenTelemetry do miejsc docelowych, takich jak Usługa Azure Monitor Application Insights, Datadog lub dowolny punkt końcowy zgodny z protokołem OTLP, przy użyciu agenta danych OpenTelemetry w środowisku usługi Azure Container Apps. Agent zarządzany upraszcza konfigurację, umożliwiając zmianę docelowych punktów końcowych bez ręcznego uruchamiania lub ponownego konfigurowania agenta. Aby go skonfigurować, skonfiguruj agenta w środowisku kontenera przy użyciu szablonów usługi ARM, Bicep lub interfejsu wiersza polecenia platformy Azure i przygotuj aplikację, instalując zestaw SDK openTelemetry i instrumentując kod dla metryk, dzienników lub śladów. Pamiętaj, aby wcześniej skonfigurować usługę docelową, taką jak Application Insights. Każde miejsce docelowe ma określone wymagania, a agent wysyła dane tylko w przypadku prawidłowego skonfigurowania i instrumentacji. Aby uzyskać więcej informacji, zobacz Zbieranie i odczytywanie danych OpenTelemetry w usłudze Azure Container Apps.
Niestandardowe pulpity nawigacyjne i alerty
Podczas wdrażania aplikacji w usłudze Azure Container Apps niestandardowe pulpity nawigacyjne mogą polegać na dwóch różnych podejściach do określania źródła danych:
Agenci APM zintegrowani z aplikacją: w przypadku zintegrowania agentów APM innych firm z aplikacją podczas procesu kompilacji ci agenci wysyłają metryki i dzienniki bezpośrednio do platformy APM. W takim przypadku, o ile kod aplikacji pozostanie niezmieniony, nie musisz modyfikować pulpitów nawigacyjnych.
Pulpity nawigacyjne oparte na usłudze Azure Monitor: jeśli pulpity nawigacyjne używają metryk i dzienników z usługi Azure Monitor — na przykład za pośrednictwem interfejsu API usługi Application Insights, usługi Azure Event Hubs lub usługi Azure Storage — może być konieczne zaktualizowanie ich w celu odzwierciedlenia nazw metryk specyficznych dla usługi Azure Container Apps, przestrzeni nazw lub struktur dzienników. Pamiętaj, aby przejrzeć i zaktualizować pulpity nawigacyjne na podstawie mapowań metryk specyficznych dla usługi Azure Container Apps i struktur danych.
Dokładnie sprawdź konfiguracje pulpitu nawigacyjnego, aby upewnić się, że pozostają one dokładne po przejściu do usługi Azure Container Apps.
Rozwiązywanie problemów
Usługa Azure Container Apps nie udostępnia interfejsu API do generowania zrzutu stertowego ani zrzutu wątku dla aplikacji Java. Aby utworzyć te zrzuty, musisz połączyć się z aplikacją kontenera za pośrednictwem konsoli programu . Następnie użyj jmap
polecenia or jstack
, aby wygenerować pliki zrzutu wewnątrz kontenera. Następnie skopiuj wygenerowane pliki na komputer lokalny w celu dalszej analizy.
Możesz również użyć jcmd
polecenia , aby wykonać tę samą operację i uruchomić narzędzie Java Flight Recorder (JFR) w uruchomionej aplikacji. Aby uzyskać więcej informacji na temat uzyskiwania dostępu do aplikacji kontenera za pośrednictwem konsoli programu , zobacz Connect to a container console in Azure Container Apps (Łączenie z konsolą kontenera w usłudze Azure Container Apps).
Znane ograniczenia
- Dzienniki ustrukturyzowane: usługa Azure Container Apps nie obsługuje dzienników aplikacji ustrukturyzowanych. Jeśli dzienniki aplikacji są zgodne ze schematem usługi Azure Spring Apps, pełny ciąg JSON pojawi się w
Log_s
kolumnie .ContainerAppConsoleLogs_CL
- Dzienniki ruchu przychodzącego: usługa Azure Spring Apps ma wbudowane dzienniki dostępu do ruchu przychodzącego, ale usługa Azure Container Apps nie. Aby przechwycić te dane, musisz zaimplementować rejestrowanie dostępu w kodzie aplikacji.
- Usługa Azure Container Apps nie udostępnia zdarzeń cyklu życia aplikacji.
- Usługa Azure Container Apps nie ma wbudowanej obsługi metryk ruchu przychodzącego. Musisz zaimplementować śledzenie niestandardowe w aplikacjach.