Kapsayıcı içgörüleri günlük şeması
Kapsayıcı içgörüleri, topladığı günlük verilerini ContainerLogV2 adlı bir tabloda depolar. Bu makalede, bu tablonun şeması ve eski ContainerLog tablosundan karşılaştırması ve geçişi açıklanmaktadır.
Önemli
ContainerLogV2, CLI sürüm 2.54.0 ve üzeri için ConfigMap aracılığıyla varsayılan şema olacaktır. ContainerLogV2, ARM, Bicep, Terraform, İlke ve Portal ekleme kullanarak Yönetilen Kimlik Doğrulaması ile kapsayıcı içgörüleri ekleyecek müşteriler için varsayılan alım biçimi olacaktır. ContainerLogV2, Veri toplama ayarları kullanılarak CLI sürüm 2.51.0 veya üzeri aracılığıyla açıkça etkinleştirilebilir.
ContainerLog tablosu desteği 30 Eylül 2026'da kullanımdan kaldırılacaktır.
Tablo karşılaştırması
Aşağıdaki tabloda ContainerLogV2 ile ContainerLog şemasını kullanma arasındaki temel farklar vurgulanır.
Özellik farkları | ContainerLog | ContainerLogV2 |
---|---|---|
Şema | ContainerLog'daki ayrıntılar. | ContainerLogV2'deki ayrıntılar. Ek sütunlar şunlardır: - ContainerName - PodName - PodNamespace - LogLevel 1- KubernetesMetadata 2 |
Ekleme | Yalnızca ConfigMap aracılığıyla yapılandırılabilir. | Hem ConfigMap hem de DCR aracılığıyla yapılandırılabilir. 3 |
Fiyatlandırma | Yalnızca tam fiyatlı analiz günlükleriyle uyumludur. | Analiz günlüklerine ek olarak düşük maliyetli temel günlükler katmanını destekler. |
Sorgulama | Standart sorgular için envanter tablolarıyla birden çok birleştirme işlemi gerektirir. | Sorgu karmaşıklığını ve birleştirme işlemlerini azaltmak için ek pod ve kapsayıcı meta verileri içerir. |
Çok satırlı | Desteklenmez, çok satırlı girdiler birden çok satıra bölünür. | Çok satırlı çıkış için birleştirilmiş, tek girişlere izin vermek için çok satırlı günlüğe kaydetme desteği. |
1LogMessage geçerli bir JSON ise ve level adlı bir anahtarı varsa, değeri kullanılır. Aksi takdirde LogLevel'i LogMessage'ın kendisinden çıkarabilmek için regex tabanlı bir anahtar sözcük eşleştirme yaklaşımı kullanırız. Bu değer çıkarılırken bazı yanlış sınıflandırmalar görebileceğinizi unutmayın.
2KubernetesMetadata isteğe bağlı bir sütundur ve bu alanın koleksiyonu Kubernetes Meta Veri özelliğiyle etkinleştirilebilir. Bu alanın değeri JSON'dur ve podLabels, podAnnotations, podUid, Image, ImageTag ve Image deposu gibi alanları içerir.
3DCR yapılandırması, hizmet sorumlusu kimlik doğrulaması tabanlı kümeleri kullanan kümeler için desteklenmez. Bu deneyimi kullanmak için hizmet sorumlusuyla kümelerinizi yönetilen kimliğe geçirin.
Not
Gelen LogMessage geçerli bir JSON değilse Olay Hub'ına ve Depolama Hesabına aktar desteklenmez. En iyi performans için kapsayıcı günlüklerini JSON biçiminde yaymanızı öneririz.
Mevcut uyarılar üzerindeki etkiyi değerlendirme
ContainerLogsV2 şemasını etkinleştirmeden önce, ContainerLog tablosunu kullanan uyarı kurallarınız olup olmadığını değerlendirmeniz gerekir. Bu tür uyarıların yeni tabloyu kullanacak şekilde güncelleştirilmesi gerekir.
ContainerLog tablosuna 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 "ContainerLog"
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc
ContainerLogV2 şemasını etkinleştirme
Kümenin Veri Toplama Kuralı 'nı (DCR) veya ConfigMap'i kullanarak bir küme için ContainerLogV2 şemasını etkinleştirebilirsiniz. Her iki ayar da etkinleştirilirse, ConfigMap önceliklidir. Stdout ve stderr günlükleri yalnızca hem DCR hem de ConfigMap açıkça kapalı olarak ayarlandığında ContainerLog tablosuna alınır.
Kubernetes meta verileri ve günlükleri filtreleme
Kubernetes Meta Verileri ve Günlükleri Filtreleme, ContainerLogsV2 şemasını PodLabels, PodAnnotations, PodUid, Image, ImageID, ImageRepo ve ImageTag gibi daha fazla Kubernetes meta verileriyle geliştirir. Ayrıca, Günlük filtreleme özelliği hem iş yükü hem de platform (sistem ad alanları) kapsayıcıları için filtreleme özellikleri sağlar. Bu özellikler sayesinde kullanıcılar iş yüklerine daha zengin bağlam ve gelişmiş görünürlük kazandırır.
Önemli özellikler
Kubernetes meta veri alanlarıyla geliştirilmiş ContainerLogV2 şeması: Kubernetes Günlükleri Meta Verileri, basit Log Analytics sorgularıyla sorun giderme deneyimini geliştiren ve diğer tablolara katılma gereksinimini ortadan kaldıran diğer isteğe bağlı meta veri alanlarını kullanıma sunar. Bu alanlar "PodLabels", "PodAnnotations", "PodUid", "Image," "ImageID", "ImageRepo" ve "ImageTag" gibi temel bilgileri içerir. Kullanıcılar bu bağlamı kullanıma hazır hale alarak sorun giderme işlemlerini hızlandırabilir ve sorunları hızla belirleyebilir.
Özelleştirilmiş ekleme listesi yapılandırması: Kullanıcılar, configmap'i düzenerek görmek istedikleri yeni meta veri alanlarını uyarlayabilir. etkinleştirildiğinde tüm meta veri alanlarının
metadata_collection
varsayılan olarak toplandığını ve belirli alanları seçmek istiyorsanız,include_fields
toplanması gereken alanları açıklamayı kaldırın ve belirtin.
Günlük düzeyiyle geliştirilmiş ContainerLogV2 şeması: Kullanıcılar artık KRITIK, HATA, UYARI, BİlGİ, HATA AYıKLAMA, İZLEME veya BİlİNMEYEN gibi renk kodlu önem düzeylerine göre uygulama durumunu değerlendirebilir. Olay yanıtı ve proaktif izleme için çok önemli bir araçtır. Kullanıcılar önem düzeylerini görsel olarak ayırt ederek etkilenen kaynakları hızla belirleyebilir. Renk kodlu sistem, araştırma sürecini kolaylaştırır ve daha fazla hata ayıklama için araştırma deneyimi için paneli seçerek kullanıcıların daha da detaya gitmelerini sağlar. Ancak, bu işlevselliğin yalnızca Grafana kullanılırken geçerli olduğunu unutmayın. Log Analytics Çalışma Alanı kullanıyorsanız LogLevel, ContainerLogV2 tablosundaki başka bir sütundur.
İş yükleri için ek açıklama tabanlı günlük filtreleme: Pod Ek Açıklamaları aracılığıyla verimli günlük filtreleme tekniği. Kullanıcılar gürültüden eleme yapmadan ilgili bilgilere odaklanabilir. Ek açıklama tabanlı filtreleme, kullanıcıların poda ek açıklama ekleyerek belirli podlar ve kapsayıcılar için günlük koleksiyonunu dışlamalarına olanak tanır ve bu da log analytics maliyetini önemli ölçüde azaltmaya yardımcı olur.
Platform günlükleri için ConfigMap tabanlı günlük filtreleme (Sistem Kubernetes Ad Alanları): Platform günlükleri sistem (veya benzer kısıtlanmış) ad alanları içindeki kapsayıcılar tarafından yayılır. Varsayılan olarak, Log Analytics maliyetini en aza indirmek için sistem ad alanından tüm kapsayıcı günlükleri hariç tutulur. Ancak, belirli sorun giderme senaryolarında sistem kapsayıcısının kapsayıcı günlükleri önemli bir rol oynar. Örneğin, kube-system ad alanı içindeki coredns kapsayıcısını göz önünde bulundurun. Günlükleri (stdout ve stderr) yalnızca coredns kapsayıcı formu kube-system'dan toplamak için, yapılandırma haritasında aşağıdaki ayarları etkinleştirebilirsiniz.
- Grafana görselleştirme panosu: Grafana panosu yalnızca ÖNEMLİ ile BİlİNMEYEN arasında değişen günlük düzeylerinin renk kodlu görselleştirmelerini görüntülemekle kalmaz, aynı zamanda Günlük Hacmi, Günlük Hızı, Günlük Kayıtları, Günlükler'e de girer. Kullanıcılar Zamana Duyarlı Analiz, zaman içindeki günlük düzeyi eğilimlerine yönelik dinamik içgörüler ve önemli gerçek zamanlı izleme elde edebilir. Ayrıca Bilgisayar, Pod ve Kapsayıcı'ya göre ayrıntılı bir döküm de sağlıyoruz. Bu ayrıntılı analiz ve kesin olarak belirtilen sorun giderme işlemlerini güçlendiriyor. Son olarak yeni Günlükler tablosu deneyiminde kullanıcılar, genişletme görünümüyle ayrıntılı ayrıntıları görüntüleyebilir, her sütundaki verileri görüntüleyebilir ve görmek istedikleri bilgileri yakınlaştırabilir.
Grafana Panosunu gösteren bir video aşağıdadır:
Kubernetes meta verileri ve günlükleri filtrelemeyi etkinleştirme
Önkoşullar
Yönetilen Kimlik Kimlik Doğrulaması'na geçiş. Daha fazla bilgi edinin.
ContainerLogV2'nin etkinleştirildiğinden emin olun. Yönetilen Kimlik Doğrulama kümeleri bu şemayı varsayılan olarak etkinleştirdi. Aksi takdirde ContainerLogV2 şemasını etkinleştirin.
Sınırlamalar
ContainerLogV2 Grafana Panosu, ContainerLogV2 tablosundaki Temel Günlükler SKU'su ile desteklenmez.
Kubernetes meta verilerini etkinleştirme
- Aşağıdaki ekran görüntüsünde görüldüğü gibi yapılandırma haritasını indirin ve false olan ayarları true olarak değiştirin. Desteklenen tüm meta veri alanlarının varsayılan olarak toplandığını unutmayın. Belirli alanları toplamak istiyorsanız, içinde
include_fields
gerekli alanları belirtin.
ConfigMap'i uygulayın. ConfigMap'i dağıtma ve yapılandırma hakkında daha fazla bilgi edinmek için bkz. yapılandırma haritasını yapılandırma.
Birkaç dakika sonra, aşağıdaki ekran görüntüsünde gösterildiği gibi Veriler Kubernetes Logs Metadata ile ContainerLogV2 tablonuza akmalıdır.
Grafana pano deneyimine ekleme
- Analizler sekmesinde monitör ayarlarını seçin ve Sürüm 10.3.4+ ile Grafana Panosu'na ekleme
- Erişim denetimini (IAM) denetleyerek Grafana Yönetici/Düzenleyici/Okuyucu rollerinden birine sahip olduğunuzdan emin olun. Aksi takdirde, bunları ekleyin.
- Grafana örneğinizin Azure Logs Analytics (LA) çalışma alanına erişimi olduğundan emin olun. Erişimi yoksa, LA çalışma alanınıza Grafana Örnek İzleme Okuyucusu rolü erişimi vermeniz gerekir.
Grafana çalışma alanınıza gidin ve Grafana galerisinden ContainerLogV2 Panosu'nu içeri aktarın.
DataSource, Subscription, ResourceGroup, Cluster, Namespace ve Labels bilgilerinizi seçin. Pano daha sonra aşağıdaki ekran görüntüsünde gösterildiği gibi doldurulur.
Not
Grafana Panosu'nu ilk yüklediğinizde, değişkenler henüz seçilmediği için bazı hatalar oluşturabilir. Bunun yinelenmesini önlemek için, bir dizi değişken seçtikten sonra ilk açıkta varsayılan olacak şekilde panoyu kaydedin.
Ek açıklama tabanlı filtrelemeyi etkinleştirme
Ek açıklama tabanlı filtrelemeyi etkinleştirmek için aşağıdaki adımları izleyin. İlgili filtreleme belgeleri yayımlandıktan sonra bağlantıyı burada bulabilirsiniz.
- Aşağıdaki ekran görüntüsünde görüldüğü gibi yapılandırma haritasını indirin ve false olan ayarları true olarak değiştirin.
ConfigMap'i uygulayın. ConfigMap'i dağıtma ve yapılandırma hakkında daha fazla bilgi edinmek için bkz. yapılandırma haritasını yapılandırma.
İş yükü podunuza gerekli ek açıklamaları ekleyin. Aşağıdaki tabloda, farklı olası Pod ek açıklamaları ve bunların ne yaptıklarına yönelik 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 Analizler hem de çözümünüzden günlükleri 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
Platform günlükleri için ConfigMap tabanlı günlük filtreleme (Sistem Kubernetes Ad Alanları)
- Yapılandırma haritasını indirin ve ve
exclude_namespaces
ile ilgilicollect_system_pod_logs
ayarları değiştirin.
Örneğin, kube-system ad alanında coredns kapsayıcısının stdout ve stderr günlüklerini toplamak için kube-system ad alanının içinde exclude_namespaces
olmadığından ve bu özelliğin yalnızca şu sistem ad alanlarıyla kısıtlandığından emin olun: kube-system, gatekeeper-system, calico-system, azure-arc, kube-public ve kube-node-lease ad alanları.
- ConfigMap'i uygulayın. ConfigMap'i dağıtma ve yapılandırma hakkında daha fazla bilgi edinmek için bkz. yapılandırma haritasını yapılandırma.
Container Analizler'da çok satırlı günlük kaydı
Çok satırlı günlükler etkinleştirildiğinde, önceden bölünmüş kapsayıcı günlükleri bir araya toplanır ve ContainerLogV2 tablosuna tek girdiler olarak gönderilir. Birleştirilmiş günlük çizgisi 64 KB'tan büyükse Log Analytics çalışma alanı sınırları nedeniyle kesilir. Bu özellik ayrıca ContainerLogV2 tablosunda tek girdiler olarak görünen .NET, Go, Python ve Java yığın izlemeleri için de destek içerir. ConfigMap kullanarak Kapsayıcı içgörülerinde veri toplamayı yapılandırma bölümünde açıklandığı gibi ConfigMap ile çok satırlı günlüğe kaydetmeyi etkinleştirin.
Not
Yapılandırma haritasında artık müşterilerin yalnızca ilgilendikleri dilleri seçebileceği bir dil belirtimi seçeneği bulunur. Bu özellik, yapılandırma haritasındaki stacktrace_languages seçeneğindeki diller düzenlenerek etkinleştirilebilir.
Aşağıdaki ekran görüntüleri Go özel durum yığını izlemesi için çok satırlı günlüğe kaydetmeyi gösterir:
Çok satırlı günlüğe kaydetme devre dışı
Çok satırlı günlüğe kaydetme etkinleştirildi
Java yığını izleme
Python yığını izleme
Sonraki adımlar
- ContainerLogv2 için Temel Günlükleri yapılandırın.
- ContainerLogV2'den verileri sorgulamayı öğrenin
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin