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-public
ve 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.