Condividi tramite


Log and Metrics in Azure Container Apps

Nota

I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.

Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.

Questo articolo si applica a:✅ Basic/Standard ✅ Enterprise

Quando si passa da App Spring di Azure ad App Azure Container, si trovano funzionalità di osservabilità simili, ma con alcune differenze principali. Questo articolo illustra queste differenze e spiega come monitorare le applicazioni in App Azure Container.

Prerequisiti

Registri

Configurare le opzioni di registrazione

App Contenitore di Azure consente di gestire la registrazione nell'ambiente App Contenitore di Azure.

È possibile archiviare i log sia in Azure Log Analytics che in Monitoraggio di Azure. Se si sceglie Monitoraggio di Azure, si trova un menu delle impostazioni di diagnostica nelle impostazioni dell'ambiente, simile a quello in Azure Spring Apps.

Quando si crea un ambiente con l'interfaccia della riga di comando di Azure, come illustrato nell'esempio seguente, viene effettuato il provisioning di un'area di lavoro Log Analytics generata automaticamente.

az containerapp env create \
    --resource-group MyResourceGroup \
    --name MyContainerappEnvironment \
    --location eastus2

È anche possibile usare il comando seguente per creare un ambiente con un'area di lavoro Log Analytics esistente:

az containerapp env create \
    --resource-group MyResourceGroup \
    --name MyContainerappEnvironment \
    --logs-workspace-id myLogsWorkspaceID \
    --logs-workspace-key myLogsWorkspaceKey \
    --location eastus2

Analizzare i log

App Contenitore di Azure consente di trasmettere i log dalla console del contenitore. L'elenco seguente descrive le principali differenze nella registrazione:

  • Log della console: per i log della console, eseguire una query sulla ContainerAppConsoleLogs_CL tabella in App Contenitore di Azure invece della ApplicationConsole tabella usata in Azure Spring Apps.

  • Log di sistema: Azure Spring Apps fornisce SystemLogs il server di configurazione, il Registro dei servizi, il portale API, il servizio di configurazione delle applicazioni e Spring Cloud Gateway. In App Azure Container è necessario effettuare il provisioning di questi componenti come applicazioni separate ed eseguire query sui relativi log nella ContainerAppConsoleLogs_CL tabella, specificando il nome di ogni app nella query.

  • Log di compilazione: i log di compilazione dalle build locali con Buildpack Paketo non sono disponibili in App Contenitore di Azure, che differisce da Azure Spring Apps.

Visualizzare i log

Per impostazione predefinita, App Azure Container inviano i log direttamente ad Azure Log Analytics. Tuttavia, se si sceglie di archiviare i log in Monitoraggio di Azure, i nomi delle tabelle e delle colonne possono essere diversi. In Monitoraggio di Azure i nomi di tabella e colonna non includono suffissi. Ad esempio, usare ContainerAppConsoleLogs invece di ContainerAppConsoleLogs_CL e Log anziché quando si creano query per i log archiviati in Monitoraggio di Log_s Azure.

Per visualizzare i log della console in App Azure Container, usare la query seguente come esempio:

ContainerAppConsoleLogs_CL
| limit 50

Azure Log Analytics viene eseguito con un motore Kusto in modo da poter eseguire query sui log per l'analisi. Per un'introduzione all'esecuzione di query sui log con Kusto, vedere Esercitazione su Log Analytics.

Visualizzare i log dell'applicazione

Per esaminare un elenco di log applicazioni, ordinati in base al tempo con i log più recenti visualizzati per primi, usare la query seguente:

ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| sort by TimeGenerated desc

Mostra voci di log contenenti errori o eccezioni

Per esaminare le voci di log non assegnate che indicano un errore o un'eccezione, usare la query seguente:

ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| where Log_s contains "error" or Log_s contains "exception"

Usare questa query per trovare gli errori o modificare i termini della query per trovare codici di errore o eccezioni specifici.

Visualizzare il numero di errori ed eccezioni segnalati dall'applicazione nell'ultima ora

Per creare un grafico a torta che visualizza il numero di errori ed eccezioni registrati dall'applicazione nell'ultima ora, usare la query seguente:

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

Visualizzare i log di Spring Cloud Gateway

Per esaminare le voci di log per i log di Spring Cloud Gateway, usare la query seguente:

ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudGateway"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100

Visualizzare i log del server Eureka

Per esaminare le voci di log per i log del server Eureka, usare la query seguente:

ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudEureka"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100

Metrica

Le tabelle seguenti eseguono il mapping delle metriche tra App Azure Spring e App contenitore di Azure:

Comune

Nome della metrica di Azure Spring Apps Nome della metrica di App Contenitore di Azure
Utilizzo CPU dell'app N/D
Utilizzo memoria dell'app N/D
Rete app in N/D
Rete app in uscita N/D

Metrica di errore

Nome della metrica di Azure Spring Apps Nome della metrica di App Contenitore di Azure
tomcat.global.error N/D

Metriche delle prestazioni

Nome della metrica di Azure Spring Apps Nome della metrica di App Contenitore di Azure
system.cpu.usage Percentuale utilizzo CPU (anteprima)
process.cpu.usage N/D
Utilizzo memoria dell'app N/D
jvm.memory.committed jvm.memory.committed
jvm.memory.used jvm.memory.used
jvm.memory.max N/D
Metriche JVM aggiuntive N/D

Metriche delle prestazioni .NET

Nome della metrica di Azure Spring Apps Nome della metrica di App Contenitore di Azure
Utilizzo CPU Percentuale utilizzo CPU (anteprima)
Working set Byte di working set della memoria
Dimensioni heap GC N/D
Conteggio GC gen 0 N/D
Metriche GC aggiuntive N/D

Metriche per le richieste

Nome della metrica di Azure Spring Apps Nome della metrica di App Contenitore di Azure
tomcat.global.sent N/D
tomcat.global.request.total.count Richieste

Metriche delle richieste .NET

Nome della metrica di Azure Spring Apps Nome della metrica di App Contenitore di Azure
Richieste al secondo N/D
Totale richieste Richieste

Metriche di sessione

Nome della metrica di Azure Spring Apps Nome della metrica di App Contenitore di Azure
tomcat.sessions.active.max N/D
tomcat.sessions.alive.max N/D

Metriche Java per le app Java nelle App contenitore di Azure

Se si sceglie Java come stack di sviluppo per le app contenitore di Azure, il monitoraggio delle metriche di Java Virtual Machine (JVM) è essenziale per garantire l'integrità e le prestazioni delle applicazioni. Per altre informazioni, vedere Metriche Java per le app Java in App Contenitore di Azure.

Componenti gestiti

Per i dati di monitoraggio dei componenti gestiti, vedere gli articoli seguenti:

Integrazione

App Azure Container offre diverse funzionalità di osservabilità predefinite che consentono di monitorare e diagnosticare lo stato dell'applicazione. Tuttavia, se si vuole usare Application Insights di Monitoraggio di Azure o altri agenti APM (Application Performance Monitoring), è necessario aggiungere strumentazione al codice dell'applicazione.

Eseguire l'integrazione con il monitoraggio delle prestazioni dell'applicazione

Per l'integrazione con Application Insights di Monitoraggio di Azure o altre API, vedere Integrare il monitoraggio delle prestazioni delle applicazioni nelle immagini del contenitore.

Agenti OpenTelemetry (anteprima)

È possibile inviare dati di osservabilità in un formato OpenTelemetry a destinazioni come Application Insights di Monitoraggio di Azure, Datadog o qualsiasi endpoint compatibile con OTLP usando un agente dati OpenTelemetry con l'ambiente app azure Container. L'agente gestito semplifica la configurazione consentendo di modificare gli endpoint di destinazione senza eseguire manualmente o riconfigurare l'agente. Per configurarlo, configurare l'agente nell'ambiente contenitore usando modelli arm, Bicep o l'interfaccia della riga di comando di Azure e preparare l'applicazione installando OpenTelemetry SDK e instrumentando il codice per metriche, log o tracce. Assicurarsi di configurare il servizio di destinazione in anticipo, ad esempio Application Insights. Ogni destinazione ha requisiti specifici e l'agente invia i dati solo se correttamente configurati e instrumentati. Per altre informazioni, vedere Raccogliere e leggere Dati OpenTelemetry in App Azure Container.

Dashboard e avvisi personalizzati

Quando si distribuiscono applicazioni in App Azure Container, i dashboard personalizzati possono basarsi su due approcci diversi per l'origine dati:

  • Agenti APM integrati nell'app: se nell'applicazione sono stati integrati agenti APM di terze parti durante il processo di compilazione, questi agenti inviano metriche e log direttamente alla piattaforma APM. In questo caso, purché il codice dell'applicazione rimanga invariato, non è necessario modificare i dashboard.

  • Dashboard basati su Monitoraggio di Azure: se i dashboard usano metriche e log da Monitoraggio di Azure, ad esempio tramite l'API di Application Insights, Hub eventi di Azure o Archiviazione di Azure, potrebbe essere necessario aggiornarli in modo da riflettere i nomi delle metriche, gli spazi dei nomi o le strutture di log specifiche delle app contenitore di Azure. Assicurarsi di esaminare e aggiornare i dashboard in base ai mapping delle metriche e alle strutture di dati specifiche di App Azure Container.

Verificare attentamente le configurazioni del dashboard per assicurarsi che rimangano accurate dopo la transizione ad App Azure Container.

Risoluzione dei problemi

App Contenitore di Azure non fornisce un'API per generare un dump dell'heap o un dump del thread per le applicazioni Java. Per creare questi dump, è necessario connettersi all'app contenitore tramite la console. Usare quindi il jmap comando o jstack per generare i file di dump all'interno del contenitore. Successivamente, copiare i file generati nel computer locale per ulteriori analisi.

È anche possibile usare il jcmd comando per eseguire la stessa operazione e avviare Java Flight Recorder (JFR) in un'applicazione in esecuzione. Per altre informazioni su come accedere all'app contenitore tramite la console, vedere Connettersi a una console contenitore in App Contenitore di Azure.

Limitazioni note

  • Log strutturati: le app contenitore di Azure non supportano i log applicazioni strutturati. Se i log dell'applicazione seguono lo schema di Azure Spring Apps, la stringa JSON completa viene visualizzata nella Log_s colonna di ContainerAppConsoleLogs_CL.
  • Log di ingresso: mentre Azure Spring Apps dispone di log di accesso in ingresso predefiniti, App Contenitore di Azure non lo fa. È necessario implementare la registrazione di accesso nel codice dell'applicazione per acquisire questi dati.
  • App Azure Container non fornisce eventi del ciclo di vita dell'app.
  • App Azure Container non dispone del supporto predefinito per le metriche di ingresso. È necessario implementare il rilevamento personalizzato nelle applicazioni.