Condividi tramite


Schema dei log di Container Insights

Informazioni dettagliate contenitori 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 eseguire l'onboarding di Informazioni dettagliate contenitore con l'autenticazione dell'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
Schema Dettagli in ContainerLog. Dettagli in ContainerLogV2.
Le colonne aggiuntive sono:
- ContainerName
- PodName
- PodNamespace
- LogLevel1
- KubernetesMetadata2
Onboarding 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. Include metadati aggiuntivi di pod e contenitori per ridurre la complessità delle query e le operazioni di join.
Multiline 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.

2 KubernetesMetadata è 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

L'Esportazione nell'hub eventi e nell'account di archiviazione non è supportata se LogMessage in ingresso non è un codice JSON valido. Per ottenere prestazioni ottimali, generare log dei contenitori in formato JSON.

Abilitare lo schema ContainerLogV2

È possibile abilitare lo schema ContainerLogV2 per un cluster usando la regola di raccolta dati del cluster (Digital Cable Ready) o ConfigMap. Se entrambe le impostazioni sono abilitate, ConfigMap ha la precedenza. La tabella ContainerLog viene usata solo quando sia DCR (Digital Cable Ready) che ConfigMap vengono disattivati 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 funzionalità di filtro sia per i contenitori della piattaforma e del carico di lavoro. Queste funzionalità offrono un contesto più completo e una migliore visibilità sui carichi di lavoro.

Funzionalità

  • Schema ContainerLogV2 avanzato Quando i metadati dei log di Kubernetes sono abilitati, aggiunge una colonna a ContainerLogV2 denominata KubernetesMetadata 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 di log tramite annotazioni 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 (spazi dei nomi Kubernetes di sistema) I log della piattaforma vengono generati dai contenitori negli spazi dei nomi del sistema (o 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 del contenitore di sistema svolgono un ruolo fondamentale. Un esempio è il contenitore coredns nello spazio dei nomi kube-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.

Screenshot che mostra containerlogv2.

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 a Monitoraggio di Azure per materiale sussidiario sulla concessione dell'istanza di Grafana del ruolo Lettore di monitoraggio 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.

Screenshot che mostra il dashboard di Grafana.

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 multilinea abilitata, i log dei contenitori suddivisi in precedenza vengono uniti e inviati come singole voci alla tabella ContainerLogV2. Se la linea di punti log è superiore a 64 KB, verrà troncata a causa dei limiti dell'area di lavoro di Log Analytics. Questa funzionalità include anche il supporto per le tracce dello stack .NET, Go, Python e Java, che vengono visualizzate come singole voci nella tabella ContainerLogV2. Abilitare la registrazione su più righe con ConfigMap come descritto in Configurare la raccolta dati in Container Insights con ConfigMap.

Nota

La mappa di configurazione include ora un'opzione specifica del linguaggio, in cui i clienti possono selezionare solo i linguaggi a cui sono interessati. Questa funzionalità può essere abilitata modificando i linguaggi nell'opzione stacktrace_languages nella configmap.

Gli screenshot seguenti mostrano la registrazione multilinea per l'analisi dello stack di eccezioni Go:

Registrazione multilinea disabilitata

Screenshot che mostra la registrazione multilinea disabilitata.

Registrazione multilinea abilitata

Screenshot che mostra multilinea abilitata.

Analisi dello stack Java

Screenshot che mostra multilinea abilitato per Java.

Traccia dello stack Python

Screenshot che mostra multilinea abilitato per Python.

Passaggi successivi