Dalam lingkungan Kubernetes, log kontainer yang tersebar sulit dikelola, sehingga menyebabkan troubleshooting menjadi tidak efisien dan biaya O&M tinggi. Untuk mengatasi hal ini, Anda dapat menerapkan collector data LoongCollector dalam mode DaemonSet dan membuat konfigurasi pengumpulan di konsol Simple Log Service. Pendekatan ini memungkinkan pengumpulan log terpadu dan pemrosesan terstruktur, yang meningkatkan efisiensi pengambilan log, diagnosis masalah, dan analisis observabilitas.
Penerapan
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 standard output hanya mendukung driver log JSON.
Hanya driver penyimpanan overlay dan overlay2 yang didukung. Untuk tipe driver penyimpanan lainnya, Anda harus melakukan mount manual direktori log.
Containerd: Memerlukan izin akses ke containerd.sock.
Persyaratan resource: LoongCollector (Logtail) berjalan dengan prioritas tinggi sebagai `system-cluster-critical`. Jangan menerapkannya jika resource kluster tidak mencukupi, karena pod yang ada pada node tersebut mungkin akan dievakuasi.
CPU: Cadangkan minimal 0,1 core.
Memory: Cadangkan minimal 150 MB untuk komponen pengumpulan dan minimal 100 MB untuk komponen controller.
Penggunaan aktual bergantung pada laju pengumpulan, jumlah direktori dan file yang dipantau, serta tingkat kemacetan jaringan. 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, rujuk ke kebijakan sistem AliyunCSManagedLogRolePolicy. Anda dapat menyalin izin dari kebijakan tersebut dan memberikannya kepada Pengguna RAM atau role target untuk konfigurasi izin detail halus.
Alur kerja konfigurasi pengumpulan
Instal LoongCollector: Terapkan LoongCollector dalam mode DaemonSet. Ini memastikan bahwa satu kontainer pengumpulan berjalan di setiap node dalam kluster untuk mengumpulkan log dari semua kontainer pada node tersebut.
Untuk informasi lebih lanjut 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 dan sumber serta cakupan pengumpulan log.
Pemrosesan dan penstrukturan log: Konfigurasikan aturan pemrosesan berdasarkan format log.
Log multiline: Cocok untuk entri log tunggal yang membentang di 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, separator, 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 biaya transmisi dan penyimpanan data berlebihan.
Kategorisasi log: Bedakan secara fleksibel log dari layanan, kontainer, atau sumber path yang berbeda dengan mengonfigurasi topik dan tag log.
Konfigurasi kueri dan analisis: Indeks teks penuh diaktifkan secara default untuk mendukung pencarian kata kunci. Anda dapat mengaktifkan indeks bidang untuk kueri tepat dan analisis bidang terstruktur guna meningkatkan efisiensi pencarian.
Verifikasi dan troubleshooting: Setelah konfigurasi selesai, verifikasi bahwa log berhasil dikumpulkan. Jika Anda mengalami masalah seperti kegagalan pengumpulan data, kegagalan heartbeat, atau error parsing, lihat FAQ troubleshooting.
Langkah 1: Instal LoongCollector
LoongCollector adalah agen pengumpulan log generasi berikutnya dari Simple Log Service dan merupakan versi peningkatan dari Logtail. LoongCollector dan Logtail tidak dapat berjalan bersamaan. Untuk menginstal Logtail, lihat Instal, jalankan, tingkatkan, dan uninstal 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, lewati langkah ini dan lanjutkan ke Langkah 2: Buat Logstore.
Jika waktu host berubah saat LoongCollector (Logtail) sedang berjalan, hal ini dapat menyebabkan pengumpulan log duplikat 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.
Login ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Klik nama kluster target.
Di panel navigasi kiri, klik Component Management.
Buka tab Logs and Monitoring, temukan loongcollector, lalu klik Install.
CatatanSaat membuat kluster, Anda dapat memilih Use Simple Log Service pada halaman Component Configuration dan memilih untuk Create New Project atau Use Existing Project.
Setelah instalasi selesai, Simple Log Service secara otomatis membuat resource berikut di bawah akun saat ini. Anda dapat login ke Konsol Simple Log Service untuk melihatnya.
Jenis resource
Nama resource
Fungsi
Proyek
k8s-log-${cluster_id}Unit manajemen resource yang mengisolasi log layanan berbeda.
Untuk membuat proyek guna manajemen resource log yang lebih fleksibel, lihat Buat proyek.
Kelompok mesin
k8s-group-${cluster_id}Kumpulan node pengumpulan log.
Logstore
config-operation-logPentingJangan hapus Logstore ini.
Menyimpan log komponen loongcollector-operator. Metode penagihannya sama dengan Logstore biasa. Untuk informasi lebih lanjut, lihat Item yang dikenai biaya metode pengukuran pay-by-ingested-data. Jangan buat konfigurasi pengumpulan di Logstore ini.
Kluster yang dikelola sendiri
Hubungkan 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.shMasuk ke direktori
loongcollector-custom-k8s-packagedan modifikasi file konfigurasi./loongcollector/values.yaml.# ===================== Informasi Wajib ===================== # Nama proyek tempat log dari kluster ini akan dikumpulkan, contoh: k8s-log-custom-sd89ehdq projectName: "" # Wilayah proyek, contoh Shanghai: cn-shanghai region: "" # UID akun Alibaba Cloud pemilik proyek. Sertakan dalam tanda kutip, contoh: "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 image terkait berhasil ditarik.
# Periksa status pod kubectl get po -n kube-system | grep loongcollector-dsBersamaan dengan itu, Simple Log Service secara otomatis membuat resource berikut. Anda dapat login ke Konsol Simple Log Service untuk melihatnya.
Jenis resource
Nama resource
Fungsi
Proyek
Nilai
projectNameyang didefinisikan dalam file values.yamlUnit manajemen resource yang mengisolasi log layanan berbeda.
Untuk membuat proyek guna manajemen resource log yang lebih fleksibel, lihat Buat proyek.
Kelompok mesin
k8s-group-${cluster_id}Kumpulan node pengumpulan log.
Logstore
config-operation-logPentingJangan hapus Logstore ini.
Menyimpan log komponen loongcollector-operator. Metode penagihannya sama dengan Logstore biasa. Untuk informasi lebih lanjut, lihat Item yang dikenai biaya metode pengukuran pay-by-ingested-data. Jangan buat konfigurasi pengumpulan di Logstore ini.
Langkah 2: Buat Logstore
Logstore adalah unit penyimpanan di Simple Log Service yang digunakan untuk menyimpan log yang dikumpulkan.
Login ke Konsol Simple Log Service dan 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 resource, seperti penyimpanan, indeks, dan operasi baca/tulis. Mode penagihan ini cocok untuk skenario skala kecil atau skenario dengan penggunaan fitur yang tidak pasti.
Pay-by-ingested-Data: Anda hanya ditagih berdasarkan volume data mentah yang ditulis. Mode ini menyediakan penyimpanan gratis selama 30 hari dan fitur gratis seperti transformasi dan pengiriman data. Cocok untuk kasus bisnis dengan periode penyimpanan mendekati 30 hari atau pipeline pemrosesan data 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.
Pertahankan nilai default untuk pengaturan lainnya dan 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. Kemudian, Anda dapat menerapkan konfigurasi tersebut ke kelompok mesin.
Pada halaman
Logstores, klik
di sebelah kiri nama Logstore target untuk memperluasnya.Klik ikon
di sebelah Data Collection. Di kotak dialog Quick Data Import, pilih templat berdasarkan sumber log lalu klik Integrate Now:Untuk standard output kontainer, pilih K8S - Stdout And Stderr - New Version.
Templat untuk mengumpulkan standard output 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 standard output kontainer baru dan lama.
Untuk log teks kluster, pilih Kubernetes - File.
Configure the Machine Group lalu klik Next:
Scenario: Pilih Kubernetes Clusters.
Deployment Method: Pilih ACK Daemonset atau Self-managed Cluster Daemonset.
Dari Source Machine Group, tambahkan kelompok mesin yang dibuat sistem
k8s-group-${cluster_id}ke daftar Applied Machine Group di sebelah kanan.
Pada halaman Logtail Configuration, tentukan parameter berikut lalu klik Next.
1. Konfigurasi global dan input
Sebelum memulai, pastikan Anda telah memilih templat ingesti data dan menerapkannya ke kelompok mesin. Pada langkah ini, Anda akan menentukan nama konfigurasi pengumpulan, sumber log, dan cakupan pengumpulan.
Kumpulkan standard output 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 dimulai dan diakhiri dengan huruf kecil atau angka.
Konfigurasi Input
Nyalakan sakelar Standard Output atau Standard Error (keduanya diaktifkan secara default).
PentingJangan aktifkan standard output dan standard error secara bersamaan. Hal ini dapat menyebabkan kebingungan pada 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 dimulai dan diakhiri dengan huruf kecil atau angka.
Input Configurations:
File Path Type:
Path In Container: Mengumpulkan file log dari dalam kontainer.
Host Path: Mengumpulkan log layanan lokal pada host.
File Path: Jalur absolut file log yang akan dikumpulkan.
Linux: Jalur harus dimulai dengan garis miring (/). Contoh,
/data/mylogs/**/*.logmenunjukkan semua file dengan ekstensi .log di direktori/data/mylogsdan subdirektorinya.Windows: Jalur harus dimulai dengan huruf drive, contoh
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.Atur kedalaman ke 0 dan konfigurasikan jalur ke direktori tempat file berada.
2. Pemrosesan dan penstrukturan log
Konfigurasikan 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, Anda dapat menambahkan sampel log:
Pada halaman Logtail Configuration, di bagian Processor Configurations, klik Add Sample Log lalu masukkan konten log yang ingin Anda kumpulkan. Sistem mengidentifikasi format log berdasarkan sampel dan membantu Anda menghasilkan ekspresi reguler serta aturan parsing, yang menyederhanakan konfigurasi.
Skenario 1: Pemrosesan log multiline (seperti stack trace Java)
Log, seperti stack exception Java dan objek JSON, sering kali membentang di beberapa baris. Dalam mode pengumpulan default, log tersebut dipecah menjadi beberapa catatan tidak lengkap, sehingga 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 terputus, sehingga kehilangan konteks | Aktifkan mode multiline dan gunakan ekspresi reguler baris pertama untuk mengidentifikasi log lengkap, sehingga mempertahankan struktur semantik penuh. |
|
|
|
Prosedur: Di bagian Processor Configurations pada halaman Logtail Configuration, aktifkan Multi-line Mode:
Type: Pilih Custom atau Multi-line JSON.
Custom: Karena format log mentah tidak tetap, Anda harus mengonfigurasi Regex To Match First Line untuk mengidentifikasi baris pertama setiap entri log.
Regex To Match First Line: Hasilkan secara otomatis atau masukkan 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.*.Generasi otomatis: Klik Automatically Generate Regular Expression. 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 berformat JSON standar. Simple Log Service secara otomatis menangani jeda baris dalam satu log JSON.
Split Failure Handling:
Discard: Jika segmen teks gagal mencocokkan aturan awal baris, segmen tersebut akan dibuang.
Retain Single Line: Teks yang tidak cocok dipecah dan dipertahankan berdasarkan pola baris tunggal aslinya.
Skenario 2: Log terstruktur
Ketika log mentah berupa teks tidak terstruktur atau semi-terstruktur, seperti log akses NGINX atau log output aplikasi, kueri dan analisis langsung sering kali tidak efisien. Simple Log Service menyediakan berbagai plugin parsing data yang 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 parsing terstruktur |
| |
Prosedur: Di bagian Processor Configurations pada halaman Logtail Configuration
Tambahkan plugin parsing: Klik Add Processor untuk mengonfigurasi parsing ekspresi reguler, parsing separator, parsing 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, parsing log akan gagal.
Parameter konfigurasi umum: Parameter berikut muncul di berbagai plugin parsing 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 Parsing 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 sepenuhnya dipertahankan di bidang asli yang ditentukan.
Pertahankan Bidang Asli Jika Parsing Berhasil: Jika Anda memilih opsi ini, konten log asli akan dipertahankan bahkan jika log berhasil diurai.
3. Penyaringan log
Saat pengumpulan log, mengumpulkan volume besar log bernilai rendah atau tidak relevan, seperti log level DEBUG atau INFO, dapat membuang resource 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
Saring bidang berdasarkan konten log, seperti hanya mengumpulkan log dengan level WARNING atau ERROR.
Contoh:
Log mentah tanpa pemrosesan apa pun | Kumpulkan hanya log |
| |
Prosedur: Pada halaman Logtail Configuration, di area Processing Configuration
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 bagian pada halaman Logtail Configuration, 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 dimulai dengan private dan diakhiri dengan .log diabaikan./home/admin/private*/*_inner.log: Saat pengumpulan, file yang diakhiri dengan _inner.log di direktori yang dimulai 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*: Mengabaikan semua file di subdirektori/home/admin/yang namanya dimulai dengan dir./home/admin/*/dir: Saat pengumpulan, semua file di subdirektori bernama dir pada level 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 menetapkan kondisi pengumpulan berdasarkan metadata kontainer, seperti variabel lingkungan, label pod, namespace, dan nama kontainer, untuk mengontrol secara tepat log kontainer mana yang dikumpulkan.
Prosedur: Pada halaman Logtail Configuration, di bagian Input Configurations, aktifkan Container Filtering lalu klik Add.
Beberapa kondisi digabungkan menggunakan logika AND. Semua pencocokan ekspresi reguler berbasis mesin RE2 bahasa Go. Mesin ini memiliki lebih banyak batasan dibanding mesin lain, seperti PCRE. Oleh karena itu, Anda harus menulis ekspresi reguler yang mematuhi panduan dalam Lampiran: Batasan ekspresi reguler (penyaringan kontainer).
Daftar Hitam/Putih Variabel Lingkungan: Tentukan kondisi variabel lingkungan untuk kontainer dari mana 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 dari mana Anda ingin mengumpulkan log berdasarkan nama pod.
Pencocokan Regex Namespace K8s: Tentukan kontainer dari mana Anda ingin mengumpulkan log berdasarkan nama namespace.
Pencocokan Regex Nama Kontainer K8s: Tentukan kontainer dari mana 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 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 secara fleksibel log dari layanan atau sumber jalur yang berbeda.
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://<custom_topic_name>, contohcustomized://app-login. Ini berlaku untuk skenario topik statis dengan identitas bisnis tetap.Ekstraksi Jalur File: Ekstrak 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. Contoh:
/data/logs ├── userA │ └── serviceA │ └── service.log ├── userB │ └── serviceA │ └── service.log └── userC └── serviceA └── service.logKonfigurasikan Ekstraksi Jalur File dan gunakan 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 output 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
Contoh jalur yang cocok
Bidang yang dihasilkan
Grup penangkapan tunggal (hanya satu
(.*?))Hanya satu dimensi yang dibutuhkan untuk membedakan sumber, seperti username atau lingkungan
Menghasilkan bidang
__topic__\/logs\/(.*?)\/app\.log/logs/userA/app.log__topic__: userABeberapa grup penangkapan - tidak bernama (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
Pemberian tag log
Anda dapat mengaktifkan fitur pengayaan tag log untuk mengekstrak informasi kunci dari variabel lingkungan kontainer atau label pod Kubernetes lalu melampirkan informasi tersebut sebagai tag untuk pengelompokan log detail halus.
Prosedur: Di bagian Input Configurations pada halaman Logtail Configuration, 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.
5. Output
Secara default, semua log dikumpulkan dan dikirim ke Logstore saat ini dengan kompresi lz4. Untuk mendistribusikan log dari sumber yang sama ke Logstore berbeda, ikuti langkah-langkah berikut:
Distribusi multi-tujuan dinamis
Pengiriman multi-tujuan hanya didukung oleh LoongCollector 3.0.0 dan versi lebih baru. Logtail tidak mendukung fitur ini.
Anda dapat mengonfigurasi maksimal lima tujuan output.
Setelah Anda mengonfigurasi beberapa target output, konfigurasi pengumpulan tidak lagi ditampilkan di daftar konfigurasi pengumpulan Logstore saat ini. Untuk melihat, memodifikasi, atau menghapus konfigurasi distribusi multi-target, lihat Bagaimana cara mengelola konfigurasi distribusi multi-tujuan?.
Langkah konfigurasi: Pada halaman Logtail Configuration, di area Output Configuration.
Klik
untuk memperluas konfigurasi output.Klik Add Output Target lalu lengkapi konfigurasi berikut:
Logstore: Pilih Logstore target.
Compression Method: Mendukung lz4 dan zstd.
Routing Configuration: Merutekan log berdasarkan bidang Tag-nya. Log yang cocok dengan konfigurasi routing diunggah ke Logstore target. Jika konfigurasi routing kosong, semua log yang dikumpulkan diunggah ke Logstore target.
Tag Name: Nama bidang tag untuk routing. Masukkan nama bidang secara langsung, seperti
__path__, tanpa awalan__tag__:. Bidang tag diklasifikasikan ke dalam dua jenis berikut:Untuk informasi lebih lanjut tentang tag, lihat Kelola tag pengumpulan LoongCollector.
Terkait agen: Terkait dengan agen pengumpulan itu sendiri dan tidak bergantung pada plugin. Contohnya termasuk
__hostname__dan__user_defined_id__.Terkait plugin input: Bergantung pada plugin input, yang menyediakan dan memperkaya log dengan informasi terkait. Contohnya termasuk
__path__untuk pengumpulan file, dan_pod_name_serta_container_name_untuk pengumpulan Kubernetes.
Tag Value: Log dengan nilai bidang Tag yang cocok dengan nilai ini dikirim ke Logstore target.
Discard Tag Field: Jika Anda mengaktifkan opsi ini, log yang diunggah tidak akan menyertakan bidang tag ini.
Langkah 4: Konfigurasi kueri dan analisis
Setelah Anda mengonfigurasi pemrosesan log dan plugin, klik Next untuk menuju halaman Query and Analysis Configuration:
Secara default, sistem mengaktifkan indeks teks penuh, yang memungkinkan Anda mencari kata kunci dalam konten mentah log.
Untuk melakukan kueri tepat berdasarkan bidang, Anda dapat mengklik Automatic Index Generation setelah Pratinjau Data dimuat. Simple Log Service menghasilkan indeks bidang berdasarkan entri pertama dalam data pratinjau.
Setelah konfigurasi selesai, klik Next untuk menyelesaikan seluruh alur pengumpulan.
Langkah 5: Validasi dan troubleshooting
Setelah Anda membuat konfigurasi pengumpulan dan menerapkannya ke kelompok mesin, sistem secara otomatis menerapkan konfigurasi tersebut 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 & Analyze. Rentang waktu default adalah 15 menit terakhir. Periksa apakah log baru mengalir masuk. Setiap log teks kontainer yang dikumpulkan berisi informasi bidang default berikut:
Nama bidang
Deskripsi
__tag__:__hostname__
Nama host kontainer.
__tag__:__path__
Jalur file log dalam kontainer.
__tag__:_container_ip_
Alamat IP kontainer.
__tag__:_image_name_
Nama image yang digunakan oleh kontainer.
__tag__:_pod_name_
Nama pod.
__tag__:_namespace_
Namespace tempat pod berada.
__tag__:_pod_uid_
Pengenal unik (UID) pod.
FAQ troubleshooting
Status heartbeat kelompok mesin adalah GAGAL
Periksa pengenal pengguna: Jika jenis server Anda bukan instans ECS, atau jika instans ECS dan proyek tersebut dimiliki oleh akun Alibaba Cloud yang berbeda, periksa apakah pengenal pengguna yang benar ada di direktori yang ditentukan.
Linux: Jalankan perintah
cd /etc/ilogtail/users/ && touch <uid>untuk membuat file pengenal pengguna.Windows: Buka direktori
C:\LogtailData\users\lalu buat file kosong bernama<uid>.
Jika file dengan nama ID akun Alibaba Cloud proyek saat ini ada di jalur yang ditentukan, pengenal pengguna telah dikonfigurasi dengan benar.
Periksa pengenal kelompok mesin: Jika Anda menggunakan kelompok mesin berbasis pengenal kustom, periksa apakah file
user_defined_idada di direktori yang ditentukan. Jika file tersebut ada, periksa apakah isi file tersebut cocok dengan pengenal 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 pengenal kustom ke dalam file tersebut. Jika direktori tidak ada, Anda harus membuatnya secara manual.
Jika pengenal pengguna dan pengenal kelompok mesin telah dikonfigurasi dengan benar, lihat Troubleshoot masalah kelompok mesin LoongCollector (Logtail) untuk informasi lebih lanjut tentang troubleshooting.
Error pengumpulan log atau error format
Masalah ini menunjukkan bahwa koneksi jaringan dan konfigurasi dasar normal. Masalah ini biasanya disebabkan oleh ketidakcocokan antara konten log dan aturan parsing. Anda harus melihat pesan error spesifik untuk menemukan penyebabnya:
Pada halaman Logtail Configuration, klik nama konfigurasi LoongCollector (Logtail) yang mengalami error pengumpulan. Pada tab Log Collection Error, klik Select Time Range untuk mengatur rentang waktu kueri.
Di bagian , lihat metrik alarm log error lalu temukan solusi yang sesuai di Error 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.
Troubleshooting: 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 mengumpulkan data dari file tersebut.
FAQ
Bagaimana cara mengelola konfigurasi distribusi multi-tujuan?
Karena konfigurasi distribusi multi-tujuan terkait dengan beberapa Logstore, konfigurasi ini harus dikelola di halaman manajemen tingkat proyek:
Login ke Konsol Simple Log Service lalu klik nama proyek target.
Di panel navigasi kiri proyek target, klik
.CatatanHalaman ini menyediakan manajemen terpusat untuk semua konfigurasi pengumpulan di bawah proyek, termasuk yang tersisa setelah Logstore dihapus secara tidak sengaja.
Bagaimana cara mengirim log kluster ACK ke proyek di akun Alibaba Cloud lain?
Anda dapat menginstal komponen LoongCollector (Logtail) Simple Log Service secara manual di kluster ACK lalu mengonfigurasinya dengan ID akun Alibaba Cloud atau kredensial akses (AccessKey) akun tujuan. Hal ini memungkinkan Anda mengirim log kontainer ke proyek Simple Log Service yang dimiliki oleh akun Alibaba Cloud lain.
Skenario: Karena alasan seperti struktur organisasi, isolasi izin, atau pemantauan terpadu, Anda mungkin perlu mengumpulkan data log dari kluster ACK lalu mengirimkannya ke proyek Simple Log Service yang dimiliki oleh akun Alibaba Cloud berbeda. Anda dapat melakukannya dengan menginstal LoongCollector (Logtail) secara manual untuk konfigurasi lintas akun.
Prosedur: Bagian ini menggunakan instalasi manual LoongCollector sebagai contoh. Untuk informasi lebih lanjut tentang cara menginstal Logtail, lihat Instalasi dan konfigurasi Logtail.
Hubungkan 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.shMasuk ke direktori
loongcollector-custom-k8s-packagelalu modifikasi file konfigurasi./loongcollector/values.yaml.# ===================== Informasi Wajib ===================== # Nama proyek tempat log dari kluster ini akan dikumpulkan, contoh: k8s-log-custom-sd89ehdq projectName: "" # Wilayah proyek, contoh Shanghai: cn-shanghai region: "" # UID akun Alibaba Cloud pemilik proyek. Sertakan dalam tanda kutip, contoh: "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 image terkait berhasil ditarik.
# Periksa status pod kubectl get po -n kube-system | grep loongcollector-dsBersamaan dengan itu, Simple Log Service secara otomatis membuat resource berikut. Anda dapat login ke Konsol Simple Log Service untuk melihatnya.
Jenis resource
Nama resource
Fungsi
Proyek
Nilai
projectNameyang didefinisikan dalam file values.yamlUnit manajemen resource yang mengisolasi log layanan berbeda.
Untuk membuat proyek guna manajemen resource log yang lebih fleksibel, lihat Buat proyek.
Kelompok mesin
k8s-group-${cluster_id}Kumpulan node pengumpulan log.
Logstore
config-operation-logPentingJangan hapus Logstore ini.
Menyimpan log komponen loongcollector-operator. Metode penagihannya sama dengan Logstore biasa. Untuk informasi lebih lanjut, lihat Item yang dikenai biaya metode pengukuran pay-by-ingested-data. Jangan buat konfigurasi pengumpulan di Logstore ini.
Bagaimana cara mengumpulkan log dari file yang sama atau standard output kontainer 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.
Standard output (stdout) kontainer:
Jika Anda menggunakan templat standard output versi baru, standard output hanya dapat dikumpulkan oleh satu konfigurasi pengumpulan standard output secara default.
Jika Anda menggunakan templat standard output versi lama, tidak diperlukan konfigurasi tambahan. Mendukung pengumpulan ganda secara default.
Login ke Konsol Simple Log Service lalu buka proyek target.
Di panel navigasi kiri, pilih
Logstores lalu temukan Logstore target.Klik ikon
di sebelah kiri nama Logstore untuk memperluasnya.Klik Logtail Configuration. Di daftar konfigurasi, temukan konfigurasi Logtail target lalu klik Manage Logtail Configuration di kolom Aksi.
Pada 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 standard output kontainer, aktifkan Allow Standard Output To Be Collected Multiple Times.
Mengapa saya mendapatkan error dependensi saat mencoba menguninstal 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 error: `The 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 menguninstal loongcollector (logtail-ds) secara langsung sebelum menghapus dependensi ini.
Solusi: Ikuti langkah-langkah berikut untuk menghapus dependensi lalu menguninstal komponen:
Login 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, lalu klik .Di kotak dialog yang muncul, klik Confirm.
Setelah konfigurasi berlaku, coba uninstal komponen loongcollector (logtail-ds) lagi.
Mengapa entri log terakhir dilaporkan setelah penundaan lama? Mengapa kadang terpotong?
Penyebab: Log biasanya terpotong jika file log tidak memiliki line feed di akhir, atau jika log multiline, seperti stack exception, belum sepenuhnya ditulis. Karena collector 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 line feed (carriage return), atau jika paragraf log multiline belum selesai, collector 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. 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:
Login ke Konsol Simple Log Service lalu buka proyek target.
Di panel navigasi kiri, pilih
Logstores lalu temukan Logstore target.Klik ikon
di sebelah kiri nama Logstore untuk memperluasnya.Klik Logtail Configuration. Di daftar konfigurasi, temukan konfigurasi Logtail target lalu klik Manage Logtail Configuration di kolom Aksi.
Pada 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 titik akhir internal ke titik akhir publik selama operasi? Dapatkah beralih kembali secara otomatis?
Jika LoongCollector (Logtail) mendeteksi anomali dalam komunikasi titik akhir internal, seperti kegagalan jaringan atau timeout koneksi, sistem secara otomatis beralih ke titik akhir 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 Processor Configurations pada halaman Logtail Configuration, tambahkan prosesor untuk menstrukturkan log mentah. Untuk menambahkan plugin pemrosesan ke konfigurasi pengumpulan yang sudah ada, ikuti langkah-langkah berikut:
Di panel navigasi kiri, pilih
Logstores lalu temukan logstore target.Klik ikon
di sebelah kiri nama logstore untuk memperluasnya.Klik Logtail Configuration. Di daftar konfigurasi, temukan konfigurasi Logtail target lalu klik Manage Logtail Configuration di kolom Aksi.
Pada halaman konfigurasi Logtail, klik Edit.
Bagian ini hanya memperkenalkan plugin pemrosesan yang umum digunakan yang mencakup kasus penggunaan pemrosesan log umum. Untuk fitur lainnya, lihat Prosesor lanjutan.
Aturan menggabungkan plugin (untuk LoongCollector / Logtail 2.0 dan versi lebih baru):
Prosesor native dan lanjutan dapat digunakan secara independen atau digabungkan sesuai kebutuhan.
Utamakan prosesor native karena menawarkan kinerja lebih baik dan stabilitas lebih tinggi.
Saat fitur native tidak dapat memenuhi kebutuhan bisnis Anda, tambahkan prosesor lanjutan setelah prosesor native yang dikonfigurasi untuk pemrosesan tambahan.
Batasan urutan:
Semua plugin dieksekusi secara berurutan sesuai urutan konfigurasinya, yang membentuk rantai pemrosesan. Catatan: Semua prosesor native harus mendahului prosesor lanjutan apa pun. Setelah Anda menambahkan prosesor lanjutan, Anda tidak dapat menambahkan prosesor native lagi.
Parsing ekspresi reguler
Anda dapat menggunakan 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 parsing regex |
| |
Prosedur: Di bagian Processor Configurations pada halaman Logtail Configuration, klik Add Processor, lalu pilih :
Regular Expression: Mencocokkan log dan mendukung generasi otomatis atau input manual:
Generasi otomatis:
Klik Auto-generate Regular Expression.
Di kotak teks Log Sample, pilih konten log yang ingin Anda ekstrak.
Klik Generate Regular Expression.

Input manual: Anda dapat Manually Enter A Regular Expression berdasarkan format log.
Setelah menyelesaikan konfigurasi, klik Validate untuk menguji apakah ekspresi reguler dapat mengurai konten log dengan benar.
Extracted Field: Untuk konten log yang diambil (Value), atur nama bidang yang sesuai (Key).
Untuk informasi lebih lanjut tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log terstruktur.
Parsing berbasis pembatas
Anda dapat menggunakan pembatas untuk menstrukturkan konten log dan mengurai log menjadi beberapa pasangan kunci-nilai. Pembatas karakter tunggal maupun multi-karakter didukung.
Contoh:
Log mentah tanpa pemrosesan apa pun | Pisahkan bidang berdasarkan karakter yang ditentukan |
| |
Prosedur: Di bagian Processor Configurations pada halaman Logtail Configuration, klik Add Processor lalu pilih :
Delimiter: 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 mengapit bidang tersebut guna mencegah pemisahan yang salah.
Extracted Field: Atur nama bidang (Key) untuk setiap kolom sesuai urutan pemisahannya. Aturan berikut berlaku:
Nama bidang hanya boleh berisi huruf, angka, dan garis bawah (_).
Nama bidang harus dimulai 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: Log terstruktur.
Parsing JSON standar
Anda dapat menstrukturkan log objek JSON dan mengurai log menjadi pasangan kunci-nilai.
Contoh:
Log mentah tanpa pemrosesan apa pun | Pasangan kunci-nilai JSON standar diekstrak secara otomatis |
| |
Prosedur: Di bagian Processor Configurations pada halaman Logtail Configuration, klik Add Processor, lalu pilih :
Raw Field: Nilai default adalah content. Bidang ini digunakan untuk menyimpan konten log mentah untuk parsing.
Untuk informasi lebih lanjut tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log terstruktur.
Parsing JSON bersarang
Anda dapat 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 bagian Processor Configurations pada halaman Logtail Configuration, klik Add Processor lalu pilih :
Original 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.
Character To Concatenate Expanded Keys: Pembatas 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 nanti untuk menyelesaikan pemetaan.
Untuk informasi lebih lanjut tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log terstruktur.
Parsing array JSON
Anda dapat menggunakan json_extract fungsi untuk mengambil objek JSON dari array JSON.
Contoh:
Log mentah tanpa pemrosesan apa pun | Struktur array JSON yang diekstrak |
| |
Langkah konfigurasi: Pada halaman Logtail Configuration, di bagian Processor Configurations, ubah Processing Method ke SPL, konfigurasikan Pernyataan SPL, lalu 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]')Parsing log Apache
Anda dapat menstrukturkan 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 bagian Processor Configurations pada halaman Logtail Configuration, klik Add Processor lalu pilih :
Log Format: combined
APACHE LogFormat Configuration: 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: Log terstruktur.
Penyamaran data
Anda dapat menyamarkan data sensitif dalam log.
Contoh:
Log mentah tanpa pemrosesan apa pun | Hasil penyamaran |
| |
Prosedur: Di bagian Processor Configurations pada halaman Logtail Configuration, klik Add Processor lalu pilih :
Original Field: Bidang yang digunakan untuk menyimpan konten log sebelum parsing.
Data Masking Method:
const: Mengganti konten sensitif dengan string yang ditentukan.
md5: Mengganti konten sensitif dengan hash MD5-nya.
Replacement String: Jika Anda mengatur Data Masking Method ke const, Anda harus memasukkan string untuk mengganti konten sensitif.
Content Expression That Precedes Replaced Content: Digunakan untuk menemukan konten sensitif, dikonfigurasi menggunakan sintaks RE2.
Expression For Content To Be Replaced: Ekspresi untuk konten sensitif, dikonfigurasi menggunakan sintaks RE2.
Parsing waktu
Anda dapat mengurai bidang waktu dalam log lalu mengatur hasil parsing sebagai bidang __time__ log.
Contoh:
Log mentah tanpa pemrosesan apa pun | Parsing waktu |
|
|
Prosedur: Di bagian Processor Configurations pada halaman Logtail Configuration, klik Add Processor lalu pilih :
Original Field: Bidang yang menyimpan konten log asli sebelum parsing.
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 LoongCollector (Logtail) berjalan.
Lampiran: Batasan ekspresi reguler (penyaringan kontainer)
Ekspresi reguler untuk penyaringan kontainer berbasis mesin RE2 Go. Mesin RE2 memiliki beberapa batasan sintaks dibanding 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 tetapi kompleks berikut tidak didukung oleh RE2. Hindari penggunaannya:
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 standard output kontainer baru dan lama
Untuk meningkatkan efisiensi penyimpanan log dan konsistensi pengumpulan, format metadata log untuk standard output kontainer telah ditingkatkan. Format baru mengkonsolidasikan metadata ke bidang __tag__, yang mencapai optimasi penyimpanan dan standardisasi format.
Keunggulan inti versi standard output baru
Peningkatan kinerja signifikan
Direfaktor dalam C++, kinerja meningkat 180% hingga 300% dibanding implementasi Go lama.
Mendukung plugin native untuk pemrosesan data dan pemrosesan paralel multi-threading, yang sepenuhnya memanfaatkan resource sistem.
Mendukung kombinasi fleksibel plugin native dan Go untuk memenuhi kebutuhan skenario kompleks.
Keandalan lebih tinggi
Mendukung antrian rotasi log standard output. Mekanisme pengumpulan log disatukan dengan mekanisme pengumpulan file, yang memberikan keandalan tinggi dalam skenario dengan rotasi log standard output cepat.
Konsumsi resource lebih rendah
Penggunaan CPU berkurang 20% hingga 25%.
Penggunaan memory berkurang 20% hingga 25%.
Konsistensi O&M yang ditingkatkan
Konfigurasi parameter terpadu: Parameter konfigurasi plugin pengumpulan standard output 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 memelihara 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__:<key>, 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 diadaptasi secara otomatis untuk kompatibilitas, sehingga pengguna tidak perlu memodifikasi pernyataan kueri mereka untuk memproses log versi baru dan lama secara bersamaan.






