Protokoll und Metriken in Azure Container Apps
Hinweis
Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.
Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren des Plans „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.
Dieser Artikel gilt für:✅ Basic/Standard ✅ Enterprise
Wenn Sie von Azure Spring Apps zu Azure Container Apps wechseln, haben Sie ähnliche Features für Einblicke, aber mit einigen wichtigen Unterschieden. In diesem Artikel werden diese Unterschiede erläutert. Außerdem wird erklärt, wie Sie Ihre Anwendungen in Azure Container Apps überwachen.
Voraussetzungen
- Eine vorhandene Azure-Container-App. Weitere Informationen finden Sie unter Schnellstart: Bereitstellen Ihrer ersten Container-App über das Azure-Portal.
- Azure-Befehlszeilenschnittstelle.
Protokolle
Konfigurieren der Protokollierungsoptionen
Mit Azure Container Apps können Sie die Protokollierung in der Azure Container Apps-Umgebung verwalten.
Sie können Protokolle sowohl in Azure Log Analytics als auch in Azure Monitor speichern. Wenn Sie Azure Monitor auswählen, steht ein Diagnoseeinstellungsmenü in den Umgebungseinstellungen zur Verfügung, ähnlich wie in Azure Spring Apps.
Wenn Sie eine Umgebung mit der Azure CLI erstellen, wie im folgenden Beispiel gezeigt, wird ein automatisch generierter Log Analytics-Arbeitsbereich bereitgestellt.
az containerapp env create \
--resource-group MyResourceGroup \
--name MyContainerappEnvironment \
--location eastus2
Sie können auch den folgenden Befehl verwenden, um eine Umgebung mit einem vorhandenen Log Analytics-Arbeitsbereich zu erstellen:
az containerapp env create \
--resource-group MyResourceGroup \
--name MyContainerappEnvironment \
--logs-workspace-id myLogsWorkspaceID \
--logs-workspace-key myLogsWorkspaceKey \
--location eastus2
Analysieren von Protokollen
Mit Azure Container Apps können Sie Protokolle aus Ihrer Containerkonsole streamen. In der folgenden Liste werden die Hauptunterschiede bei der Protokollierung beschrieben:
Konsolenprotokolle: Für Konsolenprotokolle fragen Sie die
ContainerAppConsoleLogs_CL
-Tabelle in Azure Container Apps ab anstelle derApplicationConsole
-Tabelle, die in Azure Spring Apps verwendet wird.Systemprotokolle: Azure Spring Apps bietet
SystemLogs
für Config Server, Dienstregistrierung, API-Portal, Anwendungskonfigurationsdienst und Spring Cloud Gateway. In Azure Container Apps müssen Sie diese Komponenten als separate Anwendungen bereitstellen und ihre Protokolle in derContainerAppConsoleLogs_CL
-Tabelle abfragen und dabei den Namen der einzelnen Apps in Ihrer Abfrage angeben.Buildprotokolle: Buildprotokolle aus lokalen Builds mit Paketo-Buildpacks sind in Azure Container Apps nicht verfügbar, was sich von Azure Spring Apps unterscheidet.
Anzeigen von Protokollen
Standardmäßig senden Azure Container Apps-Instanzen Protokolle direkt an Azure Log Analytics. Wenn Sie sich jedoch entscheiden, Protokolle in Azure Monitor zu speichern, können sich die Tabellen- und Spaltennamen unterscheiden. In Azure Monitor enthalten Tabellen- und Spaltennamen keine Suffixe. Verwenden Sie z. B. ContainerAppConsoleLogs
anstelle von ContainerAppConsoleLogs_CL
und Log
anstelle von Log_s
, wenn Sie Abfragen für Protokolle erstellen, die in Azure Monitor gespeichert sind.
Zum Anzeigen von Konsolenprotokollen in Azure Container Apps verwenden Sie die folgende Abfrage als Beispiel:
ContainerAppConsoleLogs_CL
| limit 50
Azure Log Analytics wird mit einer Kusto-Engine ausgeführt, damit Sie Ihre Protokolle zu Analysezwecken abfragen können. Eine Einführung in das Abfragen von Protokollen mithilfe von Kusto finden Sie im Log Analytics-Tutorial.
Anzeigen von Anwendungsprotokollen
Um eine Liste mit Anwendungsprotokollen zu überprüfen, sortiert nach Uhrzeit mit den neuesten Protokollen zuerst, verwenden Sie die folgende Abfrage:
ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| sort by TimeGenerated desc
Anzeigen von Protokolleinträgen mit Fehlern oder Ausnahmen
Um unsortierte Protokolleinträge zu überprüfen, die einen Fehler oder eine Ausnahme enthalten, verwenden Sie die folgende Abfrage:
ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| where Log_s contains "error" or Log_s contains "exception"
Verwenden Sie diese Abfrage, um Fehler zu finden, oder ändern Sie die Abfragebedingungen, um bestimmte Fehlercodes oder Ausnahmen zu suchen.
Anzeigen der Anzahl von Fehlern und Ausnahmen, die von Ihrer Anwendung in der letzten Stunde gemeldet wurden
Um ein Kreisdiagramm zu erstellen, das die Anzahl der Fehler und Ausnahmen darstellt, die in der letzten Stunde von Ihrer Anwendung protokolliert wurden, verwenden Sie die folgende Abfrage:
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
Anzeigen von Spring Cloud Gateway-Protokollen
Zum Überprüfen der Protokolleinträge in Spring Cloud Gateway-Protokollen verwenden Sie die folgende Abfrage:
ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudGateway"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100
Anzeigen von Eureka-Server-Protokollen
Zum Überprüfen der Protokolleinträge in Eureka-Server-Protokollen verwenden Sie die folgende Abfrage:
ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudEureka"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100
Metriken
In der folgenden Tabelle werden die Metriken zwischen Azure Spring Apps und Azure Container Apps zugeordnet:
Allgemein
Name der Metrik in Azure Spring Apps | Name der Metrik in Azure Container Apps |
---|---|
App-CPU-Auslastung | N/V |
App-Speicherauslastung | N/V |
App-Netzwerk eingehend | N/V |
App-Netzwerk ausgehend | N/V |
Fehlermetriken
Name der Metrik in Azure Spring Apps | Name der Metrik in Azure Container Apps |
---|---|
tomcat.global.error |
N/V |
Leistungsmetriken
Name der Metrik in Azure Spring Apps | Name der Metrik in Azure Container Apps |
---|---|
system.cpu.usage |
Prozentuale CPU-Auslastung (Vorschau) |
process.cpu.usage |
N/V |
App-Speicherauslastung | – |
jvm.memory.committed |
jvm.memory.committed |
jvm.memory.used |
jvm.memory.used |
jvm.memory.max |
– |
Zusätzliche JVM-Metriken | N/V |
.NET-Leistungsmetriken
Name der Metrik in Azure Spring Apps | Name der Metrik in Azure Container Apps |
---|---|
CPU-Auslastung | Prozentuale CPU-Auslastung (Vorschau) |
Arbeitssatz | Arbeitssatz für Arbeitsspeicher (Bytes) |
GC-Heapgröße | N/V |
Anzahl Gen 0 GC | N/V |
Zusätzliche GC-Metriken | N/V |
Anforderungsmetriken
Name der Metrik in Azure Spring Apps | Name der Metrik in Azure Container Apps |
---|---|
tomcat.global.sent |
N/V |
tomcat.global.request.total.count |
Requests |
.NET-Anforderungsmetriken
Name der Metrik in Azure Spring Apps | Name der Metrik in Azure Container Apps |
---|---|
Anforderungen pro Sekunde | N/V |
Anforderungen gesamt | Requests |
Sitzungsmetriken
Name der Metrik in Azure Spring Apps | Name der Metrik in Azure Container Apps |
---|---|
tomcat.sessions.active.max |
– |
tomcat.sessions.alive.max |
– |
Java-Metriken für Java-Apps in Azure Container Apps
Wenn Sie Java als Entwicklungsstapel für Azure Container Apps auswählen, ist die Überwachung von JVM-Metriken (Java Virtual Machine) unerlässlich, um die Integrität und Leistung Ihrer Anwendungen sicherzustellen. Weitere Informationen finden Sie unter Java-Metriken für Java-Apps in Azure Container Apps.
Verwaltete Komponenten
Informationen zu Überwachungsdaten für verwaltete Komponenten finden Sie in den folgenden Artikeln:
Integration
Azure Container Apps bietet mehrere integrierte Features für Einblicke, mit denen Sie den Zustand Ihrer Anwendung überwachen und diagnostizieren können. Wenn Sie jedoch Azure Monitor Application Insights oder andere APM-Agents (Application Performance Monitoring, Anwendungsleistungsüberwachung) verwenden möchten, müssen Sie Ihrem Anwendungscode eine Instrumentierung hinzufügen.
Integration mit APM (Application Performance Monitoring, Anwendungsleistungsüberwachung)
Informationen zur Integration mit Azure Monitor Application Insights oder anderen APMs finden Sie unter Integrieren der Anwendungsleistungsüberwachung in Containerimages.
OpenTelemetry-Agents (Vorschau)
Sie können Daten zu Einblicken in einem OpenTelemetry-Format an Ziele wie Azure Monitor Application Insights, Datadog oder einen beliebigen OTLP-kompatiblen Endpunkt senden, indem Sie einen OpenTelemetry-Datenagent mit Ihrer Azure Container Apps-Umgebung verwenden. Der verwaltete Agent vereinfacht die Konfiguration, da Sie Zielendpunkte ändern können, ohne den Agent manuell auszuführen oder neu zu konfigurieren. Zum Einrichten konfigurieren Sie den Agent in Ihrer Containerumgebung mit ARM-Vorlagen, Bicep oder der Azure CLI, und bereiten Sie Ihre Anwendung vor, indem Sie das OpenTelemetry-SDK installieren und Ihren Code für Metriken, Protokolle oder Ablaufverfolgungen instrumentieren. Der Zieldienst muss vorab eingerichtet werden, z. B. Application Insights. Jedes Ziel hat bestimmte Anforderungen, und der Agent sendet Daten nur, wenn die Konfiguration und die Instrumentierung korrekt sind. Weitere Informationen finden Sie unter Sammeln und Lesen von OpenTelemetry-Daten in Azure Container Apps.
Benutzerdefinierte Dashboards und Benachrichtigungen
Wenn Sie Anwendungen in Azure Container Apps bereitstellen, können Ihre benutzerdefinierten Dashboards zwei verschiedene Datenbeschaffungsansätze verwenden:
In die App integrierte APM-Agents: Wenn Sie APM-Agents von Drittanbietern während des Buildprozesses in Ihre Anwendung integriert haben, senden diese Agents Metriken und Protokolle direkt an die APM-Plattform. In diesem Fall müssen Sie Ihre Dashboards nicht ändern, solange der Anwendungscode unverändert bleibt.
Azure Monitor-basierte Dashboards: Wenn Ihre Dashboards Metriken und Protokolle von Azure Monitor verwenden (z. B. über die Application Insights-API, Azure Event Hubs oder Azure Storage), müssen Sie diese möglicherweise aktualisieren, um Azure Container Apps-spezifische Metriknamen, Namespaces oder Protokollstrukturen widerzuspiegeln. Überprüfen und aktualisieren Sie Ihre Dashboards basierend auf Azure Container Apps-spezifischen Metrikzuordnungen und Datenstrukturen.
Überprüfen Sie sorgfältig Ihre Dashboardkonfigurationen, um sicherzustellen, dass sie nach dem Übergang zu Azure Container Apps korrekt bleiben.
Problembehandlung
Azure Container Apps bietet keine API zum Generieren eines Heap-Speicherabbilds oder Thread-Speicherabbilds für Java-Anwendungen. Um diese Speicherabbilder zu erstellen, müssen Sie über die Konsole eine Verbindung mit der Container-App herstellen. Verwenden Sie dann den Befehl jmap
oder jstack
, um die Speicherabbilddateien im Container zu generieren. Kopieren Sie danach die generierten Dateien zur weiteren Analyse auf Ihren lokalen Computer.
Sie können auch den Befehl jcmd
verwenden, um denselben Vorgang auszuführen und den Java Flight Recorder (JFR) in einer ausgeführten Anwendung zu starten. Weitere Informationen zum Zugreifen auf die Container-App über die Konsole finden Sie unter Herstellen einer Verbindung mit einer Containerkonsole in Azure Container Apps.
Bekannte Einschränkungen
- Strukturierte Protokolle: Azure Container Apps unterstützt keine strukturierten Anwendungsprotokolle. Wenn Ihre Anwendungsprotokolle dem Azure Spring Apps-Schema folgen, wird die vollständige JSON-Zeichenfolge in der
Log_s
-Spalte vonContainerAppConsoleLogs_CL
angezeigt. - Eingangsprotokolle: Azure Spring Apps verfügt über integrierte Eingangszugriffsprotokolle, Azure Container Apps hingegen nicht. Sie müssen die Zugriffsprotokollierung in Ihrem Anwendungscode implementieren, um diese Daten zu erfassen.
- Azure Container Apps bietet keine App-Lebenszyklusereignisse.
- Azure Container Apps verfügt nicht über integrierte Unterstützung für Eingangsmetriken. Sie müssen die benutzerdefinierte Nachverfolgung in Ihren Anwendungen implementieren.