Configurare la raccolta dati in Informazioni dettagliate sui contenitori usando ConfigMap

Questo articolo descrive come configurare la raccolta dati in Informazioni dettagliate sui contenitori usando ConfigMap. Config Mappe sono un meccanismo Kubernetes che consente di archiviare dati non riservati, ad esempio file di configurazione o variabili di ambiente.

ConfigMap viene usato principalmente per configurare la raccolta di dati dei log del contenitore e delle variabili di ambiente del cluster. È possibile configurare singolarmente i log stdout e stderr e abilitare anche la registrazione su più righe. L Configurazione specifica che è possibile eseguire con ConfigMap include:

  • Abilitare/disabilitare e filtrare gli spazi dei nomi per i log stdout e stderr
  • Abilitare/disabilitare la raccolta di variabili di ambiente per il cluster
  • Filtrare per gli eventi Kube normali
  • Selezionare lo schema del log
  • Abilitare/disabilitare la registrazione su più righe
  • Ignorare le impostazioni proxy

Importante

La configurazione completa della raccolta dati in Informazioni dettagliate contenitore può richiedere la modifica di ConfigMap e della regola di raccolta dati per il cluster, perché ogni metodo consente la configurazione di un set di impostazioni diverso.

Vedere Configurare la raccolta di dati in Informazioni dettagliate sui contenitori usando la regola di raccolta dati per un elenco di impostazioni e il processo per configurare la raccolta dati tramite DCR.

Prerequisiti

  • ConfigMap è un elenco globale e può essere applicato un solo ConfigMap all'agente per Informazioni dettagliate sui contenitori. L'applicazione di un altro oggetto ConfigMap sovraruolerà le impostazioni precedenti della raccolta ConfigMap.
  • La versione minima dell'agente supportata per raccogliere stdout, stderr e variabili di ambiente dai carichi di lavoro del contenitore è ciprod06142019 o versione successiva. Per verificare la versione dell'agente, nella scheda Nodo selezionare un nodo. Nel riquadro Proprietà prendere nota del valore della proprietà Tag immagine agente. Per altre informazioni sulle versioni dell'agente e sulle funzionalità incluse in ogni versione, vedere Note sulla versione dell'agente.

Configurare e distribuire ConfigMap

Usare la procedura seguente per configurare e distribuire il file di configurazione ConfigMap nel cluster:

  1. Scaricare il file YAML ConfigMap del modello e aprirlo in un editor. Se si dispone già di un file ConfigMap, è possibile usarlo.

  2. Modificare il file YAML ConfigMap con le personalizzazioni usando le impostazioni descritte in Impostazioni raccolta dati

  3. Creare un oggetto ConfigMap eseguendo il comando kubectl seguente:

    kubectl apply -f <configmap_yaml_file.yaml>
    

    Esempio:

    kubectl apply -f container-azm-ms-agentconfig.yaml
    

    La modifica della configurazione può richiedere alcuni minuti prima di rendere effettiva la modifica. Tutti i pod dell'agente di Monitoraggio di Azure nel cluster verranno quindi riavviati. Il riavvio è un riavvio in sequenza per tutti i pod dell'agente di Monitoraggio di Azure, quindi non tutti vengono riavviati contemporaneamente. Al termine dei riavvii, verrà visualizzato un messaggio simile al risultato seguente:

    configmap "container-azm-ms-agentconfig" created`.
    

Impostazioni di raccolta dati

Nella tabella seguente vengono descritte le impostazioni che è possibile configurare per controllare la raccolta dati.

Impostazione Tipo di dati Valore Descrizione
schema-version Stringa (con distinzione tra maiuscole e minuscole) v1 Usato dall'agente durante l'analisi di questo oggetto ConfigMap. La versione dello schema attualmente supportata è v1. La modifica di questo valore non è supportata e verrà rifiutata quando viene valutato ConfigMap.
config-version String Consente di tenere traccia della versione del file di configurazione nel sistema/repository del controllo del codice sorgente. Il numero massimo di caratteri consentiti è 10 e tutti gli altri caratteri vengono troncati.
[log_collection_settings]
[stdout] enabled Booleano true
false
Controlla se la raccolta di log del contenitore stdout è abilitata. Se impostato su true e nessuno spazio dei nomi viene escluso per la raccolta di log stdout, i log stdout verranno raccolti da tutti i contenitori in tutti i pod e i nodi del cluster. Se non specificato in ConfigMap, il valore predefinito è true.
[stdout] exclude_namespaces String Matrice delimitata da virgole Matrice di spazi dei nomi Kubernetes per i quali i log stdout non verranno raccolti. Questa impostazione è valida solo se enabled è impostata su true. Se non specificato in ConfigMap, il valore predefinito è
["kube-system","gatekeeper-system"].
[stderr] enabled Booleano true
false
Controlla se la raccolta di log del contenitore stderr è abilitata. Se impostato su true e nessuno spazio dei nomi viene escluso per la raccolta di log stderr, i log di stderr verranno raccolti da tutti i contenitori in tutti i pod e i nodi del cluster. Se non specificato in ConfigMap, il valore predefinito è true.
[stderr] exclude_namespaces String Matrice delimitata da virgole Matrice di spazi dei nomi Kubernetes per i quali i log di stderr non verranno raccolti. Questa impostazione è valida solo se enabled è impostata su true. Se non specificato in ConfigMap, il valore predefinito è
["kube-system","gatekeeper-system"].
[env_var] enabled Booleano true
false
Questa impostazione controlla la raccolta di variabili di ambiente in tutti i pod e i nodi del cluster. Se non specificato in ConfigMap, il valore predefinito è true. Se la raccolta di variabili di ambiente è abilitata a livello globale, è possibile disabilitarla per un contenitore specifico impostando la variabile AZMON_COLLECT_ENV di ambiente su False con un'impostazione Dockerfile o nel file di configurazione per il pod nella env: sezione . Se la raccolta di variabili di ambiente è disabilitata a livello globale, non è possibile abilitare la raccolta per un contenitore specifico. L'unico override che può essere applicato a livello di contenitore consiste nel disabilitare la raccolta quando è già abilitata a livello globale.
[enrich_container_logs] enabled Booleano true
false
Controlla l'arricchimento del log del contenitore per popolare i valori delle Name proprietà e Image per ogni record di log scritto nella tabella ContainerLogV2 o ContainerLog per tutti i log dei contenitori nel cluster. Se non specificato in ConfigMap, il valore predefinito è false.
[collect_all_kube_events] enabled Booleano true
false
Controlla se vengono raccolti eventi Kube di tutti i tipi. Per impostazione predefinita, gli eventi Kube con tipo Normal non vengono raccolti. Quando questa impostazione è true, gli eventi Normali non vengono più filtrati e vengono raccolti tutti gli eventi. Se non specificato in ConfigMap, il valore predefinito è false.
[schema] containerlog_schema_version Stringa (con distinzione tra maiuscole e minuscole) v2
v1
Imposta il formato di inserimento del log. Se v2, viene utilizzata la tabella ContainerLogV2 . Se v1, viene utilizzata la tabella ContainerLog (questa tabella è stata deprecata). Per i cluster che abilitano informazioni dettagliate sui contenitori usando l'interfaccia della riga di comando di Azure versione 2.54.0 o successiva, l'impostazione predefinita è v2. Per informazioni dettagliate, vedere Schema del log di Informazioni dettagliate sui contenitori.
[enable_multiline_logs] enabled Booleano true
false
Controlla se i log dei contenitori su più righe sono abilitati. Per informazioni dettagliate, vedere Registrazione su più righe in Informazioni dettagliate sui contenitori . Se non specificato in ConfigMap, il valore predefinito è false. È quindi necessario che l'impostazione schema sia v2.
[metric_collection_settings]
[collect_kube_system_pv_metrics] enabled Booleano true
false
Consente la raccolta delle metriche di utilizzo del volume permanente (PV) nello spazio dei nomi kube-system. Per impostazione predefinita, le metriche di utilizzo per volumi persistenti con attestazioni di volume persistente nello spazio dei nomi kube-system non vengono raccolte. Quando questa impostazione è impostata su true, vengono raccolte le metriche di utilizzo pv per tutti gli spazi dei nomi. Se non specificato in ConfigMap, il valore predefinito è false.
[agent_settings]
[proxy_config] ignore_proxy_settings Booleano true
false
Quando true, le impostazioni proxy vengono ignorate. Per gli ambienti Kubernetes abilitati per Arc e servizio Azure Kubernetes, se il cluster è configurato con proxy di inoltro, le impostazioni proxy vengono applicate automaticamente e usate per l'agente. Per determinate configurazioni, ad esempio con AMPLS + Proxy, è possibile che la configurazione del proxy venga ignorata. Se non specificato in ConfigMap, il valore predefinito è false.

Verificare la configurazione

Per verificare che la configurazione sia stata applicata correttamente a un cluster, usare il comando seguente per esaminare i log da un pod agente.

kubectl logs ama-logs-fdf58 -n kube-system

Se si verificano errori di configurazione dai pod dell'agente di Monitoraggio di Azure, l'output mostrerà errori simili all'esempio seguente:

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

Sono disponibili anche errori relativi all'applicazione delle modifiche di configurazione per la revisione. Sono disponibili le opzioni seguenti per la risoluzione dei problemi di modifica della configurazione:

  • Da un log dei pod agente usando lo stesso kubectl logs comando.

  • Dai log live. I log live mostrano errori simili all'esempio seguente:

    config::error::Exception while parsing config map for log collection/env variable settings: \nparse error on value \"$\" ($end), using defaults, please check config map for errors
    
  • Dalla tabella KubeMonAgentEvents nell'area di lavoro Log Analytics. I dati vengono inviati ogni ora con gravità dell'errore per gli errori di configurazione. Se non sono presenti errori, la voce nella tabella includerà dati con informazioni sulla gravità, che non segnalano errori. La proprietà Tags contiene altre informazioni sul pod e sull'ID contenitore in cui si è verificato l'errore e anche la prima occorrenza, l'ultima occorrenza e il conteggio nell'ultima ora.

Verificare la versione dello schema

Le versioni dello schema di configurazione supportate sono disponibili come annotazione pod (versioni dello schema) nel pod agente di Monitoraggio di Azure. È possibile visualizzarli con il comando kubectl seguente.

kubectl describe pod ama-logs-fdf58 -n=kube-system.

L'output simile all'esempio seguente viene visualizzato con le versioni dello schema di annotazione:

    Name:           ama-logs-fdf58
    Namespace:      kube-system
    Node:           aks-agentpool-95673144-0/10.240.0.4
    Start Time:     Mon, 10 Jun 2019 15:01:03 -0700
    Labels:         controller-revision-hash=589cc7785d
                    dsName=ama-logs-ds
                    pod-template-generation=1
    Annotations:    agentVersion=1.10.0.1
                  dockerProviderVersion=5.0.0-0
                    schema-versions=v1 

Domande frequenti

Come si abilita la raccolta di log per i contenitori nello spazio dei nomi kube-system tramite Helm?

La raccolta di log dai contenitori nello spazio dei nomi kube-system è disabilitata per impostazione predefinita. È possibile abilitare la raccolta di log impostando una variabile di ambiente nell'agente di Monitoraggio di Azure. Vedere la pagina GitHub di Informazioni dettagliate sui contenitori.

Passaggi successivi