Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Kubernetes-clusters genereren een grote hoeveelheid gegevens die worden verzameld door Azure Monitor. Omdat er kosten in rekening worden gebracht voor de opname en retentie van deze gegevens, kunt u de bewakingskosten aanzienlijk verlagen door gegevens te filteren die u niet nodig hebt. In dit artikel wordt beschreven hoe u een ConfigMap gebruikt om de verzameling containerlogboeken en omgevingsvariabelen van uw cluster te configureren en filteren. U kunt ook een ConfigMap gebruiken om het verzamelen van platformlogboeken van systeem-Kubernetes-naamruimten in te schakelen en om annotatiefilters in te schakelen voor workloads.
Aanbeveling
Voordat u een van de filteropties implementeert die in dit artikel worden beschreven, moet u ervoor zorgen dat u een logboekverzamelingsprofiel selecteert dat overeenkomt met uw vereisten. Gebruik de informatie in dit artikel om de instellingen voor gegevensverzameling voor uw cluster verder te verfijnen.
Vereiste voorwaarden
- De minimaal ondersteunde agentversie om stdout, stderr en omgevingsvariabelen vanuit containerworkloads te verzamelen is ciprod06142019 of hoger.
ConfigMap configureren en implementeren
Gebruik de volgende procedure om het configuratiebestand ConfigMap in uw cluster te configureren en te implementeren:
Download de configuratiesjabloon ConfigMap van de agent op https://aka.ms/container-azm-ms-agentconfig en open deze in een editor.
Bewerk het YAML-bestand ConfigMap met uw aanpassingen. De sjabloon bevat alle geldige instellingen met beschrijvingen. Als u een instelling wilt inschakelen, verwijdert u het opmerkingsteken (#) en stelt u de waarde ervan in.
Maak een ConfigMap door de volgende kubectl-opdracht uit te voeren:
kubectl config set-context <cluster-name> kubectl apply -f <configmap_yaml_file.yaml> # Example: kubectl config set-context my-cluster kubectl apply -f container-azm-ms-agentconfig.yamlHet kan enkele minuten duren voordat de configuratiewijziging is voltooid. Vervolgens worden alle Azure Monitor Agent-pods in het cluster opnieuw opgestart. Het opnieuw opstarten is een doorlopende herstart voor alle Azure Monitor Agent-pods, dus niet allemaal tegelijk opnieuw opstarten. Wanneer de herstart is voltooid, ontvangt u een bericht dat vergelijkbaar is met het volgende resultaat:
configmap "container-azm-ms-agentconfig" created`.
Configuratie controleren
Als u wilt controleren of de configuratie is toegepast op een cluster, gebruikt u de volgende opdracht om de logboeken van een agentpod te controleren.
kubectl logs ama-logs-fdf58 -n kube-system -c ama-logs
Als er configuratiefouten zijn van de Azure Monitor Agent-pods, worden in de uitvoer fouten weergegeven die vergelijkbaar zijn met de volgende:
***************Start Config Processing********************
config::unsupported/missing config schema version - 'v21' , using defaults
Gebruik de volgende opties om verdere probleemoplossing van configuratiewijzigingen uit te voeren:
Gebruik dezelfde
kubectl logsopdracht vanuit een agent-pod.Bekijk livelogboeken op fouten die vergelijkbaar zijn met de volgende:
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
Gegevens worden elk uur naar de KubeMonAgentEvents tabel in uw Log Analytics-werkruimte verzonden met fout ernst voor configuratiefouten. Als er geen fouten zijn, bevat de vermelding in de tabel gegevens over ernst, dat meldt dat er geen fouten zijn. De Tags kolom bevat meer informatie over de pod en container-id waarop de fout is opgetreden, evenals de eerste keer, de laatste keer en het aantal in de afgelopen uur.
Schemaversie controleren
Ondersteunde configuratieschemaversies zijn beschikbaar als podannotatie (schemaversies) op de Azure Monitor Agent-pod. U kunt deze zien met de volgende kubectl-opdracht.
kubectl describe pod ama-logs-fdf58 -n=kube-system.
Containerlogboeken filteren
Containerlogboeken zijn stderr- en stdout-logboeken die worden gegenereerd door containers in uw Kubernetes-cluster. Deze logboeken worden opgeslagen in de ContainerLogV2-tabel in uw Log Analytics-werkruimte. Standaard worden alle containerlogboeken verzameld, maar u kunt logboeken uit specifieke naamruimten filteren of het verzamelen van containerlogboeken volledig uitschakelen.
Bewerk de log_collection_settings sectie van de ConfigMap om de verzameling en stderrstdout logboeken afzonderlijk voor het cluster te configureren. In het volgende voorbeeld ziet u de ConfigMap-instellingen voor het verzamelen van stdout en stderr, met uitzondering van de kube-system en gatekeeper-system naamruimten.
[log_collection_settings]
[log_collection_settings.stdout]
enabled = true
exclude_namespaces = ["kube-system","gatekeeper-system"]
[log_collection_settings.stderr]
enabled = true
exclude_namespaces = ["kube-system","gatekeeper-system"]
[log_collection_settings.enrich_container_logs]
enabled = true
Notitie
U kunt ook naamruimtefilters configureren in het logboekprofiel voor het cluster, maar dit geldt niet voor gegevens die naar ContainerLogV2 worden verzonden. Deze gegevens kunnen alleen worden gefilterd met behulp van de ConfigMap.
Platformlogboekfilters (Systeem Kubernetes-naamruimten)
Containerlogboeken van de systeemnaamruimte worden standaard uitgesloten van verzameling om de Kosten van Log Analytics te minimaliseren. Containerlogboeken van systeemcontainers kunnen echter essentieel zijn in specifieke scenario's voor probleemoplossing. Deze functie is beperkt tot de volgende systeemnaamruimten:
kube-systemgatekeeper-systemcalico-systemazure-arckube-public-
kube-node-lease.
Bewerk de collect_system_pod_logs instelling in de log_collection_settings sectie van de ConfigMap om platformlogboeken voor het cluster in te schakelen. U moet er ook voor zorgen dat de systeemnaamruimte zich niet in de exclude_namespaces instelling bevindt.
In het volgende voorbeeld ziet u de ConfigMap-instellingen voor het verzamelen van stdout- en stderr-logboeken van coredns de container in de kube-system naamruimte.
[log_collection_settings]
[log_collection_settings.stdout]
enabled = true
exclude_namespaces = ["gatekeeper-system"]
collect_system_pod_logs = ["kube-system:coredns"]
[log_collection_settings.stderr]
enabled = true
exclude_namespaces = ["kube-system","gatekeeper-system"]
collect_system_pod_logs = ["kube-system:coredns"]
Filteren op basis van aantekeningen voor workloads
Met filteren op basis van aantekeningen kunt u logboekverzameling uitsluiten voor bepaalde pods en containers door aantekeningen te maken voor de pod. Dit kan de opnamekosten van uw logboeken aanzienlijk verminderen en u kunt zich richten op relevante informatie zonder ruis te doorzoeken.
Bewerk de filter_using_annotations instelling in de sectie van de log_collection_settings ConfigMap om annotatiegebaseerde filters in te schakelen.
[log_collection_settings.filter_using_annotations]
enabled = true
U moet ook de vereiste aantekeningen toevoegen aan de specificatie van uw workloadpod. In de volgende tabel worden verschillende mogelijke podaantekeningen gemarkeerd.
| Annotatie | Beschrijving |
|---|---|
fluentbit.io/exclude: "true" |
Sluit beide stdout- en stderr-streams uit op alle containers in de Pod |
fluentbit.io/exclude_stdout: "true" |
Sluit alleen stdout-stream uit voor alle containers in de pod |
fluentbit.io/exclude_stderr: "true" |
Sluit alleen stderr-stream uit op alle containers in de pod |
fluentbit.io/exclude_container1: "true" |
Sluit beide stdout- en stderr-streams alleen uit voor de container1 in de pod |
fluentbit.io/exclude_stdout_container1: "true" |
Alleen stdout uitsluiten voor de container1 in de pod |
Notitie
Deze aantekeningen zijn vloeiend op basis van bit. Als u uw eigen fluent-bit-oplossing voor logboekverzameling gebruikt met het Filter van de Kubernetes-invoegtoepassing en uitsluiting op basis van aantekeningen, wordt het verzamelen van logboeken van zowel Container Insights als uw oplossing gestopt.
Hieronder volgt een voorbeeld van fluentbit.io/exclude: "true" aantekeningen in een podspecificatie:
apiVersion: v1
kind: Pod
metadata:
name: apache-logs
labels:
app: apache-logs
annotations:
fluentbit.io/exclude: "true"
spec:
containers:
- name: apache
image: edsiper/apache_logs
Omgevingsvariabelen filteren
Bewerk de log_collection_settings.env_var instelling in de log_collection_settings sectie van de ConfigMap om het verzamelen van omgevingsvariabelen in alle pods en knooppunten in te schakelen.
[log_collection_settings.env_var]
enabled = true
Als het verzamelen van omgevingsvariabelen globaal is ingeschakeld, kunt u deze uitschakelen voor een specifieke container door de omgevingsvariabele AZMON_COLLECT_ENV in te False stellen op een Dockerfile-instelling of in het configuratiebestand voor de pod onder de env: sectie. Als het verzamelen van omgevingsvariabelen globaal is uitgeschakeld, kunt u verzameling niet inschakelen voor een specifieke container. De enige onderdrukking die op containerniveau kan worden toegepast, is het uitschakelen van verzameling wanneer deze al wereldwijd is ingeschakeld.
ConfigMap-instellingen
In de volgende tabel worden de instellingen beschreven die u kunt configureren om het verzamelen van gegevens te beheren met de ConfigMap voor agentconfiguratie.
| Configuratie | Gegevenstype | Waarde | Beschrijving |
|---|---|---|---|
schema-version |
Tekenreeks (hoofdlettergevoelig) | v1 | Wordt door de agent gebruikt bij het parseren van deze ConfigMap. De momenteel ondersteunde schemaversie is v1. Het wijzigen van deze waarde wordt niet ondersteund en wordt geweigerd wanneer de ConfigMap wordt geƫvalueerd. |
config-version |
Snaar / Touwtje | Hiermee kunt u de versie van dit configuratiebestand bijhouden in uw broncodebeheersysteem/opslagplaats. Maximaal toegestane tekens zijn 10 en alle andere tekens worden afgekapt. | |
| [logverzamelingsinstellingen] | |||
[stdout]enabled |
Booleaan | true false |
Hiermee bepaalt u of het verzamelen van stdout-containerlogboeken is ingeschakeld. Als true is ingesteld en er geen naamruimten worden uitgesloten voor het verzamelen van stdout-logs, worden stdout-logs verzameld van alle containers van alle pods en knooppunten binnen het cluster. Als deze niet is opgegeven in de ConfigMap, is truede standaardwaarde . |
[stdout]exclude_namespaces |
Snaar / Touwtje | Door komma's gescheiden reeks | Matrix van Kubernetes-naamruimten waarvoor stdout-logboeken niet worden verzameld. Deze instelling werkt alleen als enabled is ingesteld op true. Als deze niet is opgegeven in de ConfigMap, is de standaardwaarde["kube-system","gatekeeper-system"]. |
[stderr]enabled |
Booleaan | true false |
Hiermee bepaalt u of de verzameling containerlogboeken van stderr is ingeschakeld. Wanneer ingesteld op true en geen namespaces worden uitgesloten voor het verzamelen van stderr-logboeken, worden stderr-logboeken verzameld van alle containers in alle pods en knooppunten in het cluster. Als deze niet is opgegeven in de ConfigMap, is truede standaardwaarde . |
[stderr]exclude_namespaces |
Snaar / Touwtje | Door komma's gescheiden reeks | Matrix van Kubernetes-naamruimten waarvoor stderr-logboeken niet worden verzameld. Deze instelling werkt alleen als enabled is ingesteld op true. Als deze niet is opgegeven in de ConfigMap, is de standaardwaarde["kube-system","gatekeeper-system"]. |
[env_var]enabled |
Booleaan | true false |
Hiermee bepaalt u de verzameling omgevingsvariabelen voor alle pods en knooppunten in het cluster. Als deze niet is opgegeven in de ConfigMap, is truede standaardwaarde . |
[enrich_container_logs]enabled |
Booleaan | true false |
Hiermee bepaalt u de verrijking van containerlogboeken om de Name en Image eigenschapswaarden te vullen voor elke logboekrecord die naar de ContainerLog-tabel is geschreven voor alle containerlogboeken in het cluster. Als deze niet is opgegeven in de ConfigMap, is falsede standaardwaarde . |
[collect_all_kube_events]enabled |
Booleaan | true false |
Hiermee bepaalt u of Kube-gebeurtenissen van alle typen worden verzameld. Standaard worden de Kube-gebeurtenissen met het type Normaal niet verzameld. Als deze instelling is trueingesteld, worden de normale gebeurtenissen niet meer gefilterd en worden alle gebeurtenissen verzameld. Als deze niet is opgegeven in de ConfigMap, is falsede standaardwaarde . |
[schema]containerlog_schema_version |
Tekenreeks (hoofdlettergevoelig) | v2 v1 |
Hiermee stelt u de indeling voor logverwerking in. Als v2 geldt, wordt de ContainerLogV2-tabel gebruikt. Wanneer v1 de ContainerLog tabel wordt gebruikt (deze tabel is verouderd). Voor clusters die containerinzichten inschakelen met azure CLI versie 2.54.0 of hoger, is v2de standaardinstelling. Zie het Container Insights-logboekschema voor meer informatie. |
[enable_multiline_logs]enabled |
Booleaan | true false |
Hiermee bepaalt u of containerlogboeken met meerdere regels zijn ingeschakeld. Zie Logboekregistratie met meerdere regels in Container Insights voor meer informatie. Als deze niet is opgegeven in de ConfigMap, is falsede standaardwaarde . Hiervoor moet de schema instelling zijn v2. |
[metadata_collection]enabled |
Booleaan | true false |
Hiermee bepaalt u of metagegevens worden verzameld in de KubernetesMetadata kolom van de ContainerLogV2 tabel. |
[metadata_collection]include_fields |
Snaar / Touwtje | Door komma's gescheiden reeks | Lijst met metagegevensvelden die moeten worden opgenomen. Als de instelling niet wordt gebruikt, worden alle velden verzameld. Geldige waarden zijn ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"] |
[log_collection_settings.multi_tenancy]enabled |
Booleaan | true false |
Hiermee bepaalt u of multitenancy is ingeschakeld. Zie Beheerde logboekregistratie voor meerdere tenants voor meer informatie. Als deze niet is opgegeven in de ConfigMap, is falsede standaardwaarde . |
| [instellingen_voor_metriekverzameling] | |||
[collect_kube_system_pv_metrics]enabled |
Booleaan | true false |
Hiermee kunnen metrische gegevens over persistent volumegebruik (PV) worden verzameld in de kube-system-naamruimte. Standaard worden metrische gegevens over gebruik voor permanente volumes met permanente volumeclaims in de kube-system-naamruimte niet verzameld. Wanneer deze instelling is ingesteld op true, worden gebruiksstatistieken voor PV voor alle naamruimten verzameld. Als deze niet is opgegeven in de ConfigMap, is falsede standaardwaarde . |
| [agent_settings] | |||
[proxy_config]ignore_proxy_settings |
Booleaan | true false |
Wanneer trueworden proxy-instellingen genegeerd. Voor kubernetes-omgevingen met AKS en Arc worden proxy-instellingen automatisch toegepast en gebruikt voor de agent als uw cluster is geconfigureerd met een doorstuurproxy. Voor bepaalde configuraties, zoals met AMPLS + Proxy, wilt u mogelijk dat de proxyconfiguratie wordt genegeerd. Als deze niet is opgegeven in de ConfigMap, is falsede standaardwaarde . |
| [agent_settings.fbit_config] | |||
enable_internal_metrics |
Booleaan | true false |
Hiermee bepaalt u of het verzamelen van interne metrische gegevens is ingeschakeld. Als deze niet is opgegeven in de ConfigMap, is falsede standaardwaarde . |
Gevolgen voor visualisaties en waarschuwingen
Als u aangepaste waarschuwingen of werkmappen hebt met containerinzichtgegevens, kan het wijzigen van uw instellingen voor gegevensverzameling deze ervaringen verminderen. Als u naamruimten uitsluit of de frequentie van gegevensverzameling verlaagt, controleert u uw bestaande waarschuwingen, dashboards en werkmappen met behulp van deze gegevens.
Als u wilt scannen op waarschuwingen die naar deze tabellen verwijzen, voert u de volgende Azure Resource Graph-query uit:
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 "Perf" or properties contains "InsightsMetrics" or properties contains "ContainerInventory" or properties contains "ContainerNodeInventory" or properties contains "KubeNodeInventory" or properties contains"KubePodInventory" or properties contains "KubePVInventory" or properties contains "KubeServices" or properties contains "KubeEvents"
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc
Volgende stappen
- Zie Gegevenstransformaties in Container Insights om transformaties toe te voegen aan de DCR waarmee gegevens verder worden gefilterd op basis van gedetailleerde criteria.