Aracılığıyla paylaş


Kapsayıcı içgörülerinde filtre günlüğü koleksiyonu

Bu makalede, Kapsayıcı içgörülerinde kullanılabilen farklı filtreleme seçenekleri açıklanmaktadır. Kubernetes kümeleri, Kapsayıcı içgörüleri tarafından toplanan büyük miktarda veri oluşturur. Bu verilerin alımı ve elde tutulması için ücretlendirildiğinizden, ihtiyacınız olmayan verileri filtreleyerek izleme maliyetlerinizi önemli ölçüde azaltabilirsiniz.

Önemli

Bu makalede, izlenen bir küme için DCR veya ConfigMap'i değiştirmenizi gerektiren farklı filtreleme seçenekleri açıklanmaktadır. Bu yapılandırmayı gerçekleştirme hakkında ayrıntılı bilgi için bkz . Kapsayıcı içgörülerinde günlük toplamayı yapılandırma.

Kapsayıcı günlüklerini filtreleme

Kapsayıcı günlükleri, Kubernetes kümenizdeki kapsayıcılar tarafından oluşturulan stderr ve stdout günlükleridir. Bu günlükler Log Analytics çalışma alanınızdaki ContainerLogV2 tablosunda depolanır. Varsayılan olarak tüm kapsayıcı günlükleri toplanır, ancak belirli ad alanlarının günlüklerini filtreleyebilir veya kapsayıcı günlüklerinin toplanmasını tamamen devre dışı bırakabilirsiniz.

Veri toplama kuralını (DCR) kullanarak stdout ve stderr günlüklerini etkinleştirebilir veya devre dışı bırakabilir ve her birinden belirli ad alanlarını filtreleyebilirsiniz. Kapsayıcı günlükleri ve ad alanı filtreleme ayarları, Azure portalında yapılandırılan maliyet ön ayarlarına eklenir ve bu değerleri diğer DCR yapılandırma yöntemlerini kullanarak tek tek ayarlayabilirsiniz.

ConfigMap'i kullanarak küme için ve stdout günlüklerinin stderr koleksiyonunu ayrı olarak yapılandırabilir, böylece birini değil, diğerini etkinleştirmeyi seçebilirsiniz.

Aşağıdaki örnek, ve gatekeeper-system ad alanları dışında kube-system stdout ve stderr toplamak için ConfigMap ayarlarını gösterir.

[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

Platform günlüğü filtreleme (Sistem Kubernetes ad alanları)

Varsayılan olarak, Log Analytics maliyetini en aza indirmek için sistem ad alanından kapsayıcı günlükleri koleksiyon dışında tutulur. Sistem kapsayıcılarının kapsayıcı günlükleri, belirli sorun giderme senaryolarında kritik olabilir. Bu özellik şu sistem ad alanlarıyla sınırlıdır: kube-system, gatekeeper-system, calico-system, azure-arc, , kube-publicve kube-node-lease.

Ayarıyla ConfigMap kullanarak platform günlüklerini collect_system_pod_logs etkinleştirin. Sistem ad alanının ayarda exclude_namespaces olmadığından da emin olmanız gerekir.

Aşağıdaki örnek, ad alanında stdout ve stderr kapsayıcı kube-system günlüklerini coredns toplamak için ConfigMap ayarlarını gösterir.

[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"]

İş yükleri için ek açıklama tabanlı filtreleme

Ek açıklama tabanlı filtreleme, poda ek açıklama ekleyerek belirli podlar ve kapsayıcılar için günlük koleksiyonunu dışlamanıza olanak tanır. Bu, günlük alımı maliyetinizi önemli ölçüde azaltabilir ve gürültüden eleme yapmadan ilgili bilgilere odaklanmanıza olanak sağlar.

Aşağıdaki ayarlarla ConfigMap kullanarak ek açıklama tabanlı filtrelemeyi etkinleştirin.

[log_collection_settings.filter_using_annotations]
   enabled = true

Ayrıca iş yükü podunuza gerekli ek açıklamaları da eklemeniz gerekir. Aşağıdaki tabloda farklı olası pod ek açıklamaları vurgulanır.

Ek Açıklama Açıklama
fluentbit.io/exclude: "true" Pod'daki tüm kapsayıcılarda hem stdout hem de stderr akışlarını dışlar
fluentbit.io/exclude_stdout: "true" Pod'daki tüm kapsayıcılarda yalnızca stdout akışını dışlar
fluentbit.io/exclude_stderr: "true" Pod'daki tüm kapsayıcılarda yalnızca stderr akışını dışlar
fluentbit.io/exclude_container1: "true" Hem stdout hem de stderr akışlarını yalnızca poddaki kapsayıcı1 için hariç tutun
fluentbit.io/exclude_stdout_container1: "true" Poddaki kapsayıcı1 için yalnızca stdout'ları hariç tutma

Not

Bu ek açıklamalar akıcı bit tabanlıdır. Kubernetes eklenti filtresi ve ek açıklama tabanlı dışlama ile kendi akıcı bit tabanlı günlük toplama çözümünüzü kullanırsanız, hem Container Insights'tan hem de çözümünüzden günlük toplamayı durdurur.

Pod belirtiminde ek açıklama örneği fluentbit.io/exclude: "true" aşağıda verilmiştir:

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 

Ortam değişkenlerini filtreleme

Aşağıdaki ayarlarla ConfigMap kullanarak kümedeki tüm podlar ve düğümler arasında ortam değişkenlerinin toplanmasını etkinleştirin.

[log_collection_settings.env_var]
    enabled = true

Ortam değişkenlerinin toplanması genel olarak etkinleştirildiyse, ortam değişkenini AZMON_COLLECT_ENV False dockerfile ayarıyla veya bölümün altındaki env: Pod yapılandırma dosyasında olarak ayarlayarak bunu belirli bir kapsayıcı için devre dışı bırakabilirsiniz. Ortam değişkenlerinin koleksiyonu genel olarak devre dışı bırakılmışsa, belirli bir kapsayıcı için koleksiyonu etkinleştiremezsiniz. Kapsayıcı düzeyinde uygulanabilecek tek geçersiz kılma, genel olarak zaten etkinleştirildiğinde koleksiyonu devre dışı bırakmaktır.

Görselleştirmeler ve uyarılar üzerindeki etki

Container insights verilerini kullanan özel uyarılarınız veya çalışma kitaplarınız varsa, veri toplama ayarlarınızı değiştirmek bu deneyimleri düşürebilir. Ad alanlarını hariç tutarak veya veri toplama sıklığını azaltıyorsanız, bu verileri kullanarak mevcut uyarılarınızı, panolarınızı ve çalışma kitaplarınızı gözden geçirin.

Bu tablolara başvuran uyarıları taramak için aşağıdaki Azure Kaynak Grafı sorgusunu çalıştırın:

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

Sonraki adımlar

  • Ayrıntılı ölçütlere göre verileri daha fazla filtreleyecek DCR'ye dönüştürmeler eklemek için bkz . Kapsayıcı içgörülerinde veri dönüştürmeleri.