Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'analisi dei container archivia i dati di log raccolti in una tabella denominata ContainerLogV2 in un'area di lavoro Log Analytics. Questo articolo descrive le opzioni di configurazione e lo schema di questa tabella. Confronta anche questa tabella con la tabella legacy ContainerLog e fornisce dettagli per la migrazione da tale tabella.
Confronto tra tabelle
ContainerLogV2 è lo schema predefinito per l'interfaccia della riga di comando versione 2.54.0 e successive. Questa è la tabella predefinita per i clienti che eseguono l'integrazione di Container Insights con l'autenticazione tramite identità gestita. ContainerLogV2 può essere abilitato in modo esplicito tramite l'interfaccia della riga di comando versione 2.51.0 o successiva usando le impostazioni di raccolta dati.
Importante
Il supporto per la tabella ContainerLog verrà ritirato il 30 settembre 2026.
La tabella seguente evidenzia le differenze principali tra l'uso dello schema ContainerLogV2 e ContainerLog.
Differenze di funzionalità | ContainerLog | ContainerLogV2 |
---|---|---|
Diagramma | Dettagli in ContainerLog. | Dettagli in ContainerLogV2. Le colonne aggiuntive sono: - ContainerName - PodName - PodNamespace - LogLevel
1- KubernetesMetadata
2 |
Integrazione | Configurabile solo tramite ConfigMap. | Configurabile tramite ConfigMap e DCR. 3 |
Prezzi | Compatibile solo con i log di analisi a prezzo intero. | Supporta il livello di log di base a basso costo oltre ai log di analisi. |
Query | Richiede più operazioni di join con tabelle di inventario per le query standard. | Includi metadati aggiuntivi per pod e contenitori al fine di ridurre la complessità delle query e delle operazioni di join. |
Multilinea | Non supportato, le voci multilinea vengono suddivise in più righe. | Supporto per la registrazione multilinea per consentire voci singole consolidate per l'output multilinea. |
1 Se LogMessage
è un JSON valido e ha una chiave denominata level
, verrà usato il relativo valore. In caso contrario, la corrispondenza delle parole chiave basata su regex viene usata per dedurre LogLevel
da LogMessage
. Questa inferenza può comportare alcune errori di classificazione.
LogLevel
è un campo stringa con un valore di integrità, ad esempio CRITICAL
, ERROR
, WARNING
, INFO
, DEBUG
, TRACE
o UNKNOWN
.
2KubernetesMetadata
è una colonna facoltativa abilitata con metadati kubernetes. Il valore di questo campo è JSON con i campi podLabels
, podAnnotations
, podUid
, Image
, ImageTag
e Image repo
.
3 La configurazione DCR richiede l'autenticazione dell'identità gestita.
Nota
Il LogMessage
campo è dinamico e supporta l'inserimento di formati di stringa JSON e di testo non crittografato.
L'esportazione dei dati di log nell'hub eventi e nell'account di archiviazione è supportata se il codice in ingresso LogMessage
è JSON valido o una stringa normale valida.
Se il LogMessage
è in formato JSON non valido, tali messaggi di log verranno inseriti con l'escape. Per impostazione predefinita, i messaggi di log di dimensioni superiori a 16 KB vengono troncati. Con la registrazione su più righe abilitata, i messaggi di log di dimensioni superiori a 64 KB vengono troncati.
Abilitare lo schema ContainerLogV2
È possibile abilitare lo schema ContainerLogV2 per un cluster utilizzando la regola di raccolta dati (DCR) del cluster o il ConfigMap. Se entrambe le impostazioni sono abilitate, ConfigMap ha la precedenza. La tabella ContainerLog
viene utilizzata solo quando sia DCR che ConfigMap vengono impostati su off in modo esplicito.
Prima di abilitare lo schema ContainerLogsV2, è necessario valutare se sono presenti regole di avviso che si basano sulla tabella ContainerLog. Per usare la nuova tabella, è necessario aggiornare tali avvisi. Eseguire la query seguente di Azure Resource Graph per cercare le regole di avviso che fanno riferimento alla tabella ContainerLog
.
resources
| where type in~ ('microsoft.insights/scheduledqueryrules') and ['kind'] !in~ ('LogToMetric')
| extend severity = strcat("Sev", properties["severity"])
| extend enabled = tobool(properties["enabled"])
| where enabled in~ ('true')
| where tolower(properties["targetResourceTypes"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["targetResourceType"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["scopes"]) matches regex 'providers/microsoft.operationalinsights/workspaces($|/.*)?'
| where properties contains "ContainerLog"
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc
Filtro dei metadati e dei log Kubernetes
Il filtro log e metadati Kubernetes estende lo schema ContainerLogsV2 con metadati Kubernetes aggiuntivi. La funzionalità di filtro dei log offre capacità di filtraggio sia per i contenitori della piattaforma sia per quelli del carico di lavoro. Queste funzionalità offrono un contesto più completo e una migliore visibilità sui carichi di lavoro.
Nota
Il dashboard di Grafana per filtrare i metadati e i log di Kubernetes non supporta attualmente i log di base.
Funzionalità
Schema ContainerLogV2 avanzato Quando i metadati dei log di Kubernetes sono abilitati, aggiunge una colonna a
ContainerLogV2
denominataKubernetesMetadata
che migliora la risoluzione dei problemi con query di log semplici e rimuove la necessità di unire le altre tabelle. I campi in questa colonna includono:PodLabels
,PodAnnotations
,PodUid
,Image
,ImageID
,ImageRepo
,ImageTag
. Questi campi migliorano l'esperienza di risoluzione dei problemi usando query di log senza dover creare un join con altre tabelle. Per informazioni dettagliate sull'abilitazione della funzionalità dei metadati Kubernetes, vedere di seguito.Livello di log Questa funzionalità aggiunge una colonna
LogLevel
a ContainerLogV2 con i valori possibili critico, errore, avviso, informazioni, debug, analisi o sconosciuto. Ciò consente di valutare l'integrità dell'applicazione in base al livello di gravità. Aggiungendo il dashboard di Grafana, è possibile visualizzare le tendenze a livello di log nel tempo e individuare rapidamente le risorse interessate.Dashboard di Grafana per la visualizzazione Il dashboard di Grafana offre una visualizzazione a colori del livello di log e fornisce anche informazioni dettagliate su Volume di log, frequenza di log, record di log, log. Gli utenti possono ottenere analisi temporali sensibili, informazioni dettagliate dinamiche sulle tendenze a livello di log nel tempo e monitoraggio cruciale in tempo reale. Il dashboard fornisce inoltre una scomposizione dettagliata per computer, pod e contenitore, che consente l'analisi approfondita e la risoluzione dei problemi specifica. Per informazioni dettagliate sull'installazione del dashboard di Grafana, vedere di seguito.
Filtro dei log basato sulle annotazioni per i carichi di lavoro Filtro efficiente dei log tramite annotazioni dei pod. In questo modo è possibile concentrarsi sulle informazioni pertinenti senza analizzare il rumore. Il filtro basato sulle annotazioni consente di escludere la raccolta di log per determinati pod e contenitori annotando il pod, il che permette di ridurre significativamente il costo di Log Analytics. Per informazioni dettagliate sulla configurazione del filtro basato sull'annotazione, vedere Filtro dei log basato su annotazione.
Filtro dei log basato su ConfigMap per i log della piattaforma (namespace di sistema Kubernetes) I log della piattaforma vengono rilasciati dai contenitori nei namespace di sistema (o nei namespace con restrizioni simili). Per impostazione predefinita, tutti i log dei contenitori dello spazio dei nomi di sistema vengono esclusi per ridurre al minimo il costo dei dati nell'area di lavoro Log Analytics. In scenari di risoluzione dei problemi specifici, tuttavia, i log dei contenitori di sistema svolgono un ruolo fondamentale. Un esempio è il contenitore
coredns
nello spazio dei nomikube-system
.
Abilitare i metadati di Kubernetes
Importante
La raccolta di metadati Kubernetes richiede l’autenticazione dell'identità gestita e ContainerLogsV2
Abilitare i metadati Kubernetes usando ConfigMap con le impostazioni seguenti. Tutti i campi dei metadati vengono raccolti per impostazione predefinita quando metadata_collection
è abilitato. Rimuovere il commento include_fields
per specificare i singoli campi da raccogliere.
[log_collection_settings.metadata_collection]
enabled = true
include_fields = ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]
Dopo alcuni minuti, la colonna KubernetesMetadata
deve essere inclusa in tutte le query di log per la tabella ContainerLogV2
, come illustrato di seguito.
Installare il dashboard di Grafana
Importante
Se Grafana è stato abilitato usando le indicazioni riportate in Abilitare il monitoraggio per i cluster Kubernetes, l'istanza di Grafana dovrebbe avere già accesso all'area di lavoro di Monitoraggio di Azure per le metriche di Prometheus. Il dashboard dei metadati dei log di Kubernetes richiede anche l'accesso all'area di lavoro Log Analytics che contiene i dati di log. Vedere Come modificare le autorizzazioni di accesso ad Azure Monitor per indicazioni su come concedere all'istanza di Grafana il ruolo di Monitoring Reader per l'area di lavoro Log Analytics.
Importare il dashboard dalla raccolta Grafana in Dashboard ContainerLogV2. È quindi possibile aprire il dashboard e selezionare i valori per DataSource, Sottoscrizione, ResourceGroup, Cluster, Spazio dei nomi ed Etichette.
Nota
Quando si carica inizialmente il dashboard di Grafana, è possibile che vengano visualizzati errori a causa di variabili non ancora selezionate. Per evitare che ciò avvenga in modo ricorrente, salvare il dashboard dopo aver selezionato un set di variabili in modo che diventi predefinito alla prima apertura.
Registrazione multilinea disabilitata
Con la registrazione dei log multilinea abilitata, i log dei contenitori suddivisi in precedenza vengono ricomposti e inviati come singole registrazioni alla tabella ContainerLogV2. Abilitare la registrazione su più righe con ConfigMap come descritto in Configurare la raccolta dati in Container Insights con ConfigMap.
Nota
L'oggetto configmap include ora un'opzione di specifica del linguaggio che consente di selezionare solo le lingue a cui si è interessati. Questa funzionalità può essere abilitata modificando i linguaggi nell'opzione stacktrace_languages nella configmap.
Limitazioni
La registrazione multilinea raggruppa solo le tracce dello stack di eccezioni dai contenitori usando Java, Python, .NET e Go. Altre voci di log su più righe, incluse le eccezioni personalizzate e i messaggi di log arbitrari, non vengono unite insieme.
Se la riga di log è più grande di 16 KB, invece di essere troncata di default dal runtime del contenitore, sarà supportata fino a 64 KB.
Esempi
Registrazione multilinea del tracciamento dello stack di eccezioni Go disabilitata
Registrazione multilinea del tracciamento dello stack di eccezioni Go abilitata
Registrazione multilinea del tracciamento dello stack Java abilitata
Registrazione multilinea del tracciamento dello stack Python abilitata
Passaggi successivi
- Configurare i log di base per ContainerLogv2.
- Informazioni su come eseguire query sui dati da ContainerLogV2