Share via


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-publicen 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