Logboekverzameling filteren in Container Insights
In dit artikel worden de verschillende filteropties beschreven die beschikbaar zijn in Container Insights. Kubernetes-clusters genereren een grote hoeveelheid gegevens die worden verzameld door Container Insights. 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.
Belangrijk
In dit artikel worden verschillende filteropties beschreven waarvoor u de DCR of ConfigMap voor een bewaakt cluster moet wijzigen. Zie Logboekverzameling configureren in Container Insights voor meer informatie over het uitvoeren van deze configuratie.
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.
Met behulp van de regel voor gegevensverzameling (DCR) kunt u stdout- en stderr-logboeken in- of uitschakelen en specifieke naamruimten van elke logboeken filteren. Instellingen voor containerlogboeken en naamruimtefilters zijn opgenomen in de kostenvoorinstellingen die zijn geconfigureerd in Azure Portal. U kunt deze waarden afzonderlijk instellen met behulp van de andere DCR-configuratiemethoden.
Met behulp van ConfigMap kunt u de verzameling en stderr
logboeken afzonderlijk configureren voor de clustery, zodat u ervoor kunt kiezen om het ene stdout
en niet de andere in te schakelen.
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
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-system
, gatekeeper-system
, calico-system
, azure-arc
, , kube-public
en kube-node-lease
.
Schakel platformlogboeken in met behulp van ConfigMap met de collect_system_pod_logs
instelling. 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.
Schakel filteren op basis van aantekeningen in met behulp van ConfigMap met de volgende instellingen.
[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
Schakel het verzamelen van omgevingsvariabelen in voor alle pods en knooppunten in het cluster met behulp van ConfigMap met de volgende instellingen.
[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.
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.