Configurare lo schema ContainerLogV2

Informazioni dettagliate sui 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. Questo schema è la tabella predefinita per i clienti che esempo l'onboarding di Informazioni dettagliate sui contenitori con l'autenticazione dell'identità gestita. Abilitare ContainerLogV2 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 viene ritirato il 30 settembre 2026. Dopo tale data, la tabella legacy smette di ricevere dati. Eseguire la migrazione a ContainerLogV2 prima di evitare lacune nella raccolta dei log. Per cambiare tabella, vedere Abilitare lo schema ContainerLogV2.

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 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 è json valido e ha una chiave denominata level, viene usato il relativo valore. In caso contrario, la corrispondenza delle parole chiave basata su regex deduce LogLevel da LogMessage. Questa inferenza potrebbe comportare alcune sottoclassifiche. LogLevelè un campo stringa con un valore come CRITICAL, ERROR, WARNINGINFO, DEBUG, TRACE, o UNKNOWN.

2KubernetesMetadata è una colonna facoltativa abilitata con metadati kubernetes. Il valore di questo campo è JSON con i campi podLabels, podAnnotations, podUid, imageimageID, imageRepo, e imageTag.

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 in Hub eventi e nell'account di archiviazione è supportata se il codice in ingresso LogMessage è JSON valido o una stringa normale valida.

Se il LogMessage file è in formato JSON non valido, tali messaggi di log vengono 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

Abilitare lo schema ContainerLogV2 per un cluster usando il profilo di log del cluster o ConfigMap. Se entrambe le impostazioni sono abilitate, ConfigMap ha la precedenza. La ContainerLog tabella viene utilizzata solo quando entrambe sono impostate in modo esplicito su off.

Importante

L'impostazione ContainerLogV2 non controlla se i dati vengono raccolti o meno. Specifica solo la tabella a cui vengono inviati i dati quando vengono raccolti.

Prima di abilitare lo schema ContainerLogV2 , valutare se sono presenti regole di avviso che si basano sulla tabella ContainerLog . Aggiornare questi avvisi per usare la nuova tabella. Eseguire la query di Azure Resource Graph seguente 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 dei metadati e dei log kubernetes estende lo schema ContainerLogV2 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à migliorano la visibilità dei carichi di lavoro.

Nota

I metadati e i log kubernetes che filtrano Grafana dashboard non supportano attualmente i log di base.

Funzionalità

  • Schema ContainerLogV2 avanzato Quando si abilitano i metadati di Kubernetes, la ContainerLogV2 tabella include una nuova colonna denominata KubernetesMetadata. Questa colonna semplifica la risoluzione dei problemi usando semplici query di log e rimuove la necessità di creare un join con altre tabelle. I campi in questa colonna includono podLabels, podUidpodAnnotations, , image, imageID, imageRepoe imageTag. Per abilitare questa funzionalità, vedere Abilitare i metadati kubernetes.

  • Livello di log Questa funzionalità aggiunge una LogLevel colonna a ContainerLogV2 con i valori CRITICALpossibili , , WARNINGERROR, INFODEBUG, TRACE, o UNKNOWN. Questa colonna consente di valutare l'integrità dell'applicazione in base al livello di gravità. Il dashboard di Grafana visualizza le tendenze a livello di log nel tempo per 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 informazioni dettagliate sul volume di log, sulla frequenza dei log e sui record di log. Il dashboard suddivide i dati in base a computer, pod e contenitore per la risoluzione dei problemi di destinazione. Per installare il dashboard, vedere Installare il dashboard di Grafana.

  • 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 nomi kube-system.

Abilitare i metadati di Kubernetes

Importante

La raccolta di metadati Kubernetes richiede l'autenticazione dell'identità gestita e ContainerLogV2.

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 KubernetesMetadata colonna viene visualizzata in qualsiasi query di log per la ContainerLogV2 tabella, come illustrato nello screenshot seguente.

La screenshot che mostra containerlogv2.

Installare il dashboard di Grafana

Importante

Se Grafana è stato abilitato usando le linee guida in Enable monitoring for Kubernetes clusters l'istanza di Grafana dovrebbe avere già accesso all'area di lavoro Monitoraggio di Azure per le metriche 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 per Monitoraggio di Azure per indicazioni su come concedere all'istanza di Grafana il ruolo lettore di monitoraggio per l'area di lavoro Log Analytics.

Importare il dashboard dalla raccolta Grafana in Dashboard ContainerLogV2. Aprire il dashboard e selezionare i valori per DataSource, Subscription, ResourceGroup, Cluster, Namespace e Labels.

Screenshot che mostra il dashboard di Grafana.

Nota

Quando si carica inizialmente il dashboard di Grafana, è possibile che vengano visualizzati errori perché le variabili non sono ancora selezionate. Per evitare che ciò si ripeta, salvare il dashboard dopo aver selezionato un set di variabili in modo che diventi l'impostazione predefinita nella prima apertura.

Registrazione multilinea disabilitata

La registrazione su più righe unisce i log dei contenitori suddivisi in precedenza e li invia come singole voci alla ContainerLogV2 tabella. Abilitare la registrazione su più righe usando ConfigMap come descritto in Configurare la raccolta di log dei contenitori 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 su più righe 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.
  • La registrazione su più righe non è supportata per le tracce dello stack delle eccezioni Python con fine-grained-error-locations-in-tracebacks. Per il funzionamento della registrazione multilinea, è necessario disattivare questa funzionalità, come descritto nella documentazione di Python.
  • Per impostazione predefinita, il runtime del contenitore tronca le righe di log a 16 KB. Quando si abilita la registrazione su più righe, ContainerLogV2 supporta le righe di log fino a 64 KB.

Esempi

Registrazione multilinea del tracciamento dello stack di eccezioni Go disabilitata

Screenshot che mostra la registrazione multilinea disabilitata.

Registrazione multilinea del tracciamento dello stack di eccezioni Go abilitata

Screenshot che mostra multilinea abilitata.

Registrazione su più righe della traccia dello stack Java abilitata

Screenshot che mostra la funzione Multi-line abilitata per Java.

Registrazione su più righe della traccia dello stack Python abilitata

Screenshot che mostra Multilinea abilitata per Python.

Passaggi successivi