Udostępnij za pośrednictwem


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

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żywanej ApplicationConsole 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 w ContainerAppConsoleLogs_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.