Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kluster Kubernetes menghasilkan sejumlah besar data yang dikumpulkan oleh Azure Monitor. Karena Anda dikenakan biaya untuk penyerapan dan retensi data ini, Anda dapat secara signifikan mengurangi biaya pemantauan dengan memfilter data yang tidak Anda butuhkan. Artikel ini menjelaskan cara menggunakan ConfigMap untuk mengonfigurasi dan memfilter kumpulan log kontainer dan variabel lingkungan dari kluster Anda. Anda juga dapat menggunakan ConfigMap untuk mengaktifkan pengumpulan log platform dari namespace sistem Kubernetes dan untuk mengaktifkan pemfilteran berbasis anotasi untuk workload.
Tip
Sebelum menerapkan salah satu opsi pemfilteran yang dijelaskan dalam artikel ini, pastikan Anda memilih profil koleksi log yang sesuai dengan kebutuhan Anda. Gunakan informasi dalam artikel ini untuk lebih menyempurnakan pengaturan pengumpulan data untuk kluster Anda.
Prasyarat
- Versi agen minimum yang didukung untuk mengumpulkan variabel stdout, stderr, dan lingkungan dari beban kerja kontainer adalah ciprod06142019 atau yang lebih baru.
Important
Mulai Juni 2026, kluster AKS Otomatis baru secara default akan mengaktifkan kumpulan simpul sistem terkelola. Untuk mempelajari detail dan manfaat utama fitur ini, lihat Kluster Otomatis AKS dengan kumpulan simpul sistem terkelola. Kluster AKS Otomatis dengan kumpulan simpul sistem terkelola diaktifkan tidak mendukung konfigurasi pengumpulan log kontainer dengan ConfigMap.
Mengonfigurasi dan menyebarkan ConfigMap
Gunakan prosedur berikut untuk mengonfigurasi dan menyebarkan file konfigurasi ConfigMap Anda ke kluster Anda:
Unduh templat ConfigMap konfigurasi agen di https://aka.ms/container-azm-ms-agentconfig dan buka di editor.
Edit file YAML ConfigMap dengan kustomisasi Anda. Templat mencakup semua pengaturan yang valid dengan deskripsi. Untuk mengaktifkan pengaturan, hapus karakter komentar (#) dan atur nilainya.
Buat ConfigMap dengan menjalankan perintah kubectl berikut:
kubectl config set-context <cluster-name> kubectl apply -f <configmap_yaml_file.yaml> # Example: kubectl config set-context my-cluster kubectl apply -f container-azm-ms-agentconfig.yamlPerubahan konfigurasi dapat memakan waktu beberapa menit untuk selesai sebelum diterapkan. Kemudian semua pod Agen Azure Monitor di dalam kluster akan dimulai ulang. Pengaktifan ulang adalah pengaktifan ulang bertahap untuk semua pod Agen Azure Monitor, jadi tidak semuanya diaktifkan ulang pada saat yang sama. Setelah proses mulai ulang selesai, Anda akan menerima pesan yang mirip dengan hasil berikut:
configmap "container-azm-ms-agentconfig" created`.
Verifikasi konfigurasi
Untuk memverifikasi konfigurasi berhasil diterapkan ke kluster, gunakan perintah berikut untuk meninjau log dari pod agen.
kubectl logs ama-logs-fdf58 -n kube-system -c ama-logs
Jika ada kesalahan konfigurasi dari pod Agen Azure Monitor, output akan menampilkan kesalahan yang mirip dengan yang berikut:
***************Start Config Processing********************
config::unsupported/missing config schema version - 'v21' , using defaults
Gunakan opsi berikut untuk melakukan lebih banyak pemecahan masalah perubahan konfigurasi:
Dari pod agen, gunakan perintah yang sama
kubectl logs.Tinjau log langsung untuk kesalahan yang mirip dengan yang berikut ini:
config::error::Exception while parsing config map for log collection/env variable settings: \nparse error on value \"$\" ($end), using defaults, please check config map for errors
Data dikirim ke tabel KubeMonAgentEvents di ruang kerja Log Analytics Anda setiap jam dengan tingkat keparahan kesalahan untuk kesalahan konfigurasi. Jika tidak ada kesalahan, entri dalam tabel akan memiliki data dengan info tingkat keparahan, yang melaporkan tidak ada kesalahan. Kolom Tags berisi informasi lebih lanjut tentang pod dan ID kontainer tempat kesalahan terjadi dan juga kemunculan pertama, kemunculan terakhir, dan hitungan dalam satu jam terakhir.
Memverifikasi versi skema
Versi skema konfigurasi yang didukung tersedia sebagai anotasi pod (schema-versions) pada pod Azure Monitor Agent. Anda dapat melihatnya dengan perintah kubectl berikut.
kubectl describe pod ama-logs-fdf58 -n=kube-system.
Filter log kontainer
Log kontainer adalah log stderr dan stdout yang dihasilkan oleh kontainer di kluster Kubernetes Anda. Log ini disimpan di tabel ContainerLogV2 di ruang kerja Log Analytics Anda. Secara default semua log kontainer dikumpulkan, tetapi Anda dapat memfilter log dari namespace tertentu atau menonaktifkan pengumpulan log kontainer sepenuhnya.
Edit bagian log_collection_settings ConfigMap untuk mengonfigurasi pengumpulan log stderr dan stdout secara terpisah untuk kluster. Contoh berikut menunjukkan pengaturan ConfigMap untuk mengumpulkan stdout dan stderr dengan mengecualikan namespace kube-system dan gatekeeper-system.
[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
Nota
Anda juga dapat mengonfigurasi pemfilteran namespace di profil log untuk kluster, tetapi ini tidak berlaku untuk data yang dikirim ke ContainerLogV2. Data ini hanya dapat difilter menggunakan ConfigMap.
Pemfilteran log platform (namespace Sistem Kubernetes)
Secara pengaturan awal, log kontainer dari namespace sistem tidak disertakan dalam pengumpulan untuk meminimalkan biaya Log Analytics. Log kontainer sistem bisa sangat penting, terutama dalam skenario pemecahan masalah tertentu. Fitur ini dibatasi untuk namespace sistem berikut:
kube-systemgatekeeper-systemcalico-systemazure-arckube-public-
kube-node-lease.
Edit pengaturan collect_system_pod_logs di bagian log_collection_settings dalam ConfigMap untuk mengaktifkan log platform pada kluster. Anda juga harus memastikan bahwa namespace sistem tidak ada dalam setelan exclude_namespaces.
Contoh berikut menunjukkan pengaturan ConfigMap untuk mengumpulkan log stdout dan stderr dari kontainer di dalam namespace coredns.
[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"]
Pemfilteran berbasis anotasi untuk beban kerja
Pemfilteran berbasis anotasi memungkinkan Anda mengecualikan koleksi log untuk pod dan kontainer tertentu dengan membuat anotasi pod. Ini dapat mengurangi biaya pengolahan log Anda secara signifikan dan memungkinkan Anda untuk fokus pada informasi yang relevan tanpa harus memilah kebisingan.
filter_using_annotations Edit pengaturan di bagian log_collection_settings ConfigMap untuk mengaktifkan pemfilteran berbasis anotasi.
[log_collection_settings.filter_using_annotations]
enabled = true
Anda juga harus menambahkan anotasi yang diperlukan pada spesifikasi pod beban kerja Anda. Tabel berikut menyoroti berbagai kemungkinan anotasi pod.
| Annotation | Description |
|---|---|
fluentbit.io/exclude: "true" |
Mengecualikan aliran stdout dan stderr di semua kontainer pada Pod |
fluentbit.io/exclude_stdout: "true" |
Hanya mengecualikan saluran stdout pada semua kontainer dalam Pod |
fluentbit.io/exclude_stderr: "true" |
Mengecualikan hanya aliran stderr pada semua kontainer dalam Pod |
fluentbit.io/exclude-container1: "true" |
Mengecualikan kedua aliran stdout & stderr hanya untuk kontainer1 di pod |
fluentbit.io/exclude_stdout-container1: "true" |
Kecualikan hanya stdout untuk kontainer1 di pod |
Nota
Anotasi ini berbasis bit fasih. Jika Anda menggunakan solusi pengumpulan log berbasis fluent-bit Anda sendiri dengan filter plugin Kubernetes dan pengecualian berbasis anotasi, hal ini akan menyebabkan penghentian pengumpulan log dari Container Insights maupun solusi Anda sendiri.
Berikut ini adalah contoh anotasi fluentbit.io/exclude: "true" dalam spesifikasi Pod:
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
Menyaring variabel lingkungan
Edit log_collection_settings.env_var pengaturan di bagian log_collection_settings dari ConfigMap untuk mengaktifkan pengumpulan variabel lingkungan di semua pod dan simpul.
[log_collection_settings.env_var]
enabled = true
Jika pengumpulan variabel lingkungan diaktifkan secara global, Anda dapat menonaktifkannya untuk kontainer tertentu dengan mengatur variabel AZMON_COLLECT_ENV lingkungan ke False baik dengan pengaturan Dockerfile atau dalam file konfigurasi untuk Pod di bawah bagian .env: Jika kumpulan variabel lingkungan dinonaktifkan secara global, Anda tidak dapat mengaktifkan koleksi untuk kontainer tertentu. Satu-satunya penggantian yang dapat diterapkan pada tingkat kontainer adalah menonaktifkan pengumpulan ketika sudah diaktifkan secara global.
Pengaturan ConfigMap
Tabel berikut menjelaskan pengaturan yang dapat Anda konfigurasi untuk mengontrol pengumpulan data dengan konfigurasi agen ConfigMap.
| Setting | Jenis data | Nilai | Description |
|---|---|---|---|
schema-version |
String (peka terhadap huruf besar dan kecil) | v1 | Digunakan oleh agen saat mengurai ConfigMap ini. Versi skema yang saat ini didukung adalah v1. Mengubah nilai ini tidak didukung dan akan ditolak saat ConfigMap dievaluasi. |
config-version |
String | Memungkinkan Anda melacak versi file konfigurasi ini di sistem/repositori kontrol sumber Anda. Karakter maksimum yang diizinkan adalah 10, dan semua karakter lainnya terpotong. | |
| [pengaturan_koleksi_log] | |||
[stdout]enabled |
Boolean | true false |
Mengontrol apakah pengumpulan log kontainer stdout diaktifkan. Ketika diatur ke true dan tidak ada namespace yang dikecualikan untuk pengumpulan log stdout, log stdout akan dikumpulkan dari setiap kontainer di semua pod dan node dalam kluster. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah true. |
[stdout]exclude_namespaces |
String | Array yang dipisahkan koma | Array namespace Kubernetes yang log stdout-nya tidak akan dikumpulkan. Pengaturan ini hanya efektif jika enabled diatur ke true. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah["kube-system","gatekeeper-system"]. |
[stderr]enabled |
Boolean | true false |
Mengontrol apakah pengumpulan log kontainer stderr diaktifkan. Ketika disetel ke true dan tidak ada namespace yang dikecualikan untuk pengumpulan log stderr, log stderr akan dikumpulkan dari semua kontainer di semua pod dan simpul dalam kluster. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah true. |
[stderr]exclude_namespaces |
String | Array yang dipisahkan koma | Array namespace Kubernetes untuk mana log stderr tidak akan dikumpulkan. Pengaturan ini hanya efektif jika enabled diatur ke true. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah["kube-system","gatekeeper-system"]. |
[env_var]enabled |
Boolean | true false |
Mengontrol pengumpulan variabel lingkungan di semua pod dan simpul dalam kluster. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah true. |
[enrich_container_logs]enabled |
Boolean | true false |
Mengontrol pengayaan log kontainer untuk mengisi nilai properti Name dan Image pada setiap rekaman log yang ditulis ke dalam tabel ContainerLog untuk semua log kontainer di kluster. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false. |
[collect_all_kube_events]enabled |
Boolean | true false |
Mengontrol apakah peristiwa Kube dari semua jenis dikumpulkan. Secara default, peristiwa Kube dengan jenis Normal tidak dikumpulkan. Ketika pengaturan ini adalah true, peristiwa Normal tidak lagi difilter, dan semua peristiwa dikumpulkan. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false. |
[schema]containerlog_schema_version |
String (peka terhadap huruf besar dan kecil) | v2 v1 |
Mengatur format pemrosesan log. Jika v2, tabel ContainerLogV2 digunakan. Jika v1, tabel ContainerLog digunakan (tabel ini tidak digunakan lagi). Untuk kluster yang mengaktifkan wawasan kontainer menggunakan Azure CLI versi 2.54.0 atau yang lebih tinggi, pengaturan defaultnya adalah v2. Lihat Log Wawasan Kontainer untuk detailnya. |
[enable_multiline_logs]enabled |
Boolean | true false |
Mengatur apakah log kontainer dengan banyak baris diaktifkan. Lihat Pengelogan multibaris di Container Insights untuk lebih jelasnya. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false. Ini mengharuskan schema pengaturan menjadi v2. |
[metadata_collection]enabled |
Boolean | true false |
Mengontrol apakah metadata dikumpulkan dalam KubernetesMetadata kolom ContainerLogV2 tabel. |
[metadata_collection]include_fields |
String | Array yang dipisahkan koma | Daftar bidang metadata yang akan disertakan. Jika pengaturan tidak digunakan, semua kolom dikumpulkan. Nilai yang valid adalah ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"] |
[log_collection_settings.multi_tenancy]enabled |
Boolean | true false |
Mengontrol apakah multitenansi diaktifkan. Lihat Logging terkelola multitenancy untuk detailnya. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false. |
| [pengaturan_koleksi_metrik] | |||
[collect_kube_system_pv_metrics]enabled |
Boolean | true false |
Memungkinkan pengumpulan metrik penggunaan volume persisten (PV) di namespace kube-system. Secara bawaan, metrik penggunaan untuk volume persisten dengan klaim volume tetap di namespace kube-system tidak dikumpulkan. Ketika pengaturan ini diatur ke true, metrik penggunaan PV untuk semua namespace akan dikumpulkan. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false. |
| [agent_settings] | |||
[proxy_config]ignore_proxy_settings |
Boolean | true false |
Ketika true, pengaturan proksi diabaikan. Untuk lingkungan AKS dan Kubernetes berkemampuan Arc, jika kluster Anda dikonfigurasi dengan proksi penerusan, pengaturan proksi akan diterapkan secara otomatis dan digunakan oleh agen. Untuk konfigurasi tertentu, seperti dengan AMPLS + Proxy, Anda mungkin ingin konfigurasi proksi diabaikan. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false. |
| [agent_settings.fbit_config] | |||
enable_internal_metrics |
Boolean | true false |
Mengontrol apakah pengumpulan metrik internal diaktifkan. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false. |
Dampak pada visualisasi dan pemberitahuan
Jika Anda memiliki pemberitahuan atau buku kerja kustom menggunakan data wawasan Kontainer, maka mengubah pengaturan pengumpulan data Anda mungkin menurunkan pengalaman tersebut. Jika Anda mengecualikan namespaces atau mengurangi frekuensi pengumpulan data, tinjau peringatan, dasbor, dan buku kerja yang sudah ada menggunakan data ini.
Untuk memindai pemberitahuan yang mereferensikan tabel ini, jalankan kueri Azure Resource Graph berikut:
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
Langkah selanjutnya
- Lihat Transformasi data dalam wawasan Kontainer untuk menambahkan transformasi ke DCR yang akan memfilter data lebih lanjut berdasarkan kriteria terperinci.