全部产品
Search
文档中心

Simple Log Service:Kumpulkan log kontainer (keluaran standar dan file) dari kluster menggunakan konsol

更新时间:Nov 19, 2025

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

  1. 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).
  2. Buat Logstore: Logstore digunakan untuk menyimpan log yang dikumpulkan.

  3. Buat dan konfigurasikan aturan pengumpulan log

    1. Konfigurasi global dan input: Tentukan nama konfigurasi pengumpulan serta sumber dan cakupan pengumpulan log.

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

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

    4. Kategorisasi log: Bedakan log dari layanan, kontainer, atau sumber path yang berbeda secara fleksibel dengan mengonfigurasi topik dan tag log.

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

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

Catatan

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.

  1. Masuk ke konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Klik nama kluster target.

  3. Di panel navigasi kiri, klik Add-ons.

  4. Buka tab Logs and Monitoring, temukan loongcollector, lalu klik Install.

    Catatan

    Saat 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-log

    Penting

    Jangan 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

  1. 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.sh

    Wilayah 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.sh
  2. Buka direktori loongcollector-custom-k8s-package dan 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: ""
  3. Di direktori loongcollector-custom-k8s-package, jalankan perintah berikut untuk menginstal LoongCollector dan komponen dependennya:

    bash k8s-custom-install.sh install
  4. Setelah 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-ds

    Simple 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 projectName yang didefinisikan dalam file values.yaml

    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-log

    Penting

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

  1. Masuk ke konsol Simple Log Service lalu klik nama proyek target.

  2. Di panel navigasi kiri, pilih imageLog Storage, 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.

  1. Di halaman image Logstore, klik image di sebelah kiri nama Logstore target untuk memperluasnya.

  2. Klik ikon image 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.

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

  4. 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).

    Penting

    Jangan 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/**/*.log menunjukkan semua file dengan ekstensi .log di direktori /data/mylogs dan 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.

image

image

image

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

192.168.*.* - - [15/Apr/2025:16:40:00 +0800] "GET /nginx-logo.png HTTP/1.1" 0.000 514 200 368 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.*.* Safari/537.36"
body_bytes_sent: 368
http_referer: -
http_user_agent : Mozi11a/5.0 (Nindows NT 10.0; Win64; x64) AppleMebKit/537.36 (KHTML, like Gecko) Chrome/131.0.x.x Safari/537.36
remote_addr:192.168.*.*
remote_user: -
request_length: 514
request_method: GET
request_time: 0.000
request_uri: /nginx-logo.png
status: 200
time_local: 15/Apr/2025:16:40:00

Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations

  1. 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 Native Processing Plugin > NGINX Pattern Parsing.

  2. NGINX Log Configuration: Salin sepenuhnya definisi log_format dari 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"';
    Penting

    Definisi format harus persis sama dengan format yang menghasilkan log di server. Jika tidak, penguraian log akan gagal.

  3. 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 WARNING atau ERROR

{"level":"WARNING","timestamp":"2025-09-23T19:11:40+0800","cluster":"yilu-cluster-0728","message":"Disk space is running low","freeSpace":"15%"}
{"level":"ERROR","timestamp":"2025-09-23T19:11:42+0800","cluster":"yilu-cluster-0728","message":"Failed to connect to database","errorCode":5003}
{"level":"INFO","timestamp":"2025-09-23T19:11:47+0800","cluster":"yilu-cluster-0728","message":"User logged in successfully","userId":"user-123"}
{"level":"WARNING","timestamp":"2025-09-23T19:11:40+0800","cluster":"yilu-cluster-0728","message":"Disk space is running low","freeSpace":"15%"}
{"level":"ERROR","timestamp":"2025-09-23T19:11:42+0800","cluster":"yilu-cluster-0728","message":"Failed to connect to database","errorCode":5003}

Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations

Klik Add Processor lalu pilih Native Processor > Data Filtering:

  • 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 bernama app_inner.log diabaikan.

  • 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/dir diabaikan, tetapi file di direktori /home/admin/a/b/dir dikumpulkan.

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 Global Configurations > Other Global Configurations > Log Topic Type. 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.log

    Dalam 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__: userA

    Beberapa 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__svcA

    Beberapa 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

  1. Konfirmasi bahwa file log memiliki konten baru: LoongCollector hanya mengumpulkan log inkremental. Anda dapat menjalankan perintah tail -f /path/to/your/log/file dan memicu operasi layanan untuk memastikan log baru sedang ditulis.

  2. 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'

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

  2. Periksa pengidentifikasi kelompok mesin: Jika Anda menggunakan kelompok mesin dengan ID kustom, periksa apakah file user_defined_id ada 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_id
    • Windows: Di direktori C:\LogtailData, buat file bernama user_defined_id lalu tulis ID pengguna kustom ke dalam file tersebut. Jika direktori tidak ada, Anda harus membuatnya secara manual.

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

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

  2. Di bagian Collection Error Monitoring > All Error Messages, lihat metrik alarm log kesalahan lalu temukan solusi yang sesuai di Kesalahan Pengumpulan Data Umum.

Langkah selanjutnya

  1. Kueri dan analisis log:

  2. Visualisasi data: Gunakan dasbor visualisasi untuk memantau tren metrik utama.

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

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

2. Lihat log runtime LoongCollector (Logtail)

Lihat log runtime LoongCollector (Logtail) untuk mendapatkan informasi kesalahan terperinci.

  1. Masuk ke kontainer Logtail:

    1. Kueri pod Logtail.

      kubectl get po -n kube-system | grep logtail

      Sistem mengembalikan hasil yang mirip dengan berikut.

      logtail-ds-****d                                             1/1       Running    0          8d
      logtail-ds-****8                                             1/1       Running    0          8d
    2. Masuk ke pod.

      kubectl exec -it -n kube-system logtail-ds-****d -- bash

      Dalam contoh ini, logtail-ds-****d adalah ID pod. Gantilah dengan nilai sebenarnya.

  1. Lihat log runtime Logtail:

    Log Logtail disimpan di direktori /usr/local/ilogtail/ di dalam kontainer Logtail. Nama file-nya adalah ilogtail.LOG dan logtail_plugin.LOG. Masuk ke kontainer Logtail lalu jalankan perintah berikut untuk melihat file log:

    Buka direktori /usr/local/ilogtail/.
    cd /usr/local/ilogtail
    
    Lihat file ilogtail.LOG dan logtail_plugin.LOG.
    cat ilogtail.LOG
    cat logtail_plugin.LOG

    Tujuan: Periksa jenis alarm di log kesalahan lalu temukan solusi yang sesuai di Kesalahan umum dalam pengumpulan data Simple Log Service.

3. Periksa heartbeat kelompok mesin

Periksa status heartbeat kelompok mesin: Buka halaman image Resources > Machine Groups lalu klik nama kelompok mesin target. Di bagian Machine Group Configurations > Machine Group Status, lihat status Heartbeat dan catat jumlah node dengan status heartbeat OK.

  1. Periksa jumlah node pekerja di kluster kontainer.

    1. Dapatkan KubeConfig kluster dan sambungkan ke kluster menggunakan kubectl.

    2. Lihat jumlah node pekerja di kluster.

      kubectl get node | grep -v master

      Sistem mengembalikan hasil yang mirip dengan berikut.

      NAME                                 STATUS    ROLES     AGE       VERSION
      cn-hangzhou.i-bp17enxc2us3624wexh2   Ready     <none>    238d      v1.10.4
      cn-hangzhou.i-bp1ad2b02jtqd1shi2ut   Ready     <none>    220d      v1.10.4
  2. Periksa apakah jumlah node dengan status heartbeat OK sesuai dengan jumlah node pekerja di kluster kontainer. Pilih metode pemecahan masalah berdasarkan hasil perbandingan.

    • Status heartbeat semua node di kelompok mesin adalah Failed:

      • Jika ini adalah kluster yang dikelola sendiri, periksa apakah parameter berikut dikonfigurasi dengan benar: {regionId}, {aliuid}, {access-key-id}, dan {access-key-secret}.

        Jika salah, jalankan perintah helm del --purge alibaba-log-controller untuk menghapus paket instalasi lalu instal ulang.

    • Jumlah node dengan status heartbeat OK kurang dari jumlah node pekerja di kluster.

      • Tentukan apakah DaemonSet telah diterapkan secara manual menggunakan file YAML.

        1. Jalankan perintah berikut. Jika ada hasil yang dikembalikan, DaemonSet sebelumnya telah diterapkan secara manual menggunakan file YAML.

          kubectl get po -n kube-system -l k8s-app=logtail
        2. Unduh templat DaemonSet versi terbaru.

        3. Konfigurasikan parameter seperti ${your_region_name}, ${your_aliyun_user_id}, dan ${your_machine_group_name} berdasarkan nilai sebenarnya.

        4. Perbarui sumber daya.

          kubectl apply -f ./logtail-daemonset.yaml

4. Periksa kondisi filter konfigurasi pengumpulan

Di konsol Simple Log Service, periksa konfigurasi pengumpulan Logtail. Perhatikan dengan cermat apakah pengaturan IncludeLabel, ExcludeLabel, IncludeEnv, ExcludeEnv, dan lainnya dalam konfigurasi Logtail memenuhi kebutuhan pengumpulan Anda.

  • Label dalam konteks ini mengacu pada label kontainer, yaitu label dalam Docker inspect, bukan label dalam Kubernetes.

  • Sementara hapus konfigurasi IncludeLabel, ExcludeLabel, IncludeEnv, dan ExcludeEnv untuk memeriksa apakah log dapat dikumpulkan secara normal. Jika ya, konfigurasi parameter ini salah.

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.

  1. 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.sh

    Wilayah 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.sh
  2. Buka direktori loongcollector-custom-k8s-package lalu 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: ""
  3. Di direktori loongcollector-custom-k8s-package, jalankan perintah berikut untuk menginstal LoongCollector dan komponen dependennya:

    bash k8s-custom-install.sh install
  4. Setelah 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-ds

    Simple 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 projectName yang didefinisikan dalam file values.yaml

    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-log

    Penting

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

  1. Masuk ke konsol Simple Log Service lalu buka proyek target.

  2. Di panel navigasi kiri, pilih imageLogstore lalu temukan Logstore target.

  3. Klik ikon image di depan namanya untuk memperluas Logstore.

  4. Klik Logtail Configurations. Di daftar konfigurasi, temukan konfigurasi Logtail target lalu klik Manage Logtail Configuration di kolom Tindakan.

  5. 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:

  1. Masuk ke konsol Container Service for Kubernetes.

  2. Di daftar kluster, klik nama kluster target.

  3. Di panel navigasi kiri, klik Component Management.

  4. Di daftar komponen, cari dan temukan komponen terway-eniip. Klik image > Disable Log.

  5. Di kotak dialog yang muncul, klik Confirm.

  6. 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:

  1. Masuk ke konsol Simple Log Service lalu buka proyek target.

  2. Di panel navigasi kiri, pilih imageLogstore lalu temukan Logstore target.

  3. Klik ikon image di depan namanya untuk memperluas Logstore.

  4. Klik Logtail Configurations. Di daftar konfigurasi, temukan konfigurasi Logtail target lalu klik Manage Logtail Configuration di kolom Tindakan.

  5. Di halaman konfigurasi Logtail, klik Edit:

    • Pilih Input Configurations > Other Input Configurations > Advanced Parameters. 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.

  6. 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:

  1. Di panel navigasi kiri, pilih imageLogstore lalu temukan Logstore target.

  2. Klik ikon image di depan namanya untuk memperluas Logstore.

  3. Klik Logtail Configurations. Di daftar konfigurasi, temukan konfigurasi Logtail target lalu klik Manage Logtail Configuration di kolom Tindakan.

  4. 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.
Penting

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

127.0.0.1 - - [16/Aug/2024:14:37:52 +0800] "GET /wp-admin/admin-ajax.php?action=rest-nonce HTTP/1.1" 200 41 "http://www.example.com/wp-admin/post-new.php?post_type=page" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
body_bytes_sent: 41
http_referer: http://www.example.com/wp-admin/post-new.php?post_type=page
http_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; ×64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0
remote_addr: 127.0.0.1
remote_user: -
request_method: GET
request_protocol: HTTP/1.1
request_uri: /wp-admin/admin-ajax.php?action=rest-nonce
status: 200
time_local: 16/Aug/2024:14:37:52 +0800

Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih Native Processor > Data Parsing (Regex Mode):

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

        image

    • 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,

05/May/2025:13:30:28,10.10.*.*,"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1",200,18204,aliyun-sdk-java
ip:10.10.*.*
request:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1
size:18204
status:200
time:05/May/2025:13:30:28
user_agent:aliyun-sdk-java

Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih Native Processor > Data Parsing (Delimiter Mode):

  • 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

{"url": "POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1", "ip": "10.200.98.220", "user-agent": "aliyun-sdk-java", "request": {"status": "200", "latency": "18204"}, "time": "05/Jan/2025:13:30:28"}
ip: 10.200.98.220
request: {"status": "200", "latency" : "18204" }
time: 05/Jan/2025:13:30:28
url: POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek******&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1
user-agent:aliyun-sdk-java

Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih Native Processor > Data Parsing (JSON Mode):

  • 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

{"s_key":{"k1":{"k2":{"k3":{"k4":{"k51":"51","k52":"52"},"k41":"41"}}}}}
0_s_key_k1_k2_k3_k41:41
0_s_key_k1_k2_k3_k4_k51:51
0_s_key_k1_k2_k3_k4_k52:52
1_s_key:{"k1":{"k2":{"k3":{"k4":{"k51":"51","k52":"52"},"k41":"41"}}}}

Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih Extended Processor > Expand JSON Field:

  • 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

[{"key1":"value1"},{"key2":"value2"}]
json1:{"key1":"value1"}
json2:{"key2":"value2"}

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 combined penguraian

1 192.168.1.10 - - [08/May/2024:15:30:28 +0800] "GET /index.html HTTP/1.1" 200 1234 "https://www.example.com/referrer" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.X.X Safari/537.36"
http_referer:https://www.example.com/referrer
http_user_agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.X.X Safari/537.36
remote_addr:192.168.1.10
remote_ident:-
remote_user:-
request_method:GET
request_protocol:HTTP/1.1
request_uri:/index.html
response_size_bytes:1234
status:200
time_local:[08/May/2024:15:30:28 +0800]

Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih Native Processor > Data Parsing (Apache Mode):

  • Log Format: combined

  • Apache Configuration Field: Sistem secara otomatis mengisi konfigurasi berdasarkan Log Format.

    Penting

    Pastikan 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

[{'account':'1812213231432969','password':'04a23f38'}, {'account':'1812213685634','password':'123a'}]
[{'account':'1812213231432969','password':'********'}, {'account':'1812213685634','password':'********'}]

Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih Native Processor > Data Masking:

  • 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

{"level":"INFO","timestamp":"2025-09-23T19:11:47+0800","cluster":"yilu-cluster-0728","message":"User logged in successfully","userId":"user-123"}

image

Prosedur: Di halaman Logtail Configurations, di bagian Processor Configurations, klik Add Processor lalu pilih Native Processor > Time Parsing:

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

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

  2. 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_.

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

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

Informasi lebih lanjut

Parameter konfigurasi global

Parameter

Deskripsi

Nama Konfigurasi

Nama konfigurasi Logtail. Harus unik dalam proyeknya. Nama tidak dapat diubah setelah konfigurasi Logtail dibuat.

Jenis Topik

Pilih metode untuk menghasilkan topik log. Opsi termasuk Topik Kelompok Mesin, Ekstraksi Jalur File, dan Kustom.

Parameter Lanjutan

Untuk parameter fitur lanjutan opsional lainnya terkait konfigurasi global, lihat Buat Konfigurasi Pipeline Logtail.

Parameter konfigurasi input

Parameter

Deskripsi

Mode Penerapan Logtail

DaemonSet: Menerapkan satu LoongCollector di setiap node kluster untuk mengumpulkan log dari semua kontainer di node tersebut.

Sidecar: Setiap pod menjalankan kontainer LoongCollector untuk mengumpulkan log dari semua kontainer dalam pod tersebut. Pengumpulan log untuk pod berbeda diisolasi.

Jenis Jalur File

Anda dapat mengonfigurasi Container Path atau Host Path.

  • Path In Container: Pilih ini untuk mengumpulkan file log teks dari dalam kontainer.

  • Host Path: Pilih ini untuk mengumpulkan log layanan dari node kluster.

Jalur File

Atur direktori log dan nama file berdasarkan lokasi log di host, seperti instance ECS.

  • Jika host target adalah sistem Linux, jalur log harus diawali dengan garis miring (/). Contohnya, /apsara/nuwa/**/app.Log.

  • Jika host target adalah sistem Windows, jalur log harus diawali dengan huruf drive. Contohnya, C:\Program Files\Intel\**\*.Log.

Nama direktori dan file mendukung mode penuh dan wildcard. Untuk informasi lebih lanjut tentang aturan nama file, lihat Pencocokan wildcard. Karakter wildcard jalur log hanya mendukung tanda bintang (*) dan tanda tanya (?).

Jalur log mendukung pencocokan direktori multi-level. Artinya, semua file yang memenuhi kriteria di direktori yang ditentukan dan subdirektorinya dikumpulkan. Contohnya:

  • /apsara/nuwa/**/*.log menunjukkan file dengan ekstensi .log di direktori /apsara/nuwa dan subdirektorinya secara rekursif.

  • /var/logs/app_*/**/*.log menunjukkan file dengan ekstensi .log di semua direktori yang cocok dengan format app_* di bawah direktori /var/logs dan subdirektorinya secara rekursif.

  • /var/log/nginx/**/access* menunjukkan file yang diawali dengan access di direktori /var/log/nginx dan subdirektorinya secara rekursif.

Kedalaman Pemantauan Direktori Maksimum

Kedalaman maksimum untuk memantau direktori log. Ini adalah kedalaman direktori maksimum yang dicocokkan oleh karakter wildcard ** di File Path. Nilai 0 menentukan bahwa hanya direktori file log yang Anda tentukan yang dipantau.

Keluaran standar

Setelah Anda mengaktifkan Stdout And Stderr, Logtail mengumpulkan keluaran standar kontainer.

Kesalahan Standar

Setelah Anda mengaktifkan Standard Error, Logtail mengumpulkan kesalahan standar kontainer.

Izinkan mengumpulkan keluaran standar berkali-kali

Secara default, log keluaran standar kontainer hanya dapat cocok dengan satu konfigurasi pengumpulan keluaran standar Logtail versi baru. Jika keluaran standar perlu dikumpulkan oleh beberapa konfigurasi pengumpulan keluaran standar versi baru, Anda harus mengaktifkan Allow Collection By Different Logtail Configurations.

Aktifkan Pratinjau Metadata Kontainer

Setelah Anda mengaktifkan Enable Container Metadata Preview, Anda dapat melihat metadata kontainer setelah membuat konfigurasi Logtail. Metadata ini mencakup informasi kontainer yang cocok dan informasi kontainer lengkap.

Penyaringan Kontainer

  • Deskripsi kondisi filter

Penting
  • Label kontainer diambil dengan menjalankan perintah docker inspect dan berbeda dari label Kubernetes. Untuk informasi lebih lanjut tentang cara mengambil label kontainer, lihat Dapatkan label kontainer.

  • Variabel lingkungan adalah variabel yang dikonfigurasi saat startup kontainer. Untuk informasi lebih lanjut tentang cara mendapatkan variabel lingkungan, lihat Mendapatkan Variabel Lingkungan Kontainer.

  • Dalam skenario Kubernetes, kami menyarankan Anda menggunakan informasi tingkat Kubernetes, seperti K8s Pod Name Regex Match, K8s Namespace Regex Match, K8s Container Name Regex Match, dan K8s Pod Label Whitelist, untuk penyaringan kontainer.

  1. Namespace dan nama kontainer di Kubernetes dipetakan ke label kontainer, khususnya io.kubernetes.pod.namespace dan io.kubernetes.container.name. Kami menyarankan Anda menggunakan dua label kontainer ini untuk penyaringan kontainer. Misalnya, jika pod berada di namespace backend-prod dan nama kontainer adalah worker-server, atur daftar putih label kontainer ke io.kubernetes.pod.namespace : backend-prod atau io.kubernetes.container.name : worker-server untuk mengumpulkan log dari kontainer tersebut.

  2. Jika dua label kontainer ini tidak memenuhi kebutuhan penyaringan Anda, gunakan daftar hitam dan putih variabel lingkungan untuk penyaringan kontainer.

K8s Pod Name Regex Match

Tentukan kontainer yang akan dikumpulkan berdasarkan nama pod. Pencocokan ekspresi reguler didukung. Misalnya, jika Anda mengatur parameter ini ke ^(nginx-log-demo.*)$, semua kontainer di pod yang namanya diawali dengan `nginx-log-demo` akan dicocokkan.

K8s Namespace Regex Match

Tentukan kontainer yang akan dikumpulkan berdasarkan nama namespace. Pencocokan ekspresi reguler didukung. Misalnya, jika Anda mengatur parameter ini ke ^(default|nginx)$, semua kontainer di namespace `nginx` dan `default` akan dicocokkan.

K8s Container Name Regex Match

Tentukan kontainer yang akan dikumpulkan berdasarkan nama kontainer. Nama kontainer Kubernetes didefinisikan di `spec.containers`. Pencocokan ekspresi reguler didukung. Misalnya, jika Anda mengatur parameter ini ke ^(container-test)$, semua kontainer bernama `container-test` akan dicocokkan.

Container Label Whitelist

Daftar putih label kontainer menentukan kontainer yang akan dikumpulkan. Secara default kosong, yang berarti semua keluaran standar kontainer dikumpulkan. Untuk mengatur daftar putih label kontainer, LabelKey wajib diisi, dan LabelValue opsional.

  • Jika LabelValue kosong, semua kontainer dengan label yang mencakup LabelKey akan dicocokkan.

  • Jika LabelValue tidak kosong, hanya kontainer dengan label yang cocok LabelKey=LabelValue yang dicocokkan.

    Secara default, `LabelValue` melakukan pencocokan string, yang berarti kecocokan hanya terjadi jika nilai untuk `LabelValue` identik dengan nilai label kontainer. Jika nilai diawali dengan ^ dan diakhiri dengan $, itu adalah pencocokan ekspresi reguler. Misalnya, jika Anda mengatur LabelKey ke io.kubernetes.container.name dan LabelValue ke ^(nginx|cube)$, kontainer bernama `nginx` atau `cube` akan dicocokkan.

Beberapa entri daftar putih memiliki hubungan OR, yang berarti kontainer dicocokkan jika labelnya memenuhi salah satu entri daftar putih.

Container Label Blacklist

Daftar hitam label kontainer mengecualikan kontainer dari pengumpulan. Secara default kosong, yang berarti tidak ada kontainer yang dikecualikan. Untuk mengatur daftar hitam label kontainer, LabelKey wajib diisi, dan LabelValue opsional.

  • Jika LabelValue kosong, semua kontainer dengan label yang mencakup LabelKey dikecualikan.

  • Jika LabelValue tidak kosong, hanya kontainer dengan label yang cocok LabelKey=LabelValue yang dikecualikan.

    Secara default, LabelValue digunakan untuk pencocokan string, yang memerlukan kecocokan persis dengan nilai label kontainer. Jika nilai diawali dengan ^ dan diakhiri dengan $, pencocokan ekspresi reguler dilakukan. Misalnya, jika Anda mengatur LabelKey ke io.kubernetes.container.name dan LabelValue ke ^(nginx|cube)$, kontainer bernama `nginx` atau `cube` akan dicocokkan.

Beberapa entri daftar hitam memiliki hubungan OR, yang berarti kontainer dikecualikan jika labelnya memenuhi salah satu entri daftar hitam.

Environment Variable Whitelist

Daftar putih variabel lingkungan menentukan kontainer yang akan dikumpulkan. Secara default kosong, yang berarti semua keluaran standar kontainer dikumpulkan. Untuk mengatur daftar putih variabel lingkungan, EnvKey wajib diisi, dan EnvValue opsional.

  • Jika EnvValue kosong, semua kontainer dengan variabel lingkungan yang mencakup EnvKey akan dicocokkan.

  • Jika EnvValue tidak kosong, hanya kontainer dengan variabel lingkungan yang cocok EnvKey=EnvValue yang dicocokkan.

    Secara default, EnvValue adalah pencocokan string, yang berarti kecocokan hanya terjadi jika nilainya persis sama dengan nilai variabel lingkungan. Jika nilai diawali dengan ^ dan diakhiri dengan $, itu adalah pencocokan ekspresi reguler. Misalnya, jika Anda mengatur EnvKey ke NGINX_SERVICE_PORT dan EnvValue ke ^(80|6379)$, kontainer dengan port layanan 80 atau 6379 akan dicocokkan.

Beberapa entri daftar putih memiliki hubungan OR, yang berarti kontainer dicocokkan jika variabel lingkungannya memenuhi salah satu pasangan kunci-nilai.

Environment Variable Blacklist

Daftar hitam variabel lingkungan mengecualikan kontainer dari pengumpulan. Secara default kosong, yang berarti tidak ada kontainer yang dikecualikan. Untuk mengatur daftar hitam variabel lingkungan, EnvKey wajib diisi, dan EnvValue opsional.

  • Jika EnvValue kosong, log dari semua kontainer dengan variabel lingkungan yang mencakup EnvKey dikecualikan.

  • Jika EnvValue tidak kosong, hanya kontainer dengan variabel lingkungan yang cocok EnvKey=EnvValue yang dikecualikan.

    Secara default, EnvValue adalah pencocokan string, yang berarti hanya cocok jika EnvValue persis sama dengan nilai variabel lingkungan. Jika nilai diawali dengan ^ dan diakhiri dengan $, itu adalah pencocokan ekspresi reguler. Misalnya, jika Anda mengatur EnvKey ke NGINX_SERVICE_PORT dan EnvValue ke ^(80|6379)$, kontainer dengan port layanan 80 atau 6379 akan dicocokkan.

Beberapa entri daftar hitam memiliki hubungan OR, yang berarti kontainer dikecualikan jika variabel lingkungannya memenuhi salah satu pasangan kunci-nilai.

K8s Pod Label Whitelist

Tentukan kontainer yang akan dikumpulkan menggunakan daftar putih label Kubernetes. Untuk mengatur daftar putih label Kubernetes, LabelKey wajib diisi, dan LabelValue opsional.

  • Jika LabelValue kosong, semua kontainer dengan label Kubernetes yang mencakup LabelKey akan dicocokkan.

  • Jika LabelValue tidak kosong, hanya kontainer dengan label Kubernetes yang cocok LabelKey=LabelValue yang dicocokkan.

    Secara default, LabelValue adalah pencocokan string, yang berarti hanya cocok jika LabelValue persis sama dengan nilai label Kubernetes. Jika nilai diawali dengan ^ dan diakhiri dengan $, itu adalah pencocokan ekspresi reguler. Misalnya, jika Anda mengatur LabelKey ke app dan LabelValue ke ^(test1|test2)$, kontainer dengan label Kubernetes `app:test1` atau `app:test2` akan dicocokkan.

Beberapa entri daftar putih memiliki hubungan OR, yang berarti kontainer dicocokkan jika label Kubernetes-nya memenuhi salah satu entri daftar putih.

Catatan
  • Jika Anda mengubah label Kubernetes saat sumber daya kontrol Kubernetes, seperti Deployment, sedang berjalan, pod operasional tidak akan dimulai ulang. Oleh karena itu, pod tidak dapat mendeteksi perubahan tersebut. Hal ini dapat menyebabkan aturan pencocokan menjadi tidak valid. Saat mengonfigurasi daftar hitam dan putih label Kubernetes, kami menyarankan Anda menggunakan label pod Kubernetes. Untuk informasi lebih lanjut tentang label Kubernetes, lihat Label dan Selektor.

K8s Pod Label Blacklist

Mengecualikan kontainer dari pengumpulan menggunakan daftar hitam label Kubernetes. Untuk mengatur daftar hitam label Kubernetes, LabelKey wajib diisi, dan LabelValue opsional.

  • Jika LabelValue kosong, semua kontainer dengan label Kubernetes yang mencakup LabelKey dikecualikan.

  • Jika LabelValue tidak kosong, hanya kontainer dengan label Kubernetes yang cocok LabelKey=LabelValue yang dikecualikan.

    Secara default, pencocokan string dilakukan untuk LabelValue. Kecocokan hanya terjadi jika nilai LabelValue persis sama dengan nilai label Kubernetes. Jika nilai diawali dengan ^ dan diakhiri dengan $, pencocokan ekspresi reguler dilakukan. Misalnya, jika Anda mengatur LabelKey ke app dan LabelValue ke ^(test1|test2)$, kontainer dengan label Kubernetes `app:test1` atau `app:test2` akan dicocokkan.

Beberapa entri daftar hitam memiliki hubungan OR, yang berarti kontainer dikecualikan jika label Kubernetes-nya memenuhi salah satu entri daftar hitam.

Catatan
  • Jika Anda mengubah label Kubernetes saat sumber daya kontrol Kubernetes, seperti Deployment, sedang berjalan, pod operasional tidak akan dimulai ulang. Oleh karena itu, pod tidak dapat mendeteksi perubahan tersebut. Hal ini dapat menyebabkan aturan pencocokan menjadi tidak valid. Saat mengonfigurasi daftar putih dan daftar hitam label Kubernetes, kami menyarankan Anda menggunakan label pod Kubernetes. Untuk informasi lebih lanjut tentang label Kubernetes, lihat Label dan Selektor.

Pengayaan Tag Log

Tambahkan variabel lingkungan dan label Kubernetes ke log sebagai tag log.

Environment Variables

Setelah Anda mengonfigurasi parameter ini, Simple Log Service menambahkan bidang terkait variabel lingkungan ke log. Misalnya, jika Anda mengatur Environment Variable Name ke VERSION dan Tag Name ke env_version, dan kontainer mencakup variabel lingkungan VERSION=v1.0.0, informasi ini ditambahkan ke log sebagai bidang __tag__:__env_version__: v1.0.0.

Pod Labels

Setelah Anda mengonfigurasi parameter ini, Simple Log Service menambahkan bidang terkait label pod Kubernetes ke log. Misalnya, jika Anda mengatur Pod Label Name ke app dan Tag Name ke k8s_pod_app, dan pod Kubernetes mencakup label app=serviceA, informasi ini ditambahkan ke log sebagai bidang __tag__:__k8s_pod_app__: serviceA.

Encoding File

Pilih format encoding file log.

Ukuran Pengumpulan Pertama

Saat konfigurasi pertama kali berlaku, ini adalah ukuran dari akhir file tempat pengumpulan dimulai. Ukuran pengumpulan awal default adalah 1.024 KB. Nilainya berkisar antara 0 hingga 10.485.760 KB.

  • Untuk pengumpulan pertama, jika file lebih kecil dari 1.024 KB, pengumpulan dimulai dari awal file.

  • Untuk pengumpulan pertama, jika file lebih besar dari 1.024 KB, pengumpulan dimulai dari 1.024 KB dari akhir file.

Anda dapat memodifikasi First Collection Size di sini. Nilainya berkisar antara 0 hingga 10.485.760 KB.

Daftar Hitam Pengumpulan

Setelah Anda mengaktifkan sakelar Collection Blacklist, Anda dapat mengonfigurasi daftar hitam untuk mengabaikan direktori atau file tertentu selama pengumpulan. Anda dapat menentukan direktori dan nama file menggunakan pencocokan persis atau karakter wildcard. Satu-satunya karakter wildcard yang didukung adalah tanda bintang (*) dan tanda tanya (?).

Penting
  • Jika Anda menggunakan karakter wildcard saat mengonfigurasi File Path tetapi perlu memfilter beberapa jalur tersebut, Anda harus memasukkan jalur lengkap yang sesuai di Collection Blacklist untuk memastikan konfigurasi daftar hitam berlaku.

    Contohnya, jika Anda mengatur File Path ke /home/admin/app*/log/*.log tetapi ingin memfilter semua subdirektori di bawah /home/admin/app1*, Anda harus memilih Directory Blacklist lalu mengonfigurasi direktori sebagai /home/admin/app1*/**. Jika Anda mengonfigurasinya sebagai /home/admin/app1*, daftar hitam tidak akan berlaku.

  • Pencocokan terhadap daftar hitam memiliki overhead komputasi. Batasi jumlah entri daftar hitam hingga 10.

  • Jalur direktori tidak boleh diakhiri dengan garis miring (/). Misalnya, jika Anda mengatur jalur ke /home/admin/dir1/, daftar hitam direktori tidak akan berlaku.

Mendukung pengaturan berdasarkan daftar hitam jalur file, daftar hitam file, dan daftar hitam direktori. Detailnya sebagai berikut:

File Path Blacklist

  • Pilih File Path Blacklist lalu konfigurasikan jalur sebagai /home/admin/private*.log. Hal ini akan mengabaikan semua file di direktori /home/admin/ yang diawali dengan "private" dan diakhiri dengan ".log" selama pengumpulan.

  • Pilih File Path Blacklist lalu konfigurasikan jalur sebagai /home/admin/private*/*_inner.log. Hal ini akan mengabaikan file yang diakhiri dengan "_inner.log" di dalam direktori yang diawali dengan "private" di bawah direktori /home/admin/ selama pengumpulan. Misalnya, file /home/admin/private/app_inner.log diabaikan, tetapi file /home/admin/private/app.log dikumpulkan.

Daftar Hitam File

Pilih File Blacklist lalu konfigurasikan nama file sebagai app_inner.log. Hal ini akan mengabaikan semua file bernama app_inner.log selama pengumpulan.

Daftar Hitam Direktori

  • Pilih Directory Blacklist lalu konfigurasikan direktori sebagai /home/admin/dir1. Hal ini akan mengabaikan semua file di direktori /home/admin/dir1 selama pengumpulan.

  • Pilih Directory Blacklist lalu konfigurasikan direktori sebagai /home/admin/dir*. Hal ini akan mengabaikan semua file di subdirektori yang diawali dengan "dir" di bawah direktori /home/admin/ selama pengumpulan.

  • Pilih Directory Blacklist lalu konfigurasikan direktori sebagai /home/admin/*/dir. Hal ini akan mengabaikan semua file di subdirektori bernama "dir" di tingkat kedua di bawah direktori /home/admin/ selama pengumpulan. Misalnya, file di direktori /home/admin/a/dir diabaikan, tetapi file di direktori /home/admin/a/b/dir dikumpulkan.

Izinkan File Dikumpulkan Berkali-kali

Secara default, Anda hanya dapat menggunakan satu konfigurasi Logtail untuk mengumpulkan log dari file log. Jika log dalam file perlu dikumpulkan berkali-kali, aktifkan Allow File To Be Collected For Multiple Times.

Parameter Lanjutan

Untuk informasi lebih lanjut tentang parameter fitur lanjutan opsional lainnya terkait plugin input file, lihat CreateLogtailPipelineConfig.

Parameter konfigurasi pemroses

Parameter

Deskripsi

Contoh Log

Contoh log yang akan dikumpulkan. Gunakan log dari skenario aktual Anda. Contoh log membantu mengonfigurasi parameter pemrosesan log dan mengurangi kesulitan konfigurasi. Anda dapat menambahkan beberapa contoh, dengan panjang total tidak melebihi 1.500 karakter.

[2023-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened
    at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
    at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
    at TestPrintStackTrace.main(TestPrintStackTrace.java:16)

Mode Multi-baris

  • Jenis: Log multiline adalah log di mana setiap entri log tersebar di beberapa baris berurutan. Penting untuk membedakan setiap entri log dari konten log.

    • Custom: Gunakan Regex To Match First Line untuk membedakan setiap entri log.

    • Multi-line JSON: Setiap objek JSON diperluas menjadi beberapa baris, contohnya:

      {
        "name": "John Doe",
        "age": 30,
        "address": {
          "city": "New York",
          "country": "USA"
        }
      }
  • Metode Pemrosesan Jika Pemisahan Gagal:

    Exception in thread "main" java.lang.NullPointerException
        at com.example.MyClass.methodA(MyClass.java:12)
        at com.example.MyClass.methodB(MyClass.java:34)
        at com.example.MyClass.main(MyClass.java:½0)

    Untuk konten log di atas, jika Simple Log Service gagal memisahkannya:

    • Discard: Langsung membuang segmen log ini.

    • Retain Single Line: Mempertahankan setiap baris teks log sebagai entri log terpisah, menghasilkan total empat entri log.

Metode Pemrosesan

Processors, yang mencakup Native Plugins dan Extended Plugins. Untuk informasi lebih lanjut, lihat Ikhtisar plugin Logtail untuk pemrosesan data.

Penting

Untuk batasan penggunaan plugin pemrosesan, lihat petunjuk di halaman konsol.

  • Logtail 2.0:

    • Plugin native dapat digabungkan dengan cara apa pun.

    • Plugin native dan ekstensi dapat digunakan secara bersamaan, tetapi plugin ekstensi hanya dapat muncul setelah semua plugin native.

  • Versi Logtail sebelum 2.0:

    • Menambahkan plugin native dan ekstensi secara bersamaan tidak didukung.

    • Plugin native hanya dapat digunakan untuk mengumpulkan log teks. Saat menggunakan plugin native, persyaratan berikut harus dipenuhi:

      • Plugin pertama harus berupa penguraian ekspresi reguler, penguraian berbasis pemisah, penguraian JSON, penguraian pola NGINX, penguraian pola Apache, atau penguraian pola IIS.

      • Dari plugin kedua hingga terakhir, hanya boleh ada satu plugin penguraian waktu, satu plugin penyaringan, dan beberapa plugin penyamaran data.

    • Untuk parameter Retain Original Field If Parsing Fails dan Retain Original Field If Parsing Succeeds, hanya kombinasi berikut yang valid. Kombinasi lain tidak valid.

      • Unggah hanya log yang berhasil diurai:

        image

      • Unggah log yang diurai saat berhasil, dan unggah log mentah saat gagal:

        image

      • Saat berhasil, unggah log yang diurai dan tambahkan bidang log mentah. Saat gagal, unggah log mentah.

        Contohnya, jika log mentah "content": "{"request_method":"GET", "request_time":"200"}" berhasil diurai, menambahkan bidang mentah menambahkan bidang lain ke log yang diurai. Nama bidang adalah New Name Of Original Field (jika tidak diisi, default-nya adalah nama bidang asli), dan nilai bidang adalah log mentah {"request_method":"GET", "request_time":"200"}.

        image