Dela via


Konfigurera datainsamling i Container Insights med hjälp av ConfigMap

Den här artikeln beskriver hur du konfigurerar datainsamling i Container Insights med hjälp av ConfigMap. Config Kartor är en Kubernetes-mekanism som gör att du kan lagra icke-konfidentiella data, till exempel konfigurationsfiler eller miljövariabler.

ConfigMap används främst för att konfigurera datainsamling av containerloggar och miljövariabler i klustret. Du kan konfigurera stdout- och stderr-loggarna individuellt och även aktivera flerradsloggning. l Specifik konfiguration som du kan utföra med ConfigMap innehåller:

  • Aktivera/inaktivera och namnområdesfiltrering för stdout- och stderr-loggar
  • Aktivera/inaktivera samling miljövariabler för klustret
  • Filtrera efter normala Kube-händelser
  • Välj loggschema
  • Aktivera/inaktivera flerradsloggning
  • Ignorera proxyinställningar

Viktigt!

Fullständig konfiguration av datainsamling i Container Insights kan kräva redigering av både ConfigMap och datainsamlingsregeln (DCR) för klustret eftersom varje metod tillåter konfiguration av en annan uppsättning inställningar.

Se Konfigurera datainsamling i Container Insights med hjälp av datainsamlingsregeln för en lista över inställningar och processen för att konfigurera datainsamling med hjälp av DCR.

Förutsättningar

  • ConfigMap är en global lista och det kan bara finnas en ConfigMap som tillämpas på agenten för Container Insights. Om du tillämpar en annan ConfigMap överskrids de tidigare inställningarna för ConfigMap-samlingen.
  • Den lägsta agentversion som stöds för att samla in stdout-, stderr- och miljövariabler från containerarbetsbelastningar är ciprod06142019 eller senare. Om du vill verifiera agentversionen väljer du en nod på fliken Nod . I fönstret Egenskaper noterar du värdet för egenskapen Agentavbildningstagg . Mer information om agentversionerna och vad som ingår i varje version finns i Viktig information om agenten.

Konfigurera och distribuera ConfigMap

Använd följande procedur för att konfigurera och distribuera konfigurationsfilen ConfigMap till klustret:

  1. Ladda ned YAML-filen för mallen ConfigMap och öppna den i ett redigeringsprogram. Om du redan har en ConfigMap-fil kan du använda den.

  2. Redigera YAML-filen ConfigMap med dina anpassningar med hjälp av inställningarna som beskrivs i inställningarna för datainsamling

  3. Skapa en ConfigMap genom att köra följande kubectl-kommando:

    kubectl apply -f <configmap_yaml_file.yaml>
    

    Exempel:

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

    Konfigurationsändringen kan ta några minuter innan den börjar gälla. Sedan startas alla Azure Monitor Agent-poddar i klustret om. Omstarten är en löpande omstart för alla Azure Monitor Agent-poddar, så alla startas inte om samtidigt. När omstarterna är klara får du ett meddelande som liknar följande resultat:

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

Inställningar för datainsamling

I följande tabell beskrivs de inställningar som du kan konfigurera för att styra datainsamling.

Inställning Datatyp Värde beskrivning
schema-version Sträng (skiftlägeskänslig) v1 Används av agenten när du parsar den här ConfigMap. Schemaversionen som stöds för närvarande är v1. Det går inte att ändra det här värdet och avvisas när ConfigMap utvärderas.
config-version String Gör att du kan hålla reda på den här konfigurationsfilens version i källkontrollsystemet/lagringsplatsen. Maximalt antal tillåtna tecken är 10 och alla andra tecken trunkeras.
[log_collection_settings]
[stdout] enabled Booleskt true
falskt
Styr om stdout-containerloggsamling är aktiverad. När det är inställt på true och inga namnrymder undantas för stdout-loggsamling samlas stdout-loggar in från alla containrar över alla poddar och noder i klustret. Om det inte anges i ConfigMap är truestandardvärdet .
[stdout] exclude_namespaces String Kommaavgränsad matris Matris med Kubernetes-namnområden för vilka stdout-loggar inte samlas in. Den här inställningen gäller endast om enabled är inställd på true. Om det inte anges i ConfigMap är standardvärdet
["kube-system","gatekeeper-system"].
[stderr] enabled Booleskt true
falskt
Styr om stderr-containerloggsamlingen är aktiverad. När det är inställt på true och inga namnområden undantas för stderr-loggsamlingen samlas stderr-loggar in från alla containrar över alla poddar och noder i klustret. Om det inte anges i ConfigMap är truestandardvärdet .
[stderr] exclude_namespaces String Kommaavgränsad matris Matris med Kubernetes-namnområden för vilka stderr-loggar inte samlas in. Den här inställningen gäller endast om enabled är inställd på true. Om det inte anges i ConfigMap är standardvärdet
["kube-system","gatekeeper-system"].
[env_var] enabled Booleskt true
falskt
Den här inställningen styr miljövariabelsamlingen för alla poddar och noder i klustret. Om det inte anges i ConfigMap är truestandardvärdet . Om en samling miljövariabler är globalt aktiverad kan du inaktivera den för en specifik container genom att ange miljövariabeln AZMON_COLLECT_ENV till False antingen med en Dockerfile-inställning eller i konfigurationsfilen för podden under env: avsnittet . Om en samling miljövariabler är globalt inaktiverad kan du inte aktivera insamling för en specifik container. Den enda åsidosättning som kan tillämpas på containernivå är att inaktivera samlingen när den redan är aktiverad globalt.
[enrich_container_logs] enabled Booleskt true
falskt
Styr berikning av containerloggar för att fylla i Name egenskapsvärdena och Image för varje loggpost som skrivs till tabellen ContainerLog för alla containerloggar i klustret. Om det inte anges i ConfigMap är falsestandardvärdet .
[collect_all_kube_events] enabled Booleskt true
falskt
Styr om Kube-händelser av alla typer samlas in. Som standard samlas inte Kube-händelser med typen Normal in. När den här inställningen är truefiltreras inte längre normalhändelserna och alla händelser samlas in. Om det inte anges i ConfigMap är falsestandardvärdet .
[schema] containerlog_schema_version Sträng (skiftlägeskänslig) v2
v1
Anger logginmatningsformatet. Om v2används tabellen ContainerLogV2. Om v1används tabellen ContainerLog (den här tabellen har föråldrats). För kluster som aktiverar containerinsikter med azure CLI version 2.54.0 eller senare är v2standardinställningen . Mer information finns i Loggschema för Container Insights.
[enable_multiline_logs] enabled Booleskt true
falskt
Styr om flerradscontainerloggar är aktiverade. Mer information finns i Flerradsloggning i Container Insights . Om det inte anges i ConfigMap är falsestandardvärdet . Detta kräver att inställningen schema är v2.
[metric_collection_settings]
[collect_kube_system_pv_metrics] enabled Booleskt true
falskt
Tillåter att mått för beständiga volymer (PV) samlas in i kube-system-namnområdet. Som standard samlas inte användningsstatistik för beständiga volymer med beständiga volymanspråk i kube-system-namnområdet in. När den här inställningen är inställd truepå samlas PV-användningsstatistik för alla namnområden in. Om det inte anges i ConfigMap är falsestandardvärdet .
[agent_settings]
[proxy_config] ignore_proxy_settings Booleskt true
falskt
När trueignoreras proxyinställningarna. För både AKS- och Arc-aktiverade Kubernetes-miljöer, om klustret har konfigurerats med vidarebefordrad proxy, tillämpas proxyinställningarna automatiskt och används för agenten. För vissa konfigurationer, till exempel med AMPLS + Proxy, kanske du vill att proxykonfigurationen ska ignoreras. Om det inte anges i ConfigMap är falsestandardvärdet .

Verifiera konfigurationen

Om du vill kontrollera att konfigurationen har tillämpats på ett kluster använder du följande kommando för att granska loggarna från en agentpodd.

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

Om det finns konfigurationsfel från Azure Monitor Agent-poddarna visar utdata fel som liknar följande exempel:

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

Fel som rör tillämpning av konfigurationsändringar är också tillgängliga för granskning. Följande alternativ är tillgängliga för att utföra mer felsökning av konfigurationsändringar:

  • Från en agentpoddlogg med samma kubectl logs kommando.

  • Från liveloggar. Liveloggar visar fel som liknar följande exempel:

    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
    
  • Från tabellen KubeMonAgentEvents på din Log Analytics-arbetsyta. Data skickas varje timme med allvarlighetsgrad för fel vid konfigurationsfel. Om det inte finns några fel kommer posten i tabellen att ha data med allvarlighetsgradsinformation, som inte rapporterar några fel. Egenskapen Taggar innehåller mer information om podden och container-ID:t där felet inträffade och även den första förekomsten, den senaste förekomsten och antalet under den senaste timmen.

Verifiera schemaversionen

Konfigurationsschemaversioner som stöds är tillgängliga som poddanteckning (schemaversioner) i Azure Monitor Agent-podden. Du kan se dem med följande kubectl-kommando.

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

Utdata som liknar följande exempel visas med anteckningsschemaversionerna:

    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 

Vanliga frågor och svar

Hur gör jag för att aktivera logginsamling för containrar i kube-system-namnområdet via Helm?

Loggsamlingen från containrar i kube-system-namnområdet är inaktiverad som standard. Du kan aktivera logginsamling genom att ange en miljövariabel i Azure Monitor Agent. Se GitHub-sidan containerinsikter.

Nästa steg