Mengelola log kontainer yang tersebar di lingkungan Kubernetes merupakan tantangan yang sering menyebabkan pemecahan masalah tidak efisien dan biaya operasional serta pemeliharaan (O&M) tinggi. Untuk mengatasinya, Anda dapat menerapkan agen LoongCollector dalam mode DaemonSet dan membuat konfigurasi pengumpulan melalui konsol Simple Log Service. Pendekatan ini memungkinkan pengumpulan log terpadu dan pemrosesan terstruktur, sehingga meningkatkan efisiensi pengambilan log, diagnosis masalah, serta analisis observabilitas.
Kesesuaian
Lingkungan runtime:
Container Service for Kubernetes (ACK) (edisi Managed dan Dedicated) serta kluster Kubernetes yang dikelola sendiri didukung.
Kubernetes 1.10.0 atau versi lebih baru yang mendukung
Mount propagation: HostToContainer.Runtime kontainer: Hanya Docker dan Containerd
Docker:
Memerlukan izin akses ke docker.sock.
Pengumpulan keluaran standar hanya mendukung driver log JSON.
Hanya driver penyimpanan overlay dan overlay2 yang didukung. Untuk jenis driver penyimpanan lainnya, Anda harus memasang direktori log secara manual.
Containerd: Memerlukan izin akses ke containerd.sock.
Persyaratan sumber daya: LoongCollector (Logtail) berjalan dengan prioritas tinggi sebagai `system-cluster-critical`. Jangan menerapkannya jika sumber daya kluster tidak mencukupi. Jika tidak, pod yang ada di node tersebut mungkin akan diusir.
CPU: Cadangkan minimal 0,1 core.
Memori: Cadangkan minimal 150 MB untuk komponen pengumpulan dan minimal 100 MB untuk komponen pengontrol.
Penggunaan aktual tergantung pada laju pengumpulan, jumlah direktori dan file yang dipantau, serta tingkat kemacetan pengiriman. Pastikan penggunaan aktual berada di bawah 80% dari batas yang ditentukan.
Persyaratan izin: Akun Alibaba Cloud atau pengguna RAM yang digunakan untuk penerapan harus memiliki izin
AliyunLogFullAccess.Untuk membuat kebijakan kustom, lihat kebijakan sistem AliyunCSManagedLogRolePolicy. Anda dapat menyalin izin dari kebijakan tersebut dan memberikannya kepada pengguna RAM atau peran target guna mengonfigurasi izin detail halus.
Alur kerja konfigurasi pengumpulan
Instal LoongCollector: Terapkan LoongCollector dalam mode DaemonSet. Hal ini memastikan bahwa kontainer pengumpulan berjalan di setiap node dalam kluster untuk mengumpulkan log dari semua kontainer di node tersebut.
Untuk informasi tentang pola Sidecar, lihat Kumpulkan log teks dari pod Kubernetes (pola Sidecar).
Buat Logstore: Logstore digunakan untuk menyimpan log yang dikumpulkan.
Buat dan konfigurasikan aturan pengumpulan log
Konfigurasi global dan input: Tentukan nama konfigurasi pengumpulan serta sumber dan cakupan pengumpulan log.
Pemrosesan dan strukturisasi log: Konfigurasikan aturan pemrosesan berdasarkan format log.
Log multiline: Cocok untuk log tunggal yang mencakup beberapa baris, seperti stack exception Java atau traceback Python. Anda dapat menggunakan ekspresi reguler baris pertama untuk mengidentifikasi awal setiap entri log.
Penguraian terstruktur: Konfigurasikan plugin penguraian, seperti mode ekspresi reguler, pembatas, atau NGINX, untuk mengekstrak string mentah menjadi pasangan kunci-nilai terstruktur guna memudahkan kueri dan analisis.
Penyaringan log: Konfigurasikan daftar hitam pengumpulan dan aturan penyaringan konten untuk memfilter konten log yang valid. Hal ini membantu mengurangi transmisi dan penyimpanan data berlebih.
Kategorisasi log: Bedakan log dari layanan, kontainer, atau sumber path yang berbeda secara fleksibel dengan mengonfigurasi topik dan tag log.
Konfigurasi kueri dan analisis: Indeks teks penuh diaktifkan secara default untuk mendukung pencarian kata kunci. Anda juga dapat mengaktifkan indeks bidang untuk kueri dan analisis presisi terhadap bidang terstruktur guna meningkatkan efisiensi pencarian.
Verifikasi dan pemecahan masalah: Setelah konfigurasi selesai, verifikasi bahwa log berhasil dikumpulkan. Jika Anda mengalami masalah seperti kegagalan pengumpulan data, kegagalan heartbeat, atau kesalahan penguraian, lihat FAQ Pemecahan Masalah.
Langkah 1: Instal LoongCollector
LoongCollector adalah agen pengumpulan log generasi berikutnya dari Simple Log Service (SLS) dan merupakan versi peningkatan dari Logtail. LoongCollector dan Logtail tidak dapat berjalan bersamaan. Untuk menginstal Logtail, lihat Instal, jalankan, tingkatkan, dan uninstall Logtail.
Topik ini hanya menjelaskan alur instalasi dasar LoongCollector. Untuk informasi lebih lanjut tentang parameter, lihat Instalasi dan konfigurasi. Jika Anda telah menginstal LoongCollector atau Logtail, Anda dapat melewati langkah ini dan melanjutkan ke Langkah 2: Buat Logstore.
Jika waktu host berubah saat LoongCollector (Logtail) berjalan, hal tersebut dapat menyebabkan pengumpulan log ganda atau kehilangan data.
Kluster ACK
Anda dapat menginstal LoongCollector dari konsol Container Service for Kubernetes. Secara default, log dikirim ke proyek Simple Log Service di bawah akun Alibaba Cloud saat ini.
Masuk ke konsol ACK. Di panel navigasi kiri, klik Clusters.
Klik nama kluster target.
Di panel navigasi kiri, klik Add-ons.
Buka tab Logs and Monitoring, temukan loongcollector, lalu klik Install.
CatatanSaat membuat kluster, Anda dapat memilih Use Simple Log Service di halaman Component Configuration lalu pilih Create New Project atau Use Existing Project.
Setelah instalasi selesai, Simple Log Service secara otomatis membuat sumber daya berikut di bawah akun saat ini. Anda dapat masuk ke konsol Simple Log Service untuk melihatnya.
Jenis sumber daya
Nama sumber daya
Fungsi
Proyek
k8s-log-${cluster_id}Unit manajemen sumber daya yang mengisolasi log layanan berbeda.
Untuk membuat Proyek guna manajemen sumber daya log yang lebih fleksibel, lihat Buat Proyek.
Kelompok mesin
k8s-group-${cluster_id}Kumpulan node pengumpulan log.
Logstore
config-operation-logPentingJangan menghapus Logstore ini.
Menyimpan log komponen loongcollector-operator. Metode penagihannya sama dengan Logstore biasa. Untuk informasi lebih lanjut, lihat Item yang dapat ditagih pada mode bayar berdasarkan data yang diingest. Kami menyarankan agar Anda tidak membuat konfigurasi pengumpulan di Logstore ini.
Kluster yang dikelola sendiri
Sambungkan ke kluster Kubernetes dan jalankan perintah sesuai wilayah kluster Anda:
Wilayah Tiongkok
wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shWilayah di luar Tiongkok
wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shBuka direktori
loongcollector-custom-k8s-packagedan modifikasi file konfigurasi./loongcollector/values.yaml.# ===================== Informasi Wajib ===================== # Nama proyek tempat log dari kluster ini akan dikumpulkan, contohnya k8s-log-custom-sd89ehdq projectName: "" # Wilayah proyek, contohnya Shanghai: cn-shanghai region: "" # UID akun Alibaba Cloud pemilik proyek. Sertakan dalam tanda kutip, contohnya "123456789" aliUid: "" # Jaringan yang digunakan. Parameter opsional: Internet, Intranet. Default adalah Internet. net: Internet # ID AccessKey dan rahasia AccessKey akun Alibaba Cloud atau pengguna RAM. Akun harus memiliki izin kebijakan sistem AliyunLogFullAccess. accessKeyID: "" accessKeySecret: "" # ID kluster kustom. Nama hanya boleh berisi huruf besar, huruf kecil, angka, dan tanda hubung (-). clusterID: ""Di direktori
loongcollector-custom-k8s-package, jalankan perintah berikut untuk menginstal LoongCollector dan komponen dependennya:bash k8s-custom-install.sh installSetelah instalasi selesai, periksa status berjalan komponen.
Jika pod gagal dimulai, periksa apakah konfigurasi `values.yaml` sudah benar dan apakah citra terkait berhasil ditarik.
# Periksa status pod kubectl get po -n kube-system | grep loongcollector-dsSimple Log Service juga secara otomatis membuat sumber daya berikut. Anda dapat masuk ke konsol Simple Log Service untuk melihatnya.
Jenis sumber daya
Nama sumber daya
Fungsi
Proyek
Nilai
projectNameyang didefinisikan dalam file values.yamlUnit manajemen sumber daya yang mengisolasi log layanan berbeda.
Untuk membuat Proyek guna manajemen sumber daya log yang lebih fleksibel, lihat Buat Proyek.
Kelompok mesin
k8s-group-${cluster_id}Kumpulan node pengumpulan log.
Logstore
config-operation-logPentingJangan menghapus Logstore ini.
Menyimpan log komponen loongcollector-operator. Metode penagihannya sama dengan Logstore biasa. Untuk informasi lebih lanjut, lihat Item yang dapat ditagih pada mode bayar berdasarkan data yang ditulis. Kami menyarankan agar Anda tidak membuat konfigurasi pengumpulan di Logstore ini.
Langkah 2: Buat Logstore
Logstore adalah unit penyimpanan di Simple Log Service yang digunakan untuk menyimpan log yang dikumpulkan.
Masuk ke konsol Simple Log Service lalu klik nama proyek target.
Di panel navigasi kiri, pilih
, klik +, lalu buat Logstore:Logstore Name: Masukkan nama yang unik dalam proyek. Nama ini tidak dapat diubah setelah dibuat.
Logstore Type: Pilih Standard atau Query berdasarkan perbandingan fitur.
Billing Mode:
Pay-by-Feature: Anda ditagih secara terpisah untuk setiap sumber daya, seperti penyimpanan, indeks, dan operasi baca/tulis. Mode ini cocok untuk skenario skala kecil atau skenario dengan penggunaan fitur yang tidak pasti.
Pay-by-Written-Data: Anda hanya ditagih berdasarkan volume data mentah yang Anda tulis. Mode ini menyediakan penyimpanan gratis selama 30 hari dan fitur gratis seperti transformasi dan pengiriman data. Mode ini cocok untuk skenario bisnis dengan periode penyimpanan mendekati 30 hari atau pipeline pemrosesan data yang kompleks.
Data Retention Period: Menentukan jumlah hari penyimpanan log. Nilainya berkisar antara 1 hingga 3.650. Nilai 3.650 menunjukkan retensi permanen. Nilai default adalah 30 hari.
Biarkan pengaturan lainnya tetap default lalu klik OK. Untuk informasi lebih lanjut, lihat Kelola Logstore.
Langkah 3: Buat dan konfigurasikan aturan pengumpulan log
Tentukan log mana yang dikumpulkan oleh LoongCollector, cara mengurai struktur log, dan cara menyaring konten. Lalu, terapkan konfigurasi ke kelompok mesin.
Di halaman
Logstore, klik
di sebelah kiri nama Logstore target untuk memperluasnya.Klik ikon
di samping Data Ingestion. Di kotak dialog Quick Data Ingestion yang muncul, pilih templat ingesti berdasarkan sumber log lalu klik Ingest Now:Untuk keluaran standar kontainer, pilih K8s-Standard Output-New.
Templat untuk mengumpulkan keluaran standar kontainer tersedia dalam versi baru dan lama. Kami menyarankan Anda menggunakan versi baru. Untuk informasi lebih lanjut tentang perbedaan antara versi baru dan lama, lihat Lampiran: Perbandingan Versi Keluaran Standar Kontainer Baru dan Lama.
Untuk log teks kluster, pilih Kubernetes-File.
Konfigurasikan Machine Group lalu klik Next.
Scenario: Pilih K8s Scenario.
Deployment Method: Pilih ACK Daemonset atau Self-managed Cluster Daemonset.
Dari daftar Source Machine Group, tambahkan kelompok mesin yang dibuat sistem
k8s-group-${cluster_id}ke daftar Applied Machine Groups.
Di halaman Logtail Configurations, tentukan parameter berikut lalu klik Next.
1. Konfigurasi global dan input
Sebelum memulai, pastikan Anda telah memilih templat impor data dan menerapkannya ke kelompok mesin. Pada langkah ini, Anda menentukan nama konfigurasi pengumpulan, sumber log, dan cakupan pengumpulan.
Kumpulkan keluaran standar kontainer
Global Configurations
Configuration Name: Nama konfigurasi pengumpulan. Nama harus unik dalam proyek dan tidak dapat diubah setelah dibuat. Nama harus memenuhi persyaratan berikut:
Hanya boleh berisi huruf kecil, angka, tanda hubung (-), dan garis bawah (_).
Harus diawali dan diakhiri dengan huruf kecil atau angka.
Konfigurasi Input
Anda dapat mengaktifkan sakelar Standard Output atau Standard Error (keduanya diaktifkan secara default).
PentingJangan mengaktifkan keluaran standar dan kesalahan standar secara bersamaan. Hal ini dapat menyebabkan kebingungan dalam log yang dikumpulkan.
Kumpulkan log teks kluster
Global Configurations:
Configuration Name: Nama konfigurasi pengumpulan. Nama harus unik dalam proyek dan tidak dapat diubah setelah dibuat. Nama harus memenuhi persyaratan berikut:
Hanya boleh berisi huruf kecil, angka, tanda hubung (-), dan garis bawah (_).
Harus diawali dan diakhiri dengan huruf kecil atau angka.
Input Configurations:
File Path Type:
Container Path: Mengumpulkan file log dari dalam kontainer.
Host Path: Mengumpulkan log layanan lokal di host.
File Path: Jalur absolut file log yang akan dikumpulkan.
Linux: Jalur harus diawali dengan garis miring (/). Contohnya,
/data/mylogs/**/*.logmenunjukkan semua file dengan ekstensi .log di direktori/data/mylogsdan subdirektorinya.Windows: Jalur harus diawali dengan huruf drive, contohnya,
C:\Program Files\Intel\**\*.Log.
Maximum Directory Monitoring Depth: Kedalaman direktori maksimum yang dapat dicocokkan oleh karakter wildcard
**di File Path. Nilai default adalah 0, yang berarti hanya direktori saat ini. Nilainya berkisar antara 0 hingga 1.000.Jika Anda mengatur kedalaman ke 0, Anda harus mengonfigurasi jalur ke direktori tempat file berada.
2. Pemrosesan dan strukturisasi log
Anda dapat mengonfigurasi aturan pemrosesan log untuk mengonversi log mentah yang tidak terstruktur menjadi data terstruktur yang dapat dicari. Hal ini meningkatkan efisiensi kueri dan analisis log. Sebelum mengonfigurasi aturan, tambahkan contoh log:
Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Sample Log lalu masukkan konten log yang ingin Anda kumpulkan. Sistem akan mengidentifikasi format log berdasarkan contoh dan membantu Anda menghasilkan ekspresi reguler serta aturan penguraian. Hal ini menyederhanakan konfigurasi.
Skenario 1: Pemrosesan log multiline (seperti stack trace Java)
Log, seperti stack exception Java dan objek JSON, sering kali mencakup beberapa baris. Dalam mode pengumpulan default, log tersebut dibagi menjadi beberapa catatan tidak lengkap, yang menyebabkan kehilangan konteks. Untuk mengatasi masalah ini, Anda dapat mengaktifkan mode pengumpulan multiline dan mengonfigurasi ekspresi reguler baris pertama untuk menggabungkan baris berurutan dari log menjadi satu entri log lengkap.
Contoh:
Log mentah tanpa pemrosesan apa pun | Dalam mode pengumpulan default, setiap baris adalah log terpisah, dan informasi stack terpecah, kehilangan konteks | Aktifkan mode multiline dan gunakan ekspresi reguler baris pertama untuk mengidentifikasi log lengkap, mempertahankan struktur semantik penuh. |
|
|
|
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, aktifkan Multi-line Mode:
Type: Pilih Custom atau Multiline JSON.
Custom: Karena format log mentah tidak tetap, Anda harus mengonfigurasi Start-of-Line Regular Expression untuk mengidentifikasi baris pertama setiap entri log.
First Line Regular Expression: Anda dapat menghasilkan secara otomatis atau memasukkan ekspresi reguler secara manual. Ekspresi reguler harus mencocokkan seluruh baris data. Contohnya, ekspresi reguler yang mencocokkan data pada contoh sebelumnya adalah
\[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*.Pembuatan otomatis: Klik Generate. Lalu, di kotak teks Log Sample, pilih konten log yang ingin Anda ekstrak lalu klik Generate Regular Expression.
Input manual: Klik Manually Enter Regular Expression. Setelah memasukkan ekspresi, klik Validate.
Multi-line JSON: Pilih opsi ini jika semua log mentah berada dalam format JSON standar. Simple Log Service secara otomatis menangani jeda baris dalam satu log JSON.
Processing Method for Failed Chunks:
Discard: Jika segmen teks gagal mencocokkan aturan awal baris, segmen tersebut dibuang.
Retain As Single Lines: Teks yang tidak cocok dipecah dan dipertahankan berdasarkan pola baris tunggal aslinya.
Skenario 2: Log terstruktur
Saat log mentah berupa teks tidak terstruktur atau semi-terstruktur, seperti log akses NGINX atau log keluaran aplikasi, kueri dan analisis langsung sering kali tidak efisien. Simple Log Service menyediakan berbagai plugin penguraian data yang dapat secara otomatis mengonversi log mentah dengan format berbeda menjadi data terstruktur. Hal ini memberikan fondasi data yang kuat untuk analisis, pemantauan, dan peringatan selanjutnya.
Contoh:
Log mentah tanpa pemrosesan apa pun | Log setelah penguraian terstruktur |
| |
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations
Tambahkan plugin penguraian: Klik Add Processing Plugin untuk mengonfigurasi penguraian ekspresi reguler, penguraian pemisah, penguraian JSON, dan plugin lainnya yang sesuai dengan format log Anda. Misalnya, untuk mengumpulkan log NGINX, pilih .
NGINX Log Configuration: Salin sepenuhnya definisi
log_formatdari file konfigurasi server NGINX (`nginx.conf`) lalu tempelkan ke kotak teks ini.Contoh:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$request_time $request_length ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent"';PentingDefinisi format harus persis sama dengan format yang menghasilkan log di server. Jika tidak, penguraian log akan gagal.
Parameter konfigurasi umum: Parameter berikut muncul di beberapa plugin penguraian data. Fungsi dan penggunaannya konsisten.
Bidang Asli: Tentukan nama bidang sumber yang akan diurai. Nilai default adalah
content, yang merepresentasikan seluruh konten log yang dikumpulkan.Pertahankan Bidang Asli Jika Penguraian Gagal: Kami menyarankan Anda memilih opsi ini. Jika log tidak dapat diurai oleh plugin karena ketidakcocokan format, opsi ini memastikan konten log asli tidak hilang dan dipertahankan sepenuhnya di bidang asli yang ditentukan.
Pertahankan Bidang Asli Jika Penguraian Berhasil: Jika Anda memilih opsi ini, konten log asli dipertahankan meskipun log berhasil diurai.
3. Penyaringan log
Saat pengumpulan log, mengumpulkan volume besar log bernilai rendah atau tidak relevan, seperti log tingkat DEBUG atau INFO, dapat membuang sumber daya penyimpanan, meningkatkan biaya, memengaruhi efisiensi kueri, dan menimbulkan risiko kebocoran data. Untuk mengatasi masalah ini, Anda dapat menggunakan kebijakan penyaringan detail halus untuk pengumpulan log yang efisien dan aman.
Kurangi biaya melalui penyaringan konten
Anda dapat menyaring bidang berdasarkan konten log, seperti hanya mengumpulkan log dengan tingkat WARNING atau ERROR.
Contoh:
Log mentah tanpa pemrosesan apa pun | Kumpulkan hanya log |
| |
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations
Klik Add Processor lalu pilih :
Field Name: Bidang log yang akan disaring.
Field Value: Ekspresi reguler yang digunakan untuk penyaringan. Hanya pencocokan teks penuh yang didukung. Pencocokan kata kunci parsial tidak didukung.
Kontrol cakupan pengumpulan melalui daftar hitam
Anda dapat menggunakan mekanisme daftar hitam untuk mengecualikan direktori atau file tertentu. Hal ini mencegah log yang tidak relevan atau sensitif diunggah.
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, aktifkan Collection Blacklist lalu klik Add.
Pencocokan penuh dan pencocokan wildcard untuk direktori dan nama file didukung. Satu-satunya karakter wildcard yang didukung adalah tanda bintang (*) dan tanda tanya (?).
File Path Blacklist: Jalur file yang akan diabaikan. Contoh:
/home/admin/private*.log: Saat pengumpulan, semua file di direktori/home/admin/yang diawali dengan `private` dan diakhiri dengan `.log` diabaikan./home/admin/private*/*_inner.log: Saat pengumpulan, file yang diakhiri dengan `_inner.log` di direktori yang diawali dengan `private` di bawah direktori/home/admin/diabaikan.
File Blacklist: Nama file yang akan diabaikan saat pengumpulan data. Contoh:
app_inner.log: Saat pengumpulan, semua file bernamaapp_inner.logdiabaikan.
Directory Blacklist: Jalur direktori tidak boleh diakhiri dengan garis miring (/). Contoh:
/home/admin/dir1/: Daftar hitam direktori tidak akan berlaku./home/admin/dir*: Semua file di subdirektori/home/admin/yang diawali dengan `dir` diabaikan./home/admin/*/dir: Saat pengumpulan, semua file di subdirektori bernama `dir` di tingkat kedua di bawah direktori/home/admin/diabaikan. Misalnya, file di direktori/home/admin/a/dirdiabaikan, tetapi file di direktori/home/admin/a/b/dirdikumpulkan.
Penyaringan kontainer
Anda dapat mengatur kondisi pengumpulan berdasarkan metadata kontainer, seperti variabel lingkungan, label pod, namespace, dan nama kontainer, untuk mengontrol secara tepat log kontainer mana yang dikumpulkan.
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, aktifkan Container Filtering lalu klik Add.
Beberapa kondisi digabungkan menggunakan logika AND. Semua pencocokan ekspresi reguler didasarkan pada mesin RE2 bahasa Go. Mesin ini memiliki lebih banyak batasan dibandingkan mesin lain, seperti PCRE. Oleh karena itu, Anda harus menulis ekspresi reguler yang sesuai dengan pedoman di Lampiran: Batasan Ekspresi Reguler (Penyaringan Kontainer).
Daftar Hitam/Putih Variabel Lingkungan: Tentukan kondisi variabel lingkungan untuk kontainer tempat Anda ingin mengumpulkan log.
Daftar Hitam/Putih Label Pod K8s: Tentukan kondisi label untuk pod tempat kontainer yang ingin Anda kumpulkan lognya berada.
Pencocokan Regex Nama Pod K8s: Tentukan kontainer tempat Anda ingin mengumpulkan log berdasarkan nama pod.
Pencocokan Regex Namespace K8s: Tentukan kontainer tempat Anda ingin mengumpulkan log berdasarkan nama namespace.
Pencocokan Regex Nama Kontainer K8s: Tentukan kontainer tempat Anda ingin mengumpulkan log berdasarkan nama kontainer.
Daftar Hitam/Putih Label Kontainer: Kumpulkan log dari kontainer yang labelnya memenuhi kondisi yang ditentukan. Ini digunakan dalam skenario Docker dan tidak disarankan untuk skenario Kubernetes.
4. Kategorisasi log
Dalam skenario di mana beberapa aplikasi atau instans berbagi format log yang sama, sulit membedakan sumber log. Hal ini menyebabkan kurangnya konteks saat kueri dan analisis yang tidak efisien. Untuk mengatasi masalah ini, Anda dapat mengonfigurasi topik dan tag log untuk asosiasi konteks otomatis dan kategorisasi logis.
Konfigurasikan topik log
Jika log beberapa aplikasi atau instans memiliki format yang sama tetapi jalur berbeda, seperti /apps/app-A/run.log dan /apps/app-B/run.log, sulit membedakan sumber log yang dikumpulkan. Dalam kasus ini, Anda dapat menghasilkan topik berdasarkan kelompok mesin, nama kustom, atau ekstraksi jalur file untuk membedakan log dari layanan atau sumber jalur yang berbeda secara fleksibel.
Prosedur: Pilih . Pilih metode pembuatan topik. Tiga jenis berikut didukung:
Topik Kelompok Mesin: Jika konfigurasi pengumpulan diterapkan ke beberapa kelompok mesin, LoongCollector secara otomatis menggunakan nama kelompok mesin server sebagai nilai bidang
__topic__untuk diunggah. Ini cocok untuk skenario di mana log dibagi berdasarkan kluster host.Custom: Formatnya adalah
customized://<nama_topik_kustom>, contohnya,customized://app-login. Ini berlaku untuk skenario topik statis dengan identitas bisnis tetap.Ekstraksi Jalur File: Anda dapat mengekstrak informasi kunci dari jalur lengkap file log untuk menandai sumber log secara dinamis. Ini cocok untuk situasi di mana beberapa pengguna atau aplikasi berbagi nama file log yang sama tetapi memiliki jalur berbeda.
Jika beberapa pengguna atau layanan menulis log ke direktori tingkat atas berbeda tetapi dengan subdirektori dan nama file yang sama, sumber tidak dapat dibedakan hanya berdasarkan nama file. Contohnya:
/data/logs ├── userA │ └── serviceA │ └── service.log ├── userB │ └── serviceA │ └── service.log └── userC └── serviceA └── service.logDalam kasus ini, Anda dapat mengonfigurasi Ekstraksi Jalur File dan menggunakan ekspresi reguler untuk mengekstrak informasi kunci dari jalur lengkap. Hasil yang cocok kemudian digunakan sebagai topik log untuk diunggah ke Logstore.
Aturan ekstraksi: Berdasarkan grup penangkapan ekspresi reguler
Saat Anda mengonfigurasi ekspresi reguler, sistem secara otomatis menentukan format bidang keluaran berdasarkan jumlah dan penamaan grup penangkapan. Aturannya sebagai berikut:
Dalam ekspresi reguler untuk jalur file, Anda harus meng-escape garis miring (/).
Jenis grup penangkapan
Skenario
Bidang yang dihasilkan
Contoh regex
Jalur yang cocok
Bidang yang dihasilkan
Grup penangkapan tunggal (hanya satu
(.*?))Hanya satu dimensi yang dibutuhkan untuk membedakan sumber, seperti nama pengguna atau lingkungan
Menghasilkan bidang
__topic__\/logs\/(.*?)\/app\.log/logs/userA/app.log__topic__: userABeberapa grup penangkapan - tanpa nama (beberapa
(.*?))Beberapa dimensi dibutuhkan tetapi tanpa label semantik
Menghasilkan bidang tag
__tag__:__topic_{i}__, di mana{i}adalah nomor urut grup penangkapan\/logs\/(.*?)\/(.*?)\/app\.log/logs/userA/svcA/app.log__tag__:__topic_1__userA.__tag__:__topic_2__svcABeberapa grup penangkapan - bernama (menggunakan
(?P<name>.*?))Beberapa dimensi dibutuhkan, dan makna bidang yang jelas diinginkan untuk memudahkan kueri dan analisis
Menghasilkan bidang tag
__tag__:{name}\/logs\/(?P<user>.*?)\/(?P<service>.*?)\/app\.log/logs/userA/svcA/app.log__tag__:user: userA;__tag__:service:svcA
Penandaan log
Anda dapat mengaktifkan fitur pengayaan tag log untuk mengekstrak informasi kunci dari variabel lingkungan kontainer atau label pod Kubernetes dan melampirkan informasi tersebut sebagai tag untuk pengelompokan log detail halus.
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, aktifkan Log Tag Enrichment lalu klik Add.
Environment Variables: Konfigurasikan nama variabel lingkungan dan nama tag tempat menyimpan nilai variabel tersebut.
Nama Variabel Lingkungan: Tentukan nama variabel lingkungan yang akan diekstrak.
Nama Tag: Nama tag variabel lingkungan.
Pod Labels: Konfigurasikan nama label pod dan nama tag. Nilai label pod disimpan sebagai nilai tag.
Nama Label Pod: Nama label pod Kubernetes yang akan diekstrak.
Nama Tag: Nama tag.
Langkah 4: Konfigurasi kueri dan analisis
Setelah Anda mengonfigurasi pemrosesan log dan plugin, klik Next untuk membuka halaman Query and Analysis:
Secara default, sistem mengaktifkan indeks teks penuh, yang memungkinkan Anda mencari kata kunci dalam konten mentah log.
Untuk melakukan kueri tepat berdasarkan bidang, klik Auto Generate Index setelah Pratinjau Data dimuat. Simple Log Service menghasilkan indeks bidang berdasarkan entri pertama dalam data pratinjau.
Setelah konfigurasi selesai, klik Next untuk menyelesaikan pengaturan proses pengumpulan.
Langkah 5: Validasi dan pemecahan masalah
Setelah Anda membuat konfigurasi pengumpulan dan menerapkannya ke kelompok mesin, sistem secara otomatis menerapkan konfigurasi dan mulai mengumpulkan log inkremental.
Lihat log yang dilaporkan
Konfirmasi bahwa file log memiliki konten baru: LoongCollector hanya mengumpulkan log inkremental. Anda dapat menjalankan perintah
tail -f /path/to/your/log/filedan memicu operasi layanan untuk memastikan log baru sedang ditulis.Kueri log: Buka halaman kueri dan analisis Logstore target lalu klik Search & Analysis. Rentang waktu default adalah 15 menit terakhir. Periksa apakah log baru masuk. Setiap log teks kontainer yang dikumpulkan berisi informasi bidang default berikut:
Bidang
Deskripsi
__tag__:__hostname__
Nama host kontainer.
__tag__:__path__
Jalur file log di dalam kontainer.
__tag__:_container_ip_
Alamat IP kontainer.
__tag__:_image_name_
Nama citra yang digunakan oleh kontainer.
__tag__:_pod_name_
Nama pod.
__tag__:_namespace_
Namespace tempat pod berada.
__tag__:_pod_uid_
Pengidentifikasi unik (UID) pod.
Masalah pemecahan masalah umum
Koneksi heartbeat kelompok mesin 'gagal'
Periksa pengidentifikasi pengguna: Jika jenis server Anda bukan ECS, atau jika instance ECS dan proyek dimiliki oleh akun Alibaba Cloud berbeda, periksa apakah pengidentifikasi pengguna yang benar ada di direktori yang ditentukan seperti pada tabel berikut.
Linux: Jalankan perintah
cd /etc/ilogtail/users/ && touch <uid>untuk membuat file pengidentifikasi pengguna.Windows: Buka direktori
C:\LogtailData\users\lalu buat file kosong bernama<uid>.
Jika file bernama dengan ID akun Alibaba Cloud proyek saat ini ada di jalur yang ditentukan, pengidentifikasi pengguna telah dikonfigurasi dengan benar.
Periksa pengidentifikasi kelompok mesin: Jika Anda menggunakan kelompok mesin dengan ID kustom, periksa apakah file
user_defined_idada di direktori yang ditentukan. Jika file ada, periksa apakah isi file sesuai dengan ID kustom yang dikonfigurasi untuk kelompok mesin.Linux:
# Konfigurasikan ID pengguna kustom. Jika direktori tidak ada, buat secara manual. echo "user-defined-1" > /etc/ilogtail/user_defined_idWindows: Di direktori
C:\LogtailData, buat file bernamauser_defined_idlalu tulis ID pengguna kustom ke dalam file tersebut. Jika direktori tidak ada, Anda harus membuatnya secara manual.
Jika identitas pengguna dan identitas kelompok mesin telah dikonfigurasi dengan benar, lihat Panduan Pemecahan Masalah Kelompok Mesin LoongCollector (Logtail) untuk informasi lebih lanjut tentang pemecahan masalah.
Kesalahan pengumpulan log atau kesalahan format
Pemecahan masalah: Masalah ini menunjukkan bahwa koneksi jaringan dan konfigurasi dasar normal. Masalah ini biasanya disebabkan oleh ketidakcocokan antara konten log dan aturan penguraian. Anda harus melihat pesan kesalahan spesifik untuk menemukan penyebab masalah:
Di halaman Logtail Configurations, klik nama konfigurasi LoongCollector (Logtail) yang mengalami kesalahan pengumpulan. Di tab Log Collection Errors, klik Time Range untuk mengatur rentang waktu kueri.
Di bagian , lihat metrik alarm log kesalahan lalu temukan solusi yang sesuai di Kesalahan Pengumpulan Data Umum.
Langkah selanjutnya
Visualisasi data: Gunakan dasbor visualisasi untuk memantau tren metrik utama.
Peringatan otomatis untuk anomali data: Tetapkan kebijakan peringatan untuk mendeteksi anomali sistem secara real-time.
Pemecahan Masalah: Tidak ada data yang dikumpulkan dari log kontainer
Periksa log baru: Setelah Anda mengonfigurasi LoongCollector (Logtail) untuk pengumpulan, jika tidak ada log baru di file log target, LoongCollector (Logtail) tidak akan mengumpulkan data dari file tersebut.
FAQ
Bagaimana cara mengirim log kluster ACK ke proyek di akun Alibaba Cloud lain?
Anda dapat menginstal komponen Simple Log Service LoongCollector (Logtail) secara manual di kluster ACK dan mengonfigurasinya dengan ID akun Alibaba Cloud atau kredensial akses (AccessKey) akun target. Hal ini memungkinkan Anda mengirim log kontainer ke proyek Simple Log Service yang dimiliki oleh akun Alibaba Cloud lain.
Skenario: Anda ingin mengumpulkan data log dari kluster ACK dan mengirimkannya ke proyek Simple Log Service yang dimiliki oleh akun Alibaba Cloud berbeda karena alasan seperti struktur organisasi, isolasi izin, atau pemantauan terpadu. Anda dapat menginstal LoongCollector (Logtail) secara manual untuk konfigurasi lintas akun.
Prosedur: Prosedur berikut menjelaskan cara menginstal LoongCollector secara manual. Untuk informasi tentang cara menginstal Logtail, lihat Instal dan konfigurasikan Logtail.
Sambungkan ke kluster Kubernetes lalu jalankan perintah sesuai wilayah kluster Anda:
Wilayah Tiongkok
wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shWilayah di luar Tiongkok
wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shBuka direktori
loongcollector-custom-k8s-packagelalu modifikasi file konfigurasi./loongcollector/values.yaml.# ===================== Informasi Wajib ===================== # Nama proyek tempat log dari kluster ini akan dikumpulkan, contohnya k8s-log-custom-sd89ehdq projectName: "" # Wilayah proyek, contohnya Shanghai: cn-shanghai region: "" # UID akun Alibaba Cloud pemilik proyek. Sertakan dalam tanda kutip, contohnya "123456789" aliUid: "" # Jaringan yang digunakan. Parameter opsional: Internet, Intranet. Default adalah Internet. net: Internet # ID AccessKey dan rahasia AccessKey akun Alibaba Cloud atau pengguna RAM. Akun harus memiliki izin kebijakan sistem AliyunLogFullAccess. accessKeyID: "" accessKeySecret: "" # ID kluster kustom. Nama hanya boleh berisi huruf besar, huruf kecil, angka, dan tanda hubung (-). clusterID: ""Di direktori
loongcollector-custom-k8s-package, jalankan perintah berikut untuk menginstal LoongCollector dan komponen dependennya:bash k8s-custom-install.sh installSetelah instalasi selesai, periksa status berjalan komponen.
Jika pod gagal dimulai, periksa apakah konfigurasi `values.yaml` sudah benar dan apakah citra terkait berhasil ditarik.
# Periksa status pod kubectl get po -n kube-system | grep loongcollector-dsSimple Log Service juga secara otomatis membuat sumber daya berikut. Anda dapat masuk ke konsol Simple Log Service untuk melihatnya.
Jenis sumber daya
Nama sumber daya
Fungsi
Proyek
Nilai
projectNameyang didefinisikan dalam file values.yamlUnit manajemen sumber daya yang mengisolasi log layanan berbeda.
Untuk membuat Proyek guna manajemen sumber daya log yang lebih fleksibel, lihat Buat Proyek.
Kelompok mesin
k8s-group-${cluster_id}Kumpulan node pengumpulan log.
Logstore
config-operation-logPentingJangan menghapus Logstore ini.
Menyimpan log komponen loongcollector-operator. Metode penagihannya sama dengan Logstore biasa. Untuk informasi lebih lanjut, lihat Item yang dapat ditagih pada mode bayar berdasarkan data yang ditulis. Kami menyarankan agar Anda tidak membuat konfigurasi pengumpulan di Logstore ini.
Bagaimana cara mengumpulkan log dari file atau keluaran standar kontainer yang sama menggunakan beberapa konfigurasi pengumpulan?
Secara default, untuk mencegah duplikasi data, Simple Log Service hanya mengizinkan setiap sumber log dikumpulkan oleh satu konfigurasi pengumpulan:
File log teks hanya dapat cocok dengan satu konfigurasi pengumpulan Logtail.
Keluaran standar (stdout) kontainer:
Jika Anda menggunakan templat keluaran standar versi baru, keluaran standar hanya dapat dikumpulkan oleh satu konfigurasi pengumpulan keluaran standar secara default.
Jika Anda menggunakan templat keluaran standar versi lama, tidak diperlukan konfigurasi tambahan. Secara default mendukung pengumpulan ganda.
Masuk ke konsol Simple Log Service lalu buka proyek target.
Di panel navigasi kiri, pilih
Logstore lalu temukan Logstore target.Klik ikon
di depan namanya untuk memperluas Logstore.Klik Logtail Configurations. Di daftar konfigurasi, temukan konfigurasi Logtail target lalu klik Manage Logtail Configuration di kolom Tindakan.
Di halaman konfigurasi Logtail, klik Edit lalu gulir ke bawah ke bagian Input Configurations:
Untuk mengumpulkan log file teks: Aktifkan Allow File To Be Collected For Multiple Times.
Untuk mengumpulkan keluaran standar kontainer: Aktifkan Allow Collection By Different Logtail Configurations.
Mengapa saya mendapatkan kesalahan dependensi saat mencoba meng-uninstall komponen loongcollector(logtail-ds) di ACK?
Masalah: Saat Anda mencoba menghapus komponen pengumpulan log loongcollector (logtail-ds) di Container Service for Kubernetes (ACK), sistem melaporkan kesalahan: `Dependencies of this component are not met`.
Dependencies of addons are not met: terway-eniip depends on logtail-ds(>0.0) whose version is v3.x.x.x-aliyun or will be v3.x.x.x-aliyun.
Penyebab: Plugin jaringan terway-eniip telah mengaktifkan fitur pengumpulan log, yang bergantung pada komponen loongcollector (logtail-ds). Oleh karena itu, ACK tidak mengizinkan Anda langsung meng-uninstall loongcollector (logtail-ds) sebelum menghapus dependensi ini.
Solusi: Ikuti langkah-langkah berikut untuk menghapus dependensi lalu meng-uninstall komponen:
Masuk ke konsol Container Service for Kubernetes.
Di daftar kluster, klik nama kluster target.
Di panel navigasi kiri, klik Component Management.
Di daftar komponen, cari dan temukan komponen
terway-eniip. Klik .Di kotak dialog yang muncul, klik Confirm.
Setelah konfigurasi berlaku, coba uninstall komponen loongcollector (logtail-ds) lagi.
Mengapa entri log terakhir dilaporkan setelah penundaan lama? Mengapa terkadang terpotong?
Penyebab: Log biasanya terpotong jika file log tidak memiliki jeda baris di akhir, atau jika log multiline, seperti stack exception, belum ditulis sepenuhnya. Karena pengumpul tidak dapat menentukan apakah log telah berakhir, bagian akhir konten mungkin terpisah terlalu dini atau dilaporkan dengan penundaan. Mekanisme penanganan berbeda berdasarkan versi LoongCollector (Logtail):
Versi sebelum 1.8:
Jika baris terakhir log tidak memiliki jeda baris (carriage return), atau jika paragraf log multiline belum selesai, pengumpul menunggu tulisan berikutnya untuk memicu output. Hal ini dapat menyebabkan entri log terakhir ditahan lama tanpa dikirim hingga log baru ditulis.Versi 1.8 dan lebih baru:
Mekanisme refresh timeout diperkenalkan untuk mencegah log macet. Saat baris log yang tidak lengkap terdeteksi, sistem memulai timer. Setelah periode timeout berakhir, konten saat ini secara otomatis dikirimkan, yang memastikan log akhirnya dikumpulkan.Timeout default: 60 detik. Hal ini memastikan integritas dalam sebagian besar skenario.
Anda dapat menyesuaikan nilai ini sesuai kebutuhan, tetapi jangan mengaturnya ke 0. Hal ini dapat menyebabkan log terpotong atau sebagian hilang.
Solusi:
Anda dapat memperpanjang waktu tunggu untuk memastikan log lengkap ditulis sebelum dikumpulkan:
Masuk ke konsol Simple Log Service lalu buka proyek target.
Di panel navigasi kiri, pilih
Logstore lalu temukan Logstore target.Klik ikon
di depan namanya untuk memperluas Logstore.Klik Logtail Configurations. Di daftar konfigurasi, temukan konfigurasi Logtail target lalu klik Manage Logtail Configuration di kolom Tindakan.
Di halaman konfigurasi Logtail, klik Edit:
Pilih . Tambahkan konfigurasi JSON berikut untuk menyesuaikan periode timeout.
{ "FlushTimeoutSecs": 1 }Nilai default: Ditentukan oleh parameter startup
default_reader_flush_timeout, yang biasanya beberapa detik.Unit: Detik.
Nilai yang disarankan: ≥1 detik. Jangan mengaturnya ke 0. Hal ini dapat menyebabkan log terpotong atau sebagian hilang.
Setelah konfigurasi, klik Save.
Mengapa LoongCollector (Logtail) beralih dari domain jaringan internal ke jaringan publik selama operasi? Dapatkah beralih kembali secara otomatis?
Jika LoongCollector (Logtail) mendeteksi anomali dalam komunikasi domain jaringan internal, seperti kegagalan jaringan atau timeout koneksi, sistem secara otomatis beralih ke nama domain publik untuk transmisi data. Hal ini memastikan kelangsungan dan keandalan pengumpulan log serta mencegah akumulasi atau kehilangan log.
LoongCollector: Secara otomatis beralih kembali ke jaringan internal setelah jaringan dipulihkan.
Logtail: Tidak beralih kembali secara otomatis. Anda harus me-restart secara manual untuk melanjutkan komunikasi jaringan internal.
Lampiran: Penjelasan detail plugin native
Di bagian Processing Configurations halaman Logtail Configuration, Anda dapat menambahkan plugin pemrosesan untuk menyusun log mentah. Untuk menambahkan plugin pemrosesan ke konfigurasi pengumpulan yang sudah ada, ikuti langkah-langkah berikut:
Di panel navigasi kiri, pilih
Logstore lalu temukan Logstore target.Klik ikon
di depan namanya untuk memperluas Logstore.Klik Logtail Configurations. Di daftar konfigurasi, temukan konfigurasi Logtail target lalu klik Manage Logtail Configuration di kolom Tindakan.
Di halaman konfigurasi Logtail, klik Edit.
Bagian ini hanya memperkenalkan plugin pemrosesan yang umum digunakan yang mencakup skenario pemrosesan log umum. Untuk fitur lainnya, lihat Plugin pemrosesan ekstensi.
Aturan menggabungkan plugin (untuk LoongCollector / Logtail 2.0 dan lebih baru):
Plugin pemrosesan native dan ekstensi dapat digunakan secara independen atau digabungkan sesuai kebutuhan.
Kami menyarankan Anda memprioritaskan plugin pemrosesan native karena menawarkan kinerja lebih baik dan stabilitas lebih tinggi.
Saat fitur native tidak dapat memenuhi kebutuhan bisnis Anda, Anda dapat menambahkan plugin pemrosesan ekstensi setelah plugin native yang dikonfigurasi untuk pemrosesan tambahan.
Batasan urutan:
Semua plugin dijalankan secara berurutan sesuai urutan konfigurasinya, yang membentuk rantai pemrosesan. Catatan: Semua plugin pemrosesan native harus mendahului plugin pemrosesan ekstensi apa pun. Setelah Anda menambahkan plugin pemrosesan ekstensi, Anda tidak dapat menambahkan plugin pemrosesan native lagi.
Penguraian ekspresi reguler
Gunakan ekspresi reguler untuk mengekstrak bidang log dan mengurai log menjadi pasangan kunci-nilai. Setiap bidang dapat dikueri dan dianalisis secara independen.
Contoh:
Log mentah tanpa pemrosesan apa pun | Menggunakan plugin penguraian regex |
| |
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih :
Regular Expression: Mencocokkan log dan mendukung pembuatan otomatis atau input manual:
Pembuatan otomatis:
Klik Generate.
Di kotak teks Log Sample, pilih konten log yang ingin Anda ekstrak.
Klik Generate Regular Expression.

Input manual: Klik Manually Enter Regular Expression berdasarkan format log.
Setelah konfigurasi, klik Validate untuk menguji apakah ekspresi reguler dapat mengurai konten log dengan benar.
Log Fetch Field: Untuk konten log yang diambil (Nilai), atur nama bidang yang sesuai (Kunci).
Untuk informasi lebih lanjut tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Proses log terstruktur.
Penguraian berbasis pemisah
Gunakan pemisah untuk menyusun konten log dan mengurai menjadi beberapa pasangan kunci-nilai. Pemisah karakter tunggal dan multi-karakter didukung.
Contoh:
Log mentah tanpa pemrosesan apa pun | Pisahkan bidang berdasarkan karakter yang ditentukan |
| |
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih :
Separator: Menentukan karakter yang digunakan untuk memisahkan konten log.
Contohnya, untuk file CSV, pilih Custom lalu masukkan koma (,).
Quote: Jika nilai bidang berisi pemisah, Anda harus menentukan kutipan untuk membungkus bidang tersebut guna mencegah pemisahan yang salah.
Log Extraction Fields: Atur nama bidang (Kunci) untuk setiap kolom sesuai urutan pemisahan kolom. Aturan berikut berlaku:
Nama bidang hanya boleh berisi huruf, angka, dan garis bawah (_).
Nama bidang harus diawali dengan huruf atau garis bawah (_).
Panjang maksimum adalah 128 byte.
Untuk informasi lebih lanjut tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Proses log terstruktur.
Penguraian JSON standar
Menyusun log objek JSON dan mengurai menjadi pasangan kunci-nilai.
Contoh:
Log mentah tanpa pemrosesan apa pun | Pasangan kunci-nilai JSON standar diekstrak secara otomatis |
| |
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih :
Raw Log Field: Nilai default adalah content. Bidang ini digunakan untuk menyimpan konten log mentah untuk penguraian.
Untuk informasi lebih lanjut tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Proses log terstruktur.
Penguraian JSON bersarang
Mengurai log JSON bersarang menjadi pasangan kunci-nilai dengan menentukan kedalaman ekspansi.
Contoh:
Log mentah tanpa pemrosesan apa pun | Kedalaman ekspansi: 0, dengan kedalaman ekspansi digunakan sebagai awalan | Kedalaman ekspansi: 1, dengan kedalaman ekspansi digunakan sebagai awalan |
| | |
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih :
Source Field: Nama bidang sumber untuk diperluas, seperti
content.JSON Expansion Depth: Jumlah level untuk diperluas dalam objek JSON. Nilai 0 berarti ekspansi penuh (default), 1 berarti level saat ini, dan seterusnya.
JSON Expansion Delimiter: Pemisah yang digunakan untuk menggabungkan nama bidang selama ekspansi JSON. Default adalah garis bawah _.
JSON Expansion Field Prefix: Menentukan awalan untuk nama bidang setelah ekspansi JSON.
Expand Array: Memperluas array menjadi pasangan kunci-nilai berindeks.
Contoh:
{"k":["a","b"]}diperluas menjadi{"k[0]":"a","k[1]":"b"}.Untuk mengganti nama bidang yang diperluas (misalnya, mengubah `prefix_s_key_k1` menjadi `new_field_name`), Anda dapat menambahkan plugin Rename Field untuk menyelesaikan pemetaan.
Untuk informasi lebih lanjut tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Proses log terstruktur.
Penguraian array JSON
Gunakan json_extract fungsi untuk mengambil objek JSON dari array JSON.
Contoh:
Log mentah tanpa pemrosesan apa pun | Struktur array JSON yang diekstrak |
| |
Langkah konfigurasi: Di bagian Processing Configuration halaman Logtail Configuration, ubah Handling Mode ke SPL, konfigurasikan pernyataan SPL, dan gunakan fungsi json_extract untuk mengekstrak objek JSON dari array JSON.
Contoh: Ekstrak elemen dari array JSON di bidang log content lalu simpan hasilnya di bidang baru json1 dan json2.
* | extend json1 = json_extract(content, '$[0]'), json2 = json_extract(content, '$[1]')Penguraian log Apache
Menyusun konten log menjadi beberapa pasangan kunci-nilai berdasarkan definisi dalam file konfigurasi log Apache.
Contoh:
Log mentah tanpa pemrosesan apa pun | Format Log Umum Apache |
| |
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih :
Log Format: combined
Apache Configuration Field: Sistem secara otomatis mengisi konfigurasi berdasarkan Log Format.
PentingPastikan untuk memverifikasi konten yang diisi otomatis untuk memastikan persis sama dengan LogFormat yang didefinisikan dalam file konfigurasi Apache di server, yang biasanya terletak di `/etc/apache2/apache2.conf`.
Untuk informasi lebih lanjut tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Proses log terstruktur.
Penyamaran data
Menyamarkan data sensitif dalam log.
Contoh:
Log mentah tanpa pemrosesan apa pun | Hasil penyamaran |
| |
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih :
Raw Field: Bidang yang digunakan untuk menyimpan konten log sebelum penguraian.
Masking Method:
const: Mengganti konten sensitif dengan string yang ditentukan.
md5: Mengganti konten sensitif dengan hash MD5-nya.
Replacement String: Jika Anda mengatur Desensitization Method ke const, Anda harus memasukkan string untuk mengganti konten sensitif.
Preceding Content Expression: Digunakan untuk menemukan konten sensitif, dikonfigurasi menggunakan sintaks RE2.
Content Replacement Expression: Ekspresi untuk konten sensitif, dikonfigurasi menggunakan sintaks RE2.
Penguraian waktu
Mengurai bidang waktu dalam log dan mengatur hasil penguraian sebagai bidang __time__ log.
Contoh:
Log mentah tanpa pemrosesan apa pun | Penguraian waktu |
|
|
Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih :
Raw Field: Bidang yang menyimpan konten log asli sebelum penguraian.
Time Format: Atur format waktu berdasarkan konten waktu dalam log.
Time Zone: Pilih zona waktu bidang waktu dalam log. Default adalah zona waktu mesin, yaitu zona waktu lingkungan tempat proses Logtail berjalan.
Lampiran: Batasan ekspresi reguler (penyaringan kontainer)
Ekspresi reguler untuk penyaringan kontainer didasarkan pada mesin RE2 Go. Mesin RE2 memiliki beberapa batasan sintaks dibandingkan mesin lain, seperti Perl Compatible Regular Expressions (PCRE). Perhatikan hal berikut saat menulis ekspresi reguler:
1. Perbedaan sintaks grup bernama
Go menggunakan sintaks (?P<name>...) untuk mendefinisikan grup bernama dan tidak mendukung sintaks (?<name>...) dari PCRE.
Benar:
(?P<year>\d{4})Salah:
(?<year>\d{4})
2. Fitur ekspresi reguler yang tidak didukung
Fitur ekspresi reguler umum berikut tetapi kompleks tidak didukung oleh RE2. Hindari menggunakannya:
Assertion:
(?=...),(?!...),(?<=...), atau(?<!...)Ekspresi kondisional:
(?(condition)true|false)Pencocokan rekursif:
(?R)atau(?0)Referensi subprogram:
(?&name)atau(?P>name)Grup atomik:
(?>...)
3. Rekomendasi
Gunakan alat seperti Regex101 untuk men-debug ekspresi reguler. Untuk memvalidasi kompatibilitas, pilih mode Golang (RE2). Plugin tidak dapat mengurai atau mencocokkan ekspresi yang berisi sintaks yang tidak didukung.
Lampiran: Perbandingan versi baru dan lama keluaran standar kontainer
Untuk meningkatkan efisiensi penyimpanan log dan konsistensi pengumpulan, format metadata log untuk keluaran standar kontainer telah ditingkatkan. Format baru mengkonsolidasikan metadata ke bidang __tag__, yang mencapai optimasi penyimpanan dan standarisasi format.
Keunggulan inti versi keluaran standar baru
Peningkatan kinerja signifikan
Direkayasa ulang dalam C++, kinerja meningkat 180% hingga 300% dibandingkan implementasi Go lama.
Mendukung plugin native untuk pemrosesan data dan pemrosesan paralel multi-threading, yang memanfaatkan sumber daya sistem secara penuh.
Mendukung kombinasi fleksibel plugin native dan Go untuk memenuhi kebutuhan skenario kompleks.
Keandalan lebih tinggi
Mendukung antrian rotasi log keluaran standar. Mekanisme pengumpulan log disatukan dengan mekanisme pengumpulan file, yang memberikan keandalan tinggi dalam skenario dengan rotasi log keluaran standar yang cepat.
Konsumsi sumber daya lebih rendah
Penggunaan CPU berkurang 20% hingga 25%.
Penggunaan memori berkurang 20% hingga 25%.
Konsistensi O&M yang ditingkatkan
Konfigurasi parameter terpadu: Parameter konfigurasi plugin pengumpulan keluaran standar baru konsisten dengan plugin pengumpulan file.
Manajemen metadata terpadu: Penamaan bidang metadata kontainer dan lokasi penyimpanan log tag disatukan dengan skenario pengumpulan file. Sisi konsumen hanya perlu mempertahankan satu set logika pemrosesan.
Perbandingan fitur versi baru dan lama
Dimensi fitur
Fitur versi lama
Fitur versi baru
Metode penyimpanan
Metadata langsung disematkan dalam konten log sebagai bidang normal.
Metadata disimpan terpusat di tag
__tag__.Efisiensi penyimpanan
Setiap log membawa metadata lengkap berulang-ulang, yang mengonsumsi lebih banyak ruang penyimpanan.
Beberapa log dalam konteks yang sama dapat menggunakan kembali metadata, yang menghemat biaya penyimpanan.
Konsistensi format
Tidak konsisten dengan format pengumpulan file kontainer.
Penamaan bidang dan struktur penyimpanan sepenuhnya selaras dengan pengumpulan file kontainer, yang memberikan pengalaman terpadu.
Metode akses kueri
Dapat dikueri langsung berdasarkan nama bidang, seperti
_container_name_.Memerlukan akses ke pasangan kunci-nilai yang sesuai melalui
__tag__, seperti__tag__: _container_name_.Tabel pemetaan bidang metadata kontainer
Nama bidang versi lama
Nama bidang versi baru
_container_ip_
__tag__:_container_ip_
_container_name_
__tag__:_container_name_
_image_name_
__tag__:_image_name_
_namespace_
__tag__:_namespace_
_pod_name_
__tag__:_pod_name_
_pod_uid_
__tag__:_pod_uid_
Dalam versi baru, semua bidang metadata disimpan di area tag log dalam format
__tag__:<kunci>, bukan disematkan dalam konten log.Dampak perubahan versi baru terhadap pengguna
Adaptasi sisi konsumen: Karena lokasi penyimpanan berubah dari "konten" ke "tag", logika konsumsi log pengguna perlu disesuaikan. Misalnya, Anda harus mengakses bidang melalui __tag__ saat kueri.
Kompatibilitas SQL: SQL kueri telah secara otomatis diadaptasi untuk kompatibilitas, sehingga pengguna tidak perlu memodifikasi pernyataan kueri mereka untuk memproses log versi baru dan lama secara bersamaan.






