Mengonfigurasi pengumpulan data dalam wawasan Kontainer menggunakan ConfigMap

Artikel ini menjelaskan cara mengonfigurasi pengumpulan data dalam wawasan Kontainer menggunakan ConfigMap. Konfigurasi Peta adalah mekanisme Kubernetes yang memungkinkan Anda menyimpan data non-rahasia seperti file konfigurasi atau variabel lingkungan.

ConfigMap terutama digunakan untuk mengonfigurasi pengumpulan data log kontainer dan variabel lingkungan kluster. Anda dapat mengonfigurasi log stdout dan stderr secara individual dan juga mengaktifkan pengelogan multibaris. l Konfigurasi spesifik yang dapat Anda lakukan dengan ConfigMap meliputi:

  • Mengaktifkan/menonaktifkan dan pemfilteran namespace untuk log stdout dan stderr
  • Mengaktifkan/menonaktifkan pengumpulan variabel lingkungan untuk kluster
  • Filter untuk kejadian Kube Normal
  • Pilih skema log
  • Mengaktifkan/menonaktifkan pengelogan multibaris
  • Abaikan pengaturan proksi

Penting

Konfigurasi lengkap pengumpulan data dalam wawasan Kontainer mungkin memerlukan pengeditan ConfigMap dan aturan pengumpulan data (DCR) untuk kluster karena setiap metode memungkinkan konfigurasi serangkaian pengaturan yang berbeda.

Lihat Mengonfigurasi pengumpulan data dalam wawasan Kontainer menggunakan aturan pengumpulan data untuk daftar pengaturan dan proses untuk mengonfigurasi pengumpulan data menggunakan DCR.

Prasyarat

  • 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.
  • Versi agen minimum yang didukung untuk mengumpulkan variabel stdout, stderr, dan lingkungan dari beban kerja kontainer adalah ciprod06142019 atau yang lebih baru. Untuk memverifikasi versi agen Anda, pada tab Simpul , pilih simpul. Pada panel Properti , perhatikan nilai properti Tag Gambar Agen. Untuk mengetahui informasi selengkapnya tentang versi agen dan apa yang disertakan dalam setiap rilis, lihat Catatan rilis agen.

Mengonfigurasi dan menyebarkan ConfigMap

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

  1. Unduh file ConfigMap YAML templat dan buka di editor. Jika Anda sudah memiliki file ConfigMap, maka Anda dapat menggunakan file tersebut.

  2. Edit file YAML ConfigMap dengan kustomisasi Anda menggunakan pengaturan yang dijelaskan dalam Pengaturan pengumpulan data

  3. Buat ConfigMap dengan menjalankan perintah kubectl berikut:

    kubectl apply -f <configmap_yaml_file.yaml>
    

    Contoh:

    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`.
    

Pengaturan pengumpulan data

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

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
Pengaturan ini mengontrol pengumpulan variabel lingkungan di semua pod dan simpul dalam kluster. Jika tidak ditentukan dalam ConfigMap, nilai defaultnya adalah 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 penimpaan yang dapat diterapkan pada tingkat kontainer adalah menonaktifkan pengumpulan ketika sudah diaktifkan secara global.
[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 ContainerLogV2 atau 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.
[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.

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

Jika ada kesalahan konfigurasi dari pod Agen Azure Monitor, output akan menampilkan kesalahan yang mirip dengan contoh berikut:

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

Kesalahan terkait penerapan perubahan konfigurasi juga tersedia untuk ditinjau. Opsi berikut tersedia untuk melakukan lebih banyak pemecahan masalah perubahan konfigurasi:

  • Dari log pod agen menggunakan perintah yang sama kubectl logs .

  • Dari log langsung. Log langsung menunjukkan kesalahan yang mirip dengan contoh berikut:

    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
    
  • Dari tabel KubeMonAgentEvents di ruang kerja Analitik Log Anda. Data dikirim 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. Properti Tag berisi informasi selengkapnya tentang pod dan ID kontainer tempat kesalahan terjadi dan juga kejadian pertama, kejadian terakhir, dan jumlahnya 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.

Output yang mirip dengan contoh berikut muncul dengan versi skema anotasi:

    Name:           ama-logs-fdf58
    Namespace:      kube-system
    Node:           aks-agentpool-95673144-0/10.240.0.4
    Start Time:     Mon, 10 Jun 2019 15:01:03 -0700
    Labels:         controller-revision-hash=589cc7785d
                    dsName=ama-logs-ds
                    pod-template-generation=1
    Annotations:    agentVersion=1.10.0.1
                  dockerProviderVersion=5.0.0-0
                    schema-versions=v1 

Tanya jawab umum

Bagaimana cara mengaktifkan koleksi log untuk kontainer di namespace layanan sistem kubernetes melalui Helm?

Koleksi log dari kontainer di namespace layanan sistem kubernetes dinonaktifkan secara default. Anda dapat mengaktifkan pengumpulan log dengan mengatur variabel lingkungan di Agen Azure Monitor. Lihat halaman GitHub Wawasan kontainer.

Langkah berikutnya