Bagikan melalui


Mengonfigurasi pengumpulan log dalam wawasan Kontainer

Artikel ini menyediakan detail tentang cara mengonfigurasi pengumpulan data dalam wawasan Kontainer untuk kluster Kubernetes Setelah di-onboard. Untuk panduan tentang mengaktifkan wawasan Kontainer pada kluster Anda, lihat Mengaktifkan pemantauan untuk kluster Kubernetes.

Metode konfigurasi

Ada dua metode yang digunakan untuk mengonfigurasi dan memfilter data yang dikumpulkan dalam wawasan Kontainer. Tergantung pada pengaturannya, Anda mungkin dapat memilih antara dua metode atau Anda mungkin diharuskan untuk menggunakan satu atau yang lain. Dua metode dijelaskan dalam tabel di bawah ini dengan informasi terperinci di bagian berikut.

Metode Deskripsi
Aturan pengumpulan data (DCR) Aturan pengumpulan data adalah sekumpulan instruksi yang mendukung pengumpulan data menggunakan alur Azure Monitor. DCR dibuat saat Anda mengaktifkan wawasan Kontainer, dan Anda dapat memodifikasi pengaturan di DCR ini baik menggunakan portal Azure atau metode lainnya.
ConfigMap ConfigMaps adalah mekanisme Kubernetes yang memungkinkan Anda menyimpan data non-rahasia seperti file konfigurasi atau variabel lingkungan. Wawasan kontainer mencari ConfigMap pada setiap kluster dengan pengaturan tertentu yang menentukan data yang harus dikumpulkannya.

Mengonfigurasi pengumpulan data menggunakan DCR

DCR yang dibuat oleh wawasan Kontainer diberi nama MSCI-cluster-region-cluster-name><<>. Anda dapat melihat DCR ini bersama dengan orang lain dalam langganan Anda, dan Anda dapat mengeditnya menggunakan metode yang dijelaskan dalam Membuat dan mengedit aturan pengumpulan data (DCR) di Azure Monitor. Meskipun Anda dapat langsung memodifikasi DCR untuk penyesuaian tertentu, Anda dapat melakukan konfigurasi yang paling diperlukan menggunakan metode yang dijelaskan di bawah ini. Lihat Transformasi data dalam wawasan Kontainer untuk detail tentang mengedit DCR secara langsung untuk konfigurasi yang lebih canggih.

Penting

Kluster AKS harus menggunakan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna. Jika kluster menggunakan perwakilan layanan, Anda harus memperbarui kluster untuk menggunakan identitas terkelola yang ditetapkan sistem atau identitas terkelola yang ditetapkan pengguna.

Mengonfigurasi DCR dengan portal Azure

Dengan menggunakan portal Azure, Anda dapat memilih dari beberapa konfigurasi prasetel untuk pengumpulan data dalam wawasan Kontainer. Konfigurasi ini mencakup serangkaian tabel dan frekuensi pengumpulan yang berbeda tergantung pada prioritas khusus Anda. Anda juga dapat menyesuaikan pengaturan untuk mengumpulkan hanya data yang Anda butuhkan. Anda dapat menggunakan portal Azure untuk menyesuaikan konfigurasi pada kluster yang ada setelah wawasan Kontainer diaktifkan, atau Anda dapat melakukan konfigurasi ini saat mengaktifkan wawasan Kontainer pada kluster Anda.

  1. Pilih kluster di portal Azure.

  2. Pilih opsi Wawasan di bagian Pemantauan pada menu.

  3. Jika Wawasan kontainer telah diaktifkan pada kluster, pilih tombol Pengaturan Pemantauan. Jika tidak, pilih Konfigurasikan Azure Monitor dan lihat Mengaktifkan pemantauan pada kluster Kubernetes Anda dengan Azure Monitor untuk detail tentang mengaktifkan pemantauan.

    Cuplikan layar kluster AKS dengan tombol pengaturan monitor.

  4. Untuk Kubernetes dengan dukungan AKS dan Arc, pilih Gunakan identitas terkelola jika Anda belum memigrasikan kluster ke autentikasi identitas terkelola.

  5. Pilih salah satu preset biaya.

    Cuplikan layar yang memperlihatkan opsi onboarding.

    Prasetel biaya Frekuensi pengumpulan Filter namespace Kumpulan Syslog Data yang dikumpulkan
    Standard 1 m Tidak Tidak diaktifkan Semua tabel wawasan kontainer standar
    Biaya yang dioptimalkan 5 m Mengecualikan kube-system, gatekeeper-system, azure-arc Tidak diaktifkan Semua tabel wawasan kontainer standar
    Syslog 1 m Tidak Diaktifkan secara default Semua tabel wawasan kontainer standar
    Log dan Peristiwa 1 m Tidak Tidak diaktifkan ContainerLog/ContainerLogV2
    KubeEvents
    KubePodInventory
  6. Jika Anda ingin menyesuaikan pengaturan, klik Edit pengaturan koleksi.

    Cuplikan layar yang memperlihatkan opsi pengaturan koleksi.

    Nama Deskripsi
    Frekuensi pengumpulan Menentukan seberapa sering agen mengumpulkan data. Nilai yang valid adalah 1m - 30m dalam interval 1m Nilai default adalah 1m.
    Pemfilteran namespace Nonaktif: Mengumpulkan data di semua namespace layanan.
    Sertakan: Hanya mengumpulkan data dari nilai di bidang namespace .
    Kecualikan: Mengumpulkan data dari semua namespace kecuali untuk nilai di bidang namespace .

    Array namespace Layanan Kubernetes yang dipisahkan koma untuk mengumpulkan data inventori dan perf berdasarkan namespaceFilteringMode. Misalnya, namespace = ["kube-system", "default"] dengan pengaturan Sertakan hanya mengumpulkan kedua namespace ini. Dengan pengaturan Kecualikan, agen mengumpulkan data dari semua namespace layanan lain kecuali untuk kube-system dan default.
    Data yang Dikumpulkan Menentukan tabel wawasan Kontainer mana yang akan dikumpulkan. Lihat di bawah ini untuk deskripsi setiap pengelompokan.
    Mengaktifkan ContainerLogV2 Bendera Boolean untuk mengaktifkan skema ContainerLogV2. Jika diatur ke true, Log stdout/stderr diserap ke tabel ContainerLogV2 . Jika tidak, log kontainer diserap ke tabel ContainerLog , kecuali ditentukan lain dalam ConfigMap. Saat menentukan aliran individual, Anda harus menyertakan tabel yang sesuai untuk ContainerLog atau ContainerLogV2.
    Aktifkan koleksi Syslog Mengaktifkan koleksi Syslog dari kluster.

    Opsi Data yang dikumpulkan memungkinkan Anda memilih tabel yang diisi untuk kluster. Tabel dikelompokkan menurut skenario yang paling umum. Untuk menentukan tabel individual, Anda harus mengubah DCR menggunakan metode lain.

    Cuplikan layar yang memperlihatkan opsi data yang dikumpulkan.

    Pengelompokan Tabel Catatan
    Semua (Default) Semua tabel wawasan kontainer standar Diperlukan untuk mengaktifkan visualisasi wawasan Kontainer default
    Performa Perf, InsightsMetrics
    Log dan peristiwa ContainerLog atau ContainerLogV2, KubeEvents, KubePodInventory Disarankan jika Anda telah mengaktifkan metrik Prometheus terkelola
    Beban Kerja, Penyebaran, dan HPAs InsightsMetrics, KubePodInventory, KubeEvents, ContainerInventory, ContainerNodeInventory, KubeNodeInventory, KubeServices
    Volume Persisten InsightsMetrics, KubePVInventory
  7. Klik Konfigurasikan untuk menyimpan pengaturan.

Tabel dan metrik yang berlaku untuk DCR

Pengaturan untuk frekuensi pengumpulan dan pemfilteran namespace di DCR tidak berlaku untuk semua data wawasan Kontainer. Tabel berikut mencantumkan tabel di ruang kerja Analitik Log yang digunakan oleh wawasan Kontainer dan metrik yang dikumpulkannya bersama dengan pengaturan yang berlaku untuk masing-masing.

Nama tabel Interval? Namespace? Keterangan
ContainerInventory Ya Ya
ContainerNodeInventory Ya Tidak Pengaturan pengumpulan data untuk namespace tidak berlaku karena Node Kubernetes bukan sumber daya cakupan namespace
KubeNodeInventory Ya Tidak Pengaturan pengumpulan data untuk namespace tidak berlaku Kubernetes Node bukan sumber daya cakupan namespace
KubePodInventory Ya Ya
KubePVInventory Ya Ya
KubeServices Ya Ya
KubeEvents Tidak Ya Pengaturan pengumpulan data untuk interval tidak berlaku untuk Peristiwa Kubernetes
Perf Ya Ya Pengaturan pengumpulan data untuk namespace tidak berlaku untuk metrik terkait Simpul Kubernetes karena Node Kubernetes bukan objek cakupan namespace.
InsightsMetrics Ya Ya Pengaturan pengumpulan data hanya berlaku untuk metrik yang mengumpulkan namespace berikut: container.azm.ms/kubestate, container.azm.ms/pv, dan container.azm.ms/gpu
Namespace metrik Interval? Namespace? Keterangan
Insights.container/nodes Ya Tidak Simpul bukan sumber daya cakupan namespace
Insights.container/pods Ya Ya
Insights.container/containers Ya Ya
Insights.container/persistentvolumes Ya Ya

Nilai streaming di DCR

Saat Anda menentukan tabel yang akan dikumpulkan menggunakan CLI atau ARM, Anda menentukan nama streaming yang sesuai dengan tabel tertentu di ruang kerja Analitik Log. Tabel berikut mencantumkan nama aliran untuk setiap tabel.

Catatan

Jika Anda terbiasa dengan struktur aturan pengumpulan data, nama aliran dalam tabel ini ditentukan di bagian Aliran data DCR.

Stream Tabel wawasan kontainer
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerLogV2-HighScale ContainerLogV2 (Mode skala tinggi)1
Microsoft-ContainerNodeInventory ContainerNodeInventory
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEvents
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf Perf

1 Anda tidak boleh menggunakan Microsoft-ContainerLogV2 dan Microsoft-ContainerLogV2-HighScale dalam DCR yang sama. Ini akan menghasilkan data duplikat.

Berbagi DCR dengan beberapa kluster

Saat Anda mengaktifkan wawasan Kontainer pada kluster Kubernetes, DCR baru dibuat untuk kluster tersebut, dan DCR untuk setiap kluster dapat dimodifikasi secara independen. Jika Anda memiliki beberapa kluster dengan konfigurasi pemantauan kustom, Anda mungkin ingin berbagi satu DCR dengan beberapa kluster. Anda kemudian dapat membuat perubahan pada satu DCR yang secara otomatis diimplementasikan untuk kluster apa pun yang terkait dengannya.

DCR dikaitkan dengan kluster dengan kait aturan pengumpulan data (DCRA). Gunakan pengalaman DCR pratinjau untuk melihat dan menghapus asosiasi DCR yang ada untuk setiap kluster. Anda kemudian dapat menggunakan fitur ini untuk menambahkan asosiasi ke satu DCR untuk beberapa kluster.

Mengonfigurasi pengumpulan data menggunakan ConfigMap

ConfigMaps adalah mekanisme Kubernetes yang memungkinkan Anda menyimpan data non-rahasia seperti file konfigurasi atau variabel lingkungan. Wawasan kontainer mencari ConfigMap pada setiap kluster dengan pengaturan tertentu yang menentukan data yang harus dikumpulkannya.

Penting

ConfigMap adalah daftar global dan hanya ada satu ConfigMap yang diterapkan ke agen untuk wawasan Kontainer. Menerapkan ConfigMap lain akan menimpa pengaturan koleksi ConfigMap sebelumnya.

Prasyarat

  • Versi agen minimum yang didukung untuk mengumpulkan variabel stdout, stderr, dan lingkungan dari beban kerja kontainer adalah ciprod06142019 atau yang lebih baru.

Mengonfigurasi dan menyebarkan ConfigMap

Gunakan prosedur berikut untuk mengonfigurasi dan menyebarkan file konfigurasi ConfigMap Anda ke kluster Anda:

  1. Jika Anda belum memiliki ConfigMap untuk wawasan Kontainer, unduh file YAML ConfigMap templat dan buka di editor.

  2. Edit file YAML ConfigMap dengan kustomisasi Anda. Templat mencakup semua pengaturan yang valid dengan deskripsi. Untuk mengaktifkan pengaturan, hapus karakter komentar (#) dan atur nilainya.

  3. 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.yaml
    

    Perubahan konfigurasi dapat memakan waktu beberapa menit untuk selesai sebelum diterapkan. Kemudian semua pod Agen Azure Monitor di kluster akan dimulai ulang. Mulai ulang adalah mulai ulang bergulir untuk semua pod Agen Azure Monitor, jadi tidak semuanya dimulai ulang secara bersamaan. Setelah mulai ulang selesai, Anda akan menerima pesan yang mirip dengan hasil berikut:

    configmap "container-azm-ms-agentconfig" created`.
    

Memverifikasi 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:

  • Gunakan perintah yang sama kubectl logs dari pod agen.

  • 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 KubeMonAgentEvents tabel di ruang kerja Analitik Log 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 (versi skema) pada pod Agen Azure Monitor. Anda dapat melihatnya dengan perintah kubectl berikut.

kubectl describe pod ama-logs-fdf58 -n=kube-system.

Pengaturan ConfigMap

Tabel berikut ini menjelaskan pengaturan yang bisa Anda konfigurasi untuk mengontrol pengumpulan data dengan ConfigMap.

Pengaturan Jenis Data Nilai Deskripsi
schema-version String (peka huruf besar 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.
[log_collection_settings]
[stdout]
enabled
Boolean benar
salah
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 semua kontainer di semua pod dan simpul dalam kluster. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah true.
[stdout]
exclude_namespaces
String Array yang dipisahkan koma Array namespace Layanan 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 benar
salah
Mengontrol apakah pengumpulan log kontainer stderr diaktifkan. Ketika diatur ke true dan tidak ada namespace yang dikecualikan untuk koleksi 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 Layanan Kubernetes yang log stderrnya 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 benar
salah
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 benar
salah
Mengontrol pengayaan log kontainer untuk mengisi Name nilai properti dan Image untuk setiap rekaman log yang ditulis ke tabel ContainerLog untuk semua log kontainer di kluster. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false.
[collect_all_kube_events]
enabled
Boolean benar
salah
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 huruf besar kecil) v2
v1
Mengatur format penyerapan 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 lebih tinggi, pengaturan defaultnya adalah v2. Lihat Skema log wawasan kontainer untuk detailnya.
[enable_multiline_logs]
enabled
Boolean benar
salah
Mengontrol apakah log kontainer multibaris diaktifkan. Lihat Pengelogan multibaris di Container Insights untuk detailnya. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false. Ini mengharuskan schema pengaturan menjadi v2.
[metadata_collection]
enabled
Boolean benar
salah
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 bidang dikumpulkan. Nilai yang valid adalah ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]
[metric_collection_settings]
[collect_kube_system_pv_metrics]
enabled
Boolean benar
salah
Memungkinkan metrik penggunaan volume persisten (PV) dikumpulkan di namespace layanan kube-system. Secara default, metrik penggunaan untuk volume persisten dengan klaim volume persisten di namespace layanan sistem kube tidak dikumpulkan. Ketika pengaturan ini diatur ke true, metrik penggunaan PV untuk semua namespace layanan akan dikumpulkan. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false.
[agent_settings]
[proxy_config]
ignore_proxy_settings
Boolean benar
salah
Ketika true, pengaturan proksi diabaikan. Untuk lingkungan Kubernetes dengan dukungan AKS dan Arc, jika kluster Anda dikonfigurasi dengan proksi penerusan, maka pengaturan proksi secara otomatis diterapkan dan digunakan untuk agen. Untuk konfigurasi tertentu, seperti dengan AMPLS + Proxy, Anda mungkin ingin konfigurasi proksi diabaikan. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah false.

Langkah berikutnya