All Products
Search
Document Center

Container Service for Kubernetes:Kumpulkan log kontainer (stdout/stderr atau file) dari kluster Kubernetes menggunakan konsol

Last Updated:Mar 13, 2026

Di lingkungan Kubernetes, log kontainer tersebar dan sulit dikelola secara terpusat, sehingga menyebabkan efisiensi troubleshooting rendah serta biaya operasional tinggi. Deploy LoongCollector sebagai DaemonSet dan buat konfigurasi pengumpulan di konsol Simple Log Service untuk menyatukan pengumpulan dan pemrosesan log terstruktur. Pendekatan ini meningkatkan efisiensi pengambilan log, diagnosis masalah, dan analisis observabilitas.

Skenario yang berlaku

  • Lingkungan runtime:

    • Mendukung Alibaba Cloud Container Service for Kubernetes (ACK), termasuk kluster managed maupun dedicated, serta kluster Kubernetes yang dikelola sendiri.

    • Versi Kubernetes harus 1.10.0 atau lebih baru dan mendukung Mount propagation: HostToContainer.

    • Runtime kontainer (hanya mendukung Docker dan Containerd)

      • Docker:

        • Harus memiliki izin untuk mengakses docker.sock.

        • Pengumpulan stdout hanya mendukung driver log bertipe JSON.

        • Driver penyimpanan hanya mendukung overlay dan overlay2. Untuk tipe lainnya, mount direktori log secara manual.

      • Containerd: Harus memiliki izin untuk mengakses containerd.sock.

  • Kebutuhan resource: LoongCollector (Logtail) berjalan dengan prioritas system-cluster-critical. Jangan deploy jika resource kluster tidak mencukupi. Jika tidak, pod yang ada di node tersebut mungkin akan di-evict.

    • CPU: Cadangkan minimal 0,1 core.

    • Memory: Komponen pengumpulan memerlukan minimal 150 MB, sedangkan komponen controller memerlukan minimal 100 MB.

    • Penggunaan aktual tergantung pada laju pengumpulan, jumlah direktori dan file yang dipantau, serta tingkat pemblokiran pengiriman. Pastikan penggunaan aktual tetap di bawah 80% dari batas.

  • Persyaratan izin: Akun Alibaba Cloud atau Pengguna RAM yang digunakan untuk deployment harus memiliki izin AliyunLogFullAccess.

    Untuk membuat kebijakan kustom, rujuk kebijakan sistem AliyunCSManagedLogRolePolicy. Salin izinnya dan tetapkan ke Pengguna RAM atau role target untuk kontrol izin detail halus.

Alur kerja konfigurasi pengumpulan

  1. Instal LoongCollector: Deploy LoongCollector dalam mode DaemonSet untuk menjalankan satu kontainer collector di setiap node kluster, mengumpulkan log dari semua kontainer di node tersebut.

    Untuk mode Sidecar, lihat Kumpulkan log teks pod Kubernetes (mode Sidecar).
  2. Buat Logstore: Gunakan untuk menyimpan log yang dikumpulkan.

  3. Buat dan konfigurasikan aturan pengumpulan log

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

    2. Pemrosesan dan penterstrukan log: Konfigurasikan pemrosesan berdasarkan format log.

      • Log multi-baris: Berlaku ketika satu entri log mencakup beberapa baris (seperti stack exception Java atau traceback Python). Gunakan ekspresi reguler awal-baris untuk mengidentifikasi awal setiap entri log.

      • Penguraian terstruktur: Gunakan plugin parsing (seperti ekspresi reguler, delimiter, atau mode NGINX) untuk mengekstrak string mentah menjadi pasangan kunci-nilai terstruktur agar lebih mudah dikueri dan dianalisis.

    3. Penyaringan log: Konfigurasikan daftar hitam pengumpulan dan filter konten untuk memilih log yang relevan, mengurangi transmisi dan penyimpanan data berlebihan.

    4. Klasifikasi log: Gunakan topik dan penandaan untuk membedakan log dari aplikasi, kontainer, atau jalur berbeda.

  4. Konfigurasi kueri dan analisis: Indeks teks penuh diaktifkan secara default untuk pencarian kata kunci. Aktifkan indeks bidang untuk kueri dan analisis presisi pada bidang terstruktur guna meningkatkan efisiensi pengambilan.

  5. Verifikasi dan troubleshooting: Setelah konfigurasi, verifikasi keberhasilan pengumpulan log. Jika mengalami masalah seperti tidak ada data yang dikumpulkan, kegagalan heartbeat, atau error parsing, lihat Troubleshooting masalah umum.

Langkah 1: Instal LoongCollector

LoongCollector adalah agen pengumpulan log generasi berikutnya dari Alibaba Cloud Simple Log Service dan merupakan versi peningkatan dari Logtail. Keduanya tidak dapat berjalan bersamaan. Untuk menginstal Logtail sebagai gantinya, lihat Instal, jalankan, upgrade, dan uninstal Logtail.

Topik ini hanya mencakup proses instalasi dasar LoongCollector. Untuk parameter detail, lihat Instalasi dan konfigurasi. Jika LoongCollector atau Logtail sudah terinstal, lewati langkah ini dan langsung ke Langkah 2: Buat Logstore.

Catatan

Jika waktu mesin host berubah saat LoongCollector (Logtail) sedang berjalan, log mungkin mengalami duplikasi atau kehilangan.

Kluster ACK

Instal LoongCollector melalui konsol Container Service. Secara default, log dikirim ke proyek Simple Log Service di bawah akun Alibaba Cloud Anda saat ini.

  1. Login ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Klik nama kluster target untuk membuka halaman detailnya.

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

  4. Beralih ke tab Logs and Monitoring. Temukan loongcollector dan klik Install.

    Catatan

    Saat membuat kluster, Anda dapat memilih Component Configurations dan centang Enable Log Service. Anda kemudian dapat memilih untuk Create Project atau Select Project.

    Setelah instalasi, Simple Log Service secara otomatis membuat resource berikut di bawah akun Anda saat ini. Anda dapat melihatnya di Konsol Simple Log Service.

    Jenis resource

    Nama resource

    Tujuan

    Project

    k8s-log-${cluster_id}

    Unit manajemen resource yang mengisolasi log dari bisnis berbeda.

    Untuk membuat proyek Anda sendiri guna manajemen resource log yang lebih fleksibel, lihat Buat proyek.

    Machine group

    k8s-group-${cluster_id}

    Kumpulan node pengumpulan log.

    Logstore

    config-operation-log

    Penting

    Jangan hapus Logstore ini.

    Menyimpan log dari komponen loongcollector-operator. Menggunakan metode penagihan yang sama dengan Logstore standar. Untuk detailnya, lihat Item penagihan untuk metode pengukuran pay-by-ingested-data. Kami menyarankan agar Anda tidak membuat konfigurasi pengumpulan di Logstore ini.

Kluster yang dikelola sendiri

  1. Hubungkan ke kluster Kubernetes Anda dan jalankan perintah berikut berdasarkan wilayah:

    Wilayah di 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. Masuk ke direktori loongcollector-custom-k8s-package dan modifikasi file konfigurasi ./loongcollector/values.yaml.

    # ===================== Required fields =====================
    # Project name for this cluster, for example, k8s-log-custom-sd89ehdq
    projectName: ""
    # Region of the project, for example, cn-shanghai for Shanghai
    region: ""
    # Alibaba Cloud account ID of the project owner. Enclose it in quotes, for example, "123456789"
    aliUid: ""
    # Network type. Valid values: Internet (public network) and Intranet (private network). Default value: Internet.
    net: Internet
    # AccessKey ID and AccessKey secret of the Alibaba Cloud account or RAM user. The account must have the AliyunLogFullAccess system policy.
    accessKeyID: ""
    accessKeySecret: ""
    # Custom cluster ID. Only letters, digits, and hyphens (-) are allowed.
    clusterID: ""
  3. Di direktori loongcollector-custom-k8s-package, jalankan perintah berikut untuk menginstal LoongCollector dan dependensinya:

    bash k8s-custom-install.sh install
  4. Setelah instalasi, periksa status komponen.

    Jika pod gagal dimulai, verifikasi bahwa konfigurasi values.yaml benar dan image terkait berhasil ditarik.
    # Periksa status pod
    kubectl get po -n kube-system | grep loongcollector-ds

    Simple Log Service juga secara otomatis membuat resource berikut. Anda dapat melihatnya di Konsol Simple Log Service.

    Jenis resource

    Nama resource

    Tujuan

    Project

    Nilai projectName dalam file values.yaml

    Unit manajemen resource yang mengisolasi log dari bisnis berbeda.

    Untuk membuat proyek Anda sendiri guna manajemen resource log yang lebih fleksibel, lihat Buat proyek.

    Machine group

    k8s-group-${cluster_id}

    Kumpulan node pengumpulan log.

    Logstore

    config-operation-log

    Penting

    Jangan hapus Logstore ini.

    Menyimpan log dari komponen loongcollector-operator. Menggunakan metode penagihan yang sama dengan Logstore standar. Untuk detailnya, lihat Item penagihan untuk metode pengukuran pay-by-ingested-data. Kami menyarankan agar Anda tidak membuat konfigurasi pengumpulan di Logstore ini.

Langkah 2: Buat Logstore

Logstore adalah unit penyimpanan di Simple Log Service untuk menyimpan log yang dikumpulkan.

  1. Login ke Konsol Simple Log Service dan klik nama proyek target.

  2. Di panel navigasi kiri, pilih imageLogstores dan klik + untuk membuat Logstore:

    • Logstore Name: Masukkan nama unik dalam proyek. Nama ini tidak dapat diubah setelah dibuat.

    • Logstore Type: Pilih Standard atau Query sesuai kebutuhan Anda.

    • Billing Mode:

      • Pay-by-feature (Cannot Be Changed): Biaya didasarkan pada resource individual seperti penyimpanan, pengindeksan, dan operasi baca/tulis. Cocok untuk skenario skala kecil atau saat penggunaan fitur belum pasti.

      • Pay-by-ingested-data: Biaya hanya berdasarkan data mentah yang diingesti. Termasuk penyimpanan gratis selama 30 hari dan fitur transformasi serta pengiriman data gratis. Cocok untuk skenario bisnis dengan periode penyimpanan mendekati 30 hari atau pipeline pemrosesan data kompleks.

    • Data Retention Period: Atur jumlah hari untuk menyimpan log (1–3650 hari; 3650 berarti retensi permanen). Default-nya adalah 30 hari.

    • Biarkan pengaturan lainnya pada nilai default dan klik OK. Untuk informasi lebih lanjut tentang pengaturan lainnya, lihat Kelola Logstore.

Langkah 3: Buat dan konfigurasikan aturan pengumpulan log

Definisikan log mana yang dikumpulkan oleh LoongCollector, cara mengurai strukturnya, cara menyaring kontennya, dan ikat konfigurasi ke machine group yang terdaftar.

  1. Di halaman image Logstore, klik ikon image sebelum nama Logstore target untuk memperluas.

  2. Klik Import Data di sebelah ikon image, dan di kotak dialog Quick Data Import, pilih templat ingesti berdasarkan sumber log Anda dan klik Integrate Now:

    • Stdout kontainer: Pilih K8s-Stdout-New

      Dua templat tersedia untuk pengumpulan stdout kontainer: baru dan lama. Kami merekomendasikan menggunakan templat baru. Untuk perbedaan antar versi, lihat Lampiran: Perbandingan versi stdout kontainer baru dan lama.
    • Log teks kluster: Pilih Kubernetes-File

  3. Konfigurasikan Machine Group Configurations dan klik Next:

    • Scenario: Pilih Docker Containers.

    • Mode deployment: Pilih ACK Daemonset atau Self-managed Cluster in DaemonSet Mode.

    • Di Source Machine Group, tambahkan machine group default k8s-group-${cluster_id} ke Applied Machine Group di sisi kanan.

  4. Di halaman Logtail Configuration, lengkapi pengaturan berikut dan klik Next.

1. Konfigurasi global dan input

Sebelum mengonfigurasi, pastikan Anda telah memilih templat ingesti data dan mengikat machine group. Langkah ini mendefinisikan nama konfigurasi pengumpulan, sumber log, dan cakupan pengumpulan.

Kumpulkan stdout kontainer

Global Configurations

  • Configuration Name: Masukkan nama konfigurasi pengumpulan kustom yang harus unik dalam proyeknya. Setelah dibuat, tidak dapat dimodifikasi. Aturan penamaan:

    • Hanya huruf kecil, angka, tanda hubung (-), dan garis bawah (_) yang diizinkan.

    • Harus dimulai dan diakhiri dengan huruf kecil atau angka.

Konfigurasi input

  • Pilih untuk mengaktifkan Stdout and Stderr atau Standard Error (keduanya diaktifkan secara default).

    Penting

    Kami menyarankan untuk tidak mengaktifkan output standar dan error standar secara bersamaan karena dapat menyebabkan kebingungan log.

Kumpulkan log teks kluster

Global Configurations:

  • Configuration Name: Masukkan nama konfigurasi pengumpulan kustom yang harus unik dalam proyeknya. Setelah dibuat, tidak dapat dimodifikasi. Aturan penamaan:

    • Hanya huruf kecil, angka, tanda hubung (-), dan garis bawah (_) yang diizinkan.

    • Harus dimulai dan diakhiri dengan huruf kecil atau angka.

Input Configurations:

  • File Path Type:

    • Path in Container: Kumpulkan file log di dalam kontainer.

    • Host Path: Kumpulkan log layanan lokal dari mesin host.

  • File Path: Jalur absolut untuk pengumpulan log.

    • Linux: Dimulai dengan "/", contohnya /data/mylogs/**/*.log, yang merepresentasikan semua file dengan ekstensi .log di direktori /data/mylogs.

    • Windows: Dimulai dengan huruf drive, contohnya C:\Program Files\Intel\**\*.Log.

  • Maximum Directory Monitoring Depth: Kedalaman direktori maksimum yang dicocokkan oleh karakter wildcard ** di File Path. Nilai default: 0 (hanya level saat ini). Nilai valid: 0 hingga 1000.

    Kami menyarankan agar Anda mengatur nilai ini ke 0 dan mengonfigurasi jalur ke direktori yang berisi file tersebut.

2. Pemrosesan dan penterstrukan log

Konfigurasikan aturan pemrosesan log untuk mengonversi log mentah tak terstruktur menjadi data terstruktur yang dapat dicari. Ini meningkatkan efisiensi kueri dan analisis log. Tambahkan sampel log sebelum mengonfigurasi:

Di halaman Logtail Configuration, buka bagian Processor Configurations. Klik Add Sample Log dan masukkan konten log yang ingin Anda kumpulkan. Sistem menggunakan sampel ini untuk mendeteksi format log dan membantu menghasilkan ekspresi reguler serta aturan parsing, mengurangi kompleksitas konfigurasi.

Skenario 1: Pemrosesan log multi-baris (seperti log stack trace Java)

Log seperti stack trace exception Java atau JSON sering kali mencakup beberapa baris. Dalam mode pengumpulan default, log tersebut dipecah menjadi beberapa catatan tidak lengkap, kehilangan informasi kontekstual. Aktifkan mode pengumpulan multi-baris dan konfigurasikan ekspresi reguler awal-baris untuk menggabungkan baris berurutan dari entri log yang sama menjadi satu log lengkap.

Contoh:

Log mentah tanpa pemrosesan

Mode pengumpulan default memperlakukan setiap baris sebagai log terpisah. Informasi stack trace terfragmentasi, kehilangan konteks.

Mode multi-baris diaktifkan. Ekspresi reguler awal-baris mengidentifikasi log lengkap, mempertahankan struktur semantik penuh.

image

image

image

Langkah konfigurasi: Di halaman Logtail Configuration, buka bagian Processor Configurations dan aktifkan Multi-line Mode:

  • Type: Pilih Custom atau Multi-line JSON.

    • Custom: Gunakan ini ketika format log mentah bervariasi. Konfigurasikan Regex to Match First Line untuk mengidentifikasi baris pertama setiap entri log.

      • Regex to Match First Line: Anda dapat menghasilkan otomatis atau memasukkan ekspresi reguler secara manual yang mencocokkan seluruh baris. Misalnya, dalam skenario sebelumnya, ekspresi reguler yang cocok adalah \[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*.

        • Hasilkan otomatis: Klik Auto-generate regular expression. Di kotak teks Log Sample, pilih konten log untuk diekstrak dan klik Generate Regex.

        • Input manual: Klik Manually enter regular expression, masukkan ekspresi Anda, lalu klik Validate.

    • Multi-line JSON: Pilih ini ketika semua log mentah menggunakan format JSON standar. Simple Log Service secara otomatis menangani jeda baris dalam entri log JSON individual.

  • Processing Method If Splitting Fails:

    • Discard: Buang teks apa pun yang gagal mencocokkan aturan awal-baris.

    • Retain Single Line: Pisahkan dan simpan teks yang tidak cocok menggunakan mode baris tunggal aslinya.

Skenario 2: Log terstruktur

Ketika log mentah berupa teks tak terstruktur atau semi-terstruktur—seperti log akses NGINX atau log output aplikasi—mengkueri dan menganalisisnya secara langsung tidak efisien. Simple Log Service menyediakan berbagai plugin parsing yang secara otomatis mengonversi log mentah berbagai format menjadi data terstruktur, menciptakan fondasi kuat untuk analisis, pemantauan, dan peringatan selanjutnya.

Contoh:

Log mentah tanpa pemrosesan

Log terurai 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 : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/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

Langkah konfigurasi: Di halaman Logtail Configuration, buka bagian Processor Configurations.

  1. Tambahkan plugin parsing: Klik Add Processor dan konfigurasikan plugin seperti Regex Parse, Delimiter Parse, atau JSON Parse berdasarkan format log Anda. Untuk mengumpulkan log NGINX, pilih Native Processor > Data Parsing (NGINX Mode).

  2. NGINX Log Configuration: Salin definisi log_format dari file konfigurasi server NGINX Anda (nginx.conf) dan tempelkan persis seperti aslinya 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 di sini harus persis sama dengan format yang digunakan server untuk menghasilkan log. Jika tidak, parsing log akan gagal.

  3. Deskripsi parameter konfigurasi umum: Parameter berikut muncul di banyak plugin parsing dan bekerja konsisten di seluruhnya.

    • Source field: Menentukan nama bidang yang akan diurai. Default-nya adalah content, yang merepresentasikan seluruh entri log yang dikumpulkan.

    • Keep source field on parse failure: Disarankan. Jika log tidak dapat diurai berhasil (misalnya, karena ketidakcocokan format), opsi ini memastikan konten log asli dipertahankan utuh di bidang sumber yang ditentukan.

    • Keep source field on parse success: Saat dipilih, konten log asli tetap ada bahkan setelah parsing berhasil.

3. Penyaringan log

Mengumpulkan volume besar log bernilai rendah atau tidak relevan—seperti log level DEBUG atau INFO—tanpa diskriminasi membuang resource penyimpanan, meningkatkan biaya, mengurangi efisiensi kueri, dan memperkenalkan risiko kebocoran data. Gunakan kebijakan penyaringan detail halus untuk mencapai pengumpulan log yang efisien dan aman.

Kurangi biaya dengan penyaringan berbasis konten

Saring log berdasarkan nilai bidang—misalnya, kumpulkan hanya log di mana bidang level adalah WARNING atau ERROR.

Contoh:

Log mentah tanpa pemrosesan

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}

Langkah konfigurasi: Di halaman Logtail Configuration, buka bagian Processor Configurations.

Klik Add Processor dan pilih Native Processor > Data Filtering:

  • Field Name: Bidang log yang akan disaring.

  • Field Value: Ekspresi reguler untuk penyaringan. Hanya pencocokan teks penuh yang didukung—bukan pencocokan kata kunci parsial.

Kontrol cakupan pengumpulan dengan daftar hitam

Gunakan daftar hitam untuk mengecualikan direktori atau file tertentu, mencegah log tidak relevan atau sensitif diunggah.

Langkah konfigurasi: Di halaman Logtail Configuration, buka Input Configurations > Other Input Configurations. Aktifkan Collection Blacklist dan klik Add.

Mendukung pencocokan eksak dan wildcard untuk nama direktori dan file. Karakter wildcard hanya mendukung tanda bintang (*) dan tanda tanya (?).
  • File Path Blacklist: Jalur file yang diabaikan selama pengumpulan. Contoh:

    • /home/admin/private*.log: Mengabaikan semua file di bawah /home/admin/ yang dimulai dengan "private" dan diakhiri dengan ".log".

    • /home/admin/private*/*_inner.log: Mengabaikan file yang diakhiri dengan "_inner.log" di dalam subdirektori apa pun di bawah /home/admin/ yang dimulai dengan "private".

  • File Blacklist: Nama file yang diabaikan selama pengumpulan. Contoh:

    • app_inner.log: Mengabaikan semua file bernama app_inner.log.

  • Directory Blacklist: Jalur direktori tidak boleh diakhiri dengan garis miring (/). Contoh:

    • /home/admin/dir1/: Entri daftar hitam direktori ini tidak akan berlaku.

    • /home/admin/dir*: Mengabaikan semua file di bawah subdirektori di /home/admin/ yang dimulai dengan "dir".

    • /home/admin/*/dir: Mengabaikan semua file di bawah subdirektori bernama "dir" di level kedua di bawah /home/admin/. Misalnya, file di bawah /home/admin/a/dir diabaikan, tetapi file di bawah /home/admin/a/b/dir dikumpulkan.

Penyaringan kontainer

Tetapkan kondisi pengumpulan berdasarkan metadata kontainer—seperti variabel lingkungan, label pod, namespace, dan nama kontainer—untuk mengontrol secara tepat log kontainer mana yang dikumpulkan.

Langkah konfigurasi: Di halaman Logtail Configuration, buka bagian Input Configurations. Aktifkan Container Filtering dan klik Add.

Beberapa kondisi menggunakan hubungan AND. Semua pencocokan ekspresi reguler menggunakan mesin RE2 Go, yang memiliki fitur lebih sedikit daripada mesin seperti PCRE. Ikuti panduan di Lampiran: Batasan penggunaan ekspresi reguler (penyaringan kontainer) saat menulis ekspresi reguler.
  • Daftar hitam/putih variabel lingkungan: Tentukan kondisi variabel lingkungan untuk kontainer yang akan dikumpulkan.

  • Daftar hitam/putih label pod Kubernetes: Tentukan kondisi label untuk pod yang berisi kontainer yang akan dikumpulkan.

  • Pencocokan regex nama pod Kubernetes: Tentukan kontainer yang akan dikumpulkan berdasarkan nama pod.

  • Pencocokan regex namespace Kubernetes: Tentukan kontainer yang akan dikumpulkan berdasarkan nama namespace.

  • Pencocokan regex nama kontainer Kubernetes: Tentukan kontainer yang akan dikumpulkan berdasarkan nama kontainer.

  • Daftar hitam/putih label kontainer: Kumpulkan kontainer yang labelnya memenuhi kondisi yang ditentukan. Gunakan ini untuk skenario Docker. Jangan gunakan untuk skenario Kubernetes.

4. Kategorisasi log

Ketika beberapa aplikasi atau instans berbagi format log yang sama, sulit membedakan sumber log. Hal ini menyebabkan hilangnya konteks selama kueri dan analisis tidak efisien. Konfigurasikan topik log dan penandaan untuk secara otomatis mengasosiasikan konteks dan mengkategorikan log secara logis.

Konfigurasikan topik log

Ketika beberapa aplikasi atau instans menghasilkan log dengan format identik tetapi jalur berbeda—seperti /apps/app-A/run.log dan /apps/app-B/run.log—log yang dikumpulkan menjadi tidak dapat dibedakan. Dalam kasus ini, hasilkan topik berdasarkan machine group, nama kustom, atau ekstraksi jalur file untuk secara fleksibel membedakan log berdasarkan sumber bisnis atau jalur.

Langkah konfigurasi: Buka Global Configurations > Other Global Configurations > Log Topic Type dan pilih metode pembuatan topik. Tiga jenis didukung:

  • Topik machine group: Saat menerapkan konfigurasi pengumpulan ke beberapa machine groups, LoongCollector secara otomatis menggunakan nama machine group sebagai bidang __topic__. Gunakan ini untuk skenario di mana log dibagi berdasarkan kluster host.

  • Custom: Formatnya adalah customized://<custom topic name>, misalnya customized://app-login. Gunakan ini untuk skenario topik statis dengan pengenal bisnis tetap.

  • Ekstraksi jalur file: Ekstrak informasi kunci dari jalur lengkap file log untuk memberi tag sumber log secara dinamis. Gunakan ini ketika beberapa pengguna atau aplikasi berbagi nama file log yang sama tetapi menggunakan jalur berbeda.

    Ketika beberapa pengguna atau layanan menulis log ke direktori tingkat atas berbeda tetapi menggunakan subjalur dan nama file identik, nama file saja tidak dapat membedakan sumber. Misalnya:

    /data/logs
    ├── userA
    │   └── serviceA
    │       └── service.log
    ├── userB
    │   └── serviceA
    │       └── service.log
    └── userC
        └── serviceA
            └── service.log

    Dalam kasus ini, konfigurasikan File Path Extraction dan gunakan ekspresi reguler untuk mengekstrak informasi kunci dari jalur lengkap. Hasil pencocokan menjadi topik log yang diunggah ke Logstore.

    Aturan ekstraksi: Grup penangkapan dalam ekspresi reguler

    Saat mengonfigurasi ekspresi reguler, sistem secara otomatis menentukan format bidang output berdasarkan jumlah dan penamaan grup penangkapan, sebagai berikut:

    Dalam ekspresi reguler jalur file, escape garis miring (/).

    Jenis grup penangkap

    Kasus penggunaan

    Bidang yang dihasilkan

    Contoh Regex

    Contoh jalur yang cocok

    Bidang yang dihasilkan

    Grup penangkapan tunggal (hanya satu (.*?))

    Hanya memerlukan satu dimensi untuk membedakan sumber (seperti username atau lingkungan)

    Menghasilkan bidang __topic__

    \/logs\/(.*?)\/app\.log

    /logs/userA/app.log

    __topic__: userA

    Beberapa grup penangkapan—tidak bernama (beberapa (.*?))

    Memerlukan beberapa dimensi tetapi tanpa label semantik

    Menghasilkan bidang tag __tag__:__topic_{i}__, di mana {i} adalah nomor 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>.*?))

    Memerlukan beberapa dimensi dengan makna bidang yang jelas 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

Aktifkan pengayaan tag log untuk mengekstrak informasi kunci dari variabel lingkungan kontainer atau label pod Kubernetes dan melampirkannya sebagai tag untuk pengelompokan log detail halus.

Langkah konfigurasi: Di halaman Logtail Configuration, buka bagian Input Configurations. Aktifkan Log Tag Enrichment dan klik Add.

  • Environment Variables: Konfigurasikan nama variabel lingkungan dan nama tag. Nilai variabel lingkungan akan disimpan di bawah nama tag.

    • Nama variabel lingkungan: Nama variabel lingkungan yang akan diekstrak.

    • Nama tag: Nama tag variabel lingkungan.

  • Pod Labels: Konfigurasikan nama label pod dan nama tag. Nilai label pod akan disimpan di bawah nama tag.

    • Nama label pod: Nama label pod Kubernetes yang akan diekstrak.

    • Nama tag: Nama tag.

5. Konfigurasi output

Secara default, semua log dikirim ke Logstore saat ini menggunakan kompresi lz4. Untuk mendistribusikan log dari sumber yang sama ke Logstore berbeda, ikuti langkah-langkah berikut:

Distribusi dinamis multi-tujuan

Penting
  • Pengiriman multi-tujuan hanya didukung di LoongCollector versi 3.0.0 atau lebih baru. Logtail tidak mendukungnya.

  • Anda dapat mengonfigurasi hingga lima tujuan output.

  • Setelah mengonfigurasi beberapa tujuan output, konfigurasi pengumpulan ini tidak lagi muncul di daftar konfigurasi pengumpulan Logstore saat ini. Untuk melihat, memodifikasi, atau menghapus konfigurasi distribusi multi-tujuan, lihat Bagaimana cara mengelola konfigurasi distribusi multi-tujuan?.

Langkah konfigurasi: Di halaman Logtail Configuration, buka bagian Output Configurations.

  1. Klik image untuk memperluas konfigurasi output.

  2. Klik Add Output Targets dan lengkapi pengaturan berikut:

    • Logstores: Pilih Logstore target.

    • Compression Method: Mendukung lz4 dan zstd.

    • Route Settings: Rute log berdasarkan bidang tag. Log yang cocok dengan konfigurasi routing diunggah ke Logstore target. Konfigurasi routing kosong berarti semua log yang dikumpulkan diunggah ke Logstore target.

      • Tag Name: Nama bidang tag yang digunakan untuk routing. Masukkan nama bidang secara langsung (misalnya, __path__) tanpa awalan __tag__:. Bidang tag terbagi menjadi dua kategori:

        Untuk informasi lebih lanjut tentang tag, lihat Kelola tag pengumpulan LoongCollector.
        • Terkait agen: Terkait dengan agen pengumpulan itu sendiri dan independen dari plugin. Contoh termasuk __hostname__ dan __user_defined_id__.

        • Terkait plugin input: Disediakan oleh plugin input dan diperkaya ke dalam log. Contoh termasuk __path__ untuk pengumpulan file, dan _pod_name_ dan _container_name_ untuk pengumpulan Kubernetes.

      • Tag Value: Log yang nilai bidang tagnya cocok dengan nilai ini dikirim ke Logstore target.

      • Discard this tag?: Saat diaktifkan, log yang diunggah tidak menyertakan bidang tag ini.

Langkah 4: Konfigurasi Kueri dan Analisis

Setelah mengonfigurasi pemrosesan log dan plugin, klik Next untuk masuk ke halaman Query and Analysis Configurations:

  • Sistem mengaktifkan indeks teks penuh secara default. Ini mendukung pencarian kata kunci pada konten log mentah.

  • Untuk melakukan kueri tepat berdasarkan bidang, setelah Preview Data dimuat di halaman, klik Automatic Index Generation. Simple Log Service menghasilkan indeks bidang berdasarkan entri pertama dalam data pratinjau.

Setelah menyelesaikan konfigurasi, klik Next untuk menyelesaikan pengaturan seluruh proses pengumpulan.

Langkah 5: Validasi dan troubleshooting

Setelah Anda membuat konfigurasi pengumpulan dan menerapkannya ke machine group, sistem secara otomatis menerapkan konfigurasi dan mulai mengumpulkan log inkremental.

Lihat log yang dilaporkan

  1. Konfirmasi bahwa konten baru ditambahkan ke file log: LoongCollector hanya mengumpulkan log inkremental. Jalankan perintah tail -f /path/to/your/log/file dan picu operasi bisnis untuk memastikan log baru sedang ditulis.

  2. Kueri log: Buka halaman kueri dan analisis LogStore tujuan. Klik Search & Analyze. Rentang waktu default adalah 15 menit terakhir. Periksa apakah log baru diingesti. Secara default, setiap log teks kontainer yang dikumpulkan berisi bidang berikut:

    Nama 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 image yang digunakan kontainer.

    __tag__:_pod_name_

    Nama pod.

    __tag__:_namespace_

    Namespace tempat pod berada.

    __tag__:_pod_uid_

    Pengenal unik (UID) pod.

Memecahkan masalah umum

Heartbeat machine group tidak normal

  1. Periksa identitas pengguna: Jika jenis server Anda bukan ECS, atau jika instans ECS dan proyek milik akun Alibaba Cloud berbeda, periksa apakah identitas pengguna yang benar ada di direktori yang ditentukan.

    • Linux: Jalankan perintah cd /etc/ilogtail/users/ && touch <uid> untuk membuat file identitas pengguna.

    • Windows: Buka direktori C:\LogtailData\users\ dan buat file kosong bernama <uid>.

    Jika file bernama dengan ID akun Alibaba Cloud proyek ada di jalur yang ditentukan, identitas pengguna dikonfigurasi dengan benar.

  2. Periksa identitas machine group: Jika Anda menggunakan machine group berbasis pengenal kustom, periksa apakah file bernama user_defined_id ada di direktori yang ditentukan. Jika file ada, periksa apakah isi file sama dengan ID kustom yang dikonfigurasi untuk machine group.

    • Linux:

      # Konfigurasikan ID 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 dan tulis ID kustom ke file tersebut. Jika direktori tidak ada, buat secara manual.

  3. Jika identitas pengguna dan identitas machine group dikonfigurasi dengan benar, lihat Troubleshoot masalah machine group LoongCollector (Logtail) untuk informasi lebih lanjut.


Terjadi error pengumpulan log atau error format

Troubleshooting: Masalah ini menunjukkan bahwa konektivitas jaringan dan konfigurasi dasar normal. Masalah disebabkan oleh ketidakcocokan antara konten log dan aturan parsing. Lihat pesan error spesifik untuk mengidentifikasi penyebab masalah:

  1. Di halaman Logtail Configuration, klik nama konfigurasi LoongCollector (Logtail) yang tidak normal. Di tab Log Collection Error, klik Select Time Range untuk mengatur rentang waktu kueri.

  2. Di bagian , lihat metrik alarm log error dan temukan solusi berdasarkan informasi di Error umum selama pengumpulan data.

Langkah selanjutnya

  1. Kueri dan analisis log:

  2. Visualisasi data: Pantau tren metrik utama menggunakan dasbor visualisasi.

  3. Peringatan anomali otomatis: Tetapkan kebijakan peringatan untuk mendeteksi anomali sistem secara real-time.

Troubleshoot data log kontainer yang hilang

  1. Periksa entri log baru. Setelah Anda mengonfigurasi Logtail untuk mengumpulkan log, Logtail tidak mengumpulkan file log kecuali entri log baru ditambahkan ke dalamnya.

2. Periksa log operasional Logtail

Periksa log operasional Logtail sendiri untuk pesan error detail.

  1. Masuk ke Kontainer Logtail:

    1. Temukan pod Logtail.

      kubectl get po -n kube-system | grep logtail

      Sistem mengembalikan output yang mirip berikut:

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

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

      Dalam perintah ini, logtail-ds-****d adalah ID pod. Ganti dengan ID pod aktual Anda.

  1. Lihat log operasional Logtail:

    Logtail menyimpan lognya di folder /usr/local/ilogtail/ di kontainer Logtail. File log diberi nama ilogtail.LOG dan logtail_plugin.LOG. Setelah login ke kontainer Logtail, jalankan perintah berikut untuk melihat file log:

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

    Tujuan: Identifikasi metrik alarm dalam log error. Kemudian, lihat jenis error umum untuk pengumpulan data Simple Log Service untuk solusi.

3. Periksa detak jantung kelompok mesin

Periksa status heartbeat machine group. Buka halaman Resource Group > Machine Groups. Klik nama machine group target Anda. Di bagian Machine Group Configurations > Machine Group Status, periksa status Heartbeat dan catat jumlah node dengan status OK.

  1. Periksa jumlah node pekerja di kluster kontainer Anda.

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

    2. Periksa jumlah node pekerja di kluster.

      kubectl get node | grep -v master

      Sistem mengembalikan output yang mirip 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 troubleshooting berdasarkan hasilnya.

    • Semua node di machine group menunjukkan status heartbeat Failed:

      • Jika Anda menggunakan kluster yang dikelola sendiri, verifikasi bahwa parameter berikut dikonfigurasi dengan benar: {regionId}, {aliuid}, {access-key-id}, dan {access-key-secret}.

        Jika ada parameter yang salah, jalankan helm del --purge alibaba-log-controller untuk menghapus paket instalasi. Kemudian instal ulang.

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

      • Tentukan apakah Anda secara manual menerapkan DaemonSet menggunakan file YAML.

        1. Jalankan perintah berikut. Jika perintah mengembalikan output, Anda sebelumnya menerapkan DaemonSet secara manual menggunakan file YAML.

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

        3. Ganti nilai placeholder untuk ${your_region_name}, ${your_aliyun_user_id}, ${your_machine_group_name}, dan parameter lainnya.

        4. Perbarui resource.

          kubectl apply -f ./logtail-daemonset.yaml

4. Periksa kondisi filter dalam konfigurasi pengumpulan

Di konsol Simple Log Service, periksa konfigurasi pengumpulan Logtail Anda. Fokus pada pengaturan ini: IncludeLabel, ExcludeLabel, IncludeEnv, dan ExcludeEnv. Pastikan pengaturan tersebut sesuai dengan kebutuhan pengumpulan Anda.

  • Label di sini merujuk pada label kontainer (dari docker inspect), bukan label Kubernetes.

  • Sementara hapus pengaturan IncludeLabel, ExcludeLabel, IncludeEnv, dan ExcludeEnv. Kemudian periksa apakah log dikumpulkan secara normal. Jika log muncul setelah penghapusan, satu atau lebih pengaturan ini salah konfigurasi.

FAQ

Kelola Konfigurasi Distribusi Multi-Tujuan

Karena konfigurasi distribusi multi-tujuan dikaitkan dengan beberapa Logstore, kelola konfigurasi ini di halaman manajemen tingkat Proyek:

  1. Login ke Konsol Simple Log Service. Kemudian, klik nama Proyek target.

  2. Di halaman Proyek target, klik imageResource Group > Configurations di panel navigasi kiri.

    Catatan

    Halaman ini mengelola secara terpusat semua konfigurasi pengumpulan di bawah Proyek, termasuk yang tetap ada karena Logstore dihapus secara tidak sengaja.

Transfer Log Kluster ACK ke Proyek di Akun Alibaba Cloud Lain

Instal secara manual komponen Simple Log Service LoongCollector (Logtail) di kluster ACK. Kemudian, konfigurasikan ID akun root atau kredensial akses (AccessKey) akun tujuan. Ini mengirim log kontainer ke Proyek Simple Log Service di akun Alibaba Cloud lain.

Skenario: Saat Anda perlu mengumpulkan data log dari kluster ACK ke Proyek Simple Log Service independen di akun Alibaba Cloud lain karena struktur organisasi, isolasi izin, atau persyaratan pemantauan terpadu, instal LoongCollector (Logtail) secara manual untuk konfigurasi cross-account.

Prosedur: Prosedur ini menggunakan instalasi manual LoongCollector sebagai contoh. Untuk informasi tentang cara menginstal Logtail, lihat Instalasi dan Konfigurasi Logtail.

  1. Hubungkan ke kluster Kubernetes Anda dan jalankan perintah yang sesuai berdasarkan wilayah:

    Wilayah di 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. Masuk ke direktori loongcollector-custom-k8s-package dan modifikasi file konfigurasi ./loongcollector/values.yaml.

    # ===================== Required fields =====================
    # Project name for this cluster, for example, k8s-log-custom-sd89ehdq
    projectName: ""
    # Region of the project, for example, cn-shanghai for Shanghai
    region: ""
    # Alibaba Cloud account ID of the project owner. Enclose it in quotes, for example, "123456789"
    aliUid: ""
    # Network type. Valid values: Internet (public network) and Intranet (private network). Default value: Internet.
    net: Internet
    # AccessKey ID and AccessKey secret of the Alibaba Cloud account or RAM user. The account must have the AliyunLogFullAccess system policy.
    accessKeyID: ""
    accessKeySecret: ""
    # Custom cluster ID. Only letters, digits, and hyphens (-) are allowed.
    clusterID: ""
  3. Di direktori loongcollector-custom-k8s-package, jalankan perintah berikut untuk menginstal LoongCollector dan dependensinya:

    bash k8s-custom-install.sh install
  4. Setelah instalasi, periksa status komponen.

    Jika pod gagal dimulai, verifikasi bahwa konfigurasi values.yaml benar dan image terkait berhasil ditarik.
    # Periksa status pod
    kubectl get po -n kube-system | grep loongcollector-ds

    Simple Log Service juga secara otomatis membuat resource berikut. Anda dapat melihatnya di Konsol Simple Log Service.

    Jenis resource

    Nama resource

    Tujuan

    Project

    Nilai projectName dalam file values.yaml

    Unit manajemen resource yang mengisolasi log dari bisnis berbeda.

    Untuk membuat proyek Anda sendiri guna manajemen resource log yang lebih fleksibel, lihat Buat proyek.

    Machine group

    k8s-group-${cluster_id}

    Kumpulan node pengumpulan log.

    Logstore

    config-operation-log

    Penting

    Jangan hapus Logstore ini.

    Menyimpan log dari komponen loongcollector-operator. Menggunakan metode penagihan yang sama dengan Logstore standar. Untuk detailnya, lihat Item penagihan untuk metode pengukuran pay-by-ingested-data. Kami menyarankan agar Anda tidak membuat konfigurasi pengumpulan di Logstore ini.

Izinkan Beberapa Konfigurasi Pengumpulan untuk Mengumpulkan File Log atau Standard Output Kontainer yang Sama

Secara default, untuk mencegah duplikasi data, Simple Log Service membatasi setiap sumber log hanya 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 baru, hanya satu konfigurasi pengumpulan standard output yang dapat mengumpulkannya secara default.

    • Jika Anda menggunakan templat standard output lama, tidak diperlukan konfigurasi tambahan. Mendukung pengumpulan beberapa salinan secara default.

  1. Login ke Konsol Simple Log Service. Buka Proyek target.

  2. Di panel navigasi kiri, pilih imageLogstore. Temukan Logstore target.

  3. Klik image sebelum namanya untuk memperluas Logstore.

  4. Klik Logtail Configuration. Di daftar konfigurasi, temukan konfigurasi Logtail target. Kemudian, klik Manage Logtail Configuration di kolom Actions.

  5. Di halaman Logtail Configuration, klik Edit. 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 Collection by Different Logtail Configurations.

Dependency Error Saat Menguninstal Komponen loongcollector (logtail-ds) di ACK

Deskripsi 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 mengaktifkan fitur pengumpulan log. Plugin ini 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 dan kemudian menguninstal komponen:

  1. Login ke Konsol Container Service for Kubernetes.

  2. Di daftar kluster, klik nama kluster target. Buka halaman detail kluster.

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

  4. Di daftar komponen, cari dan temukan komponen terway-eniip. Klik Disable Logging.

  5. Di kotak dialog yang muncul, klik OK.

  6. Setelah konfigurasi berlaku, coba uninstal komponen loongcollector (logtail-ds) lagi.

Mengapa Segmen Log Terakhir Dilaporkan dengan Penundaan Panjang dan Kadang Terpotong?

Analisis Penyebab: Pemotongan log biasanya terjadi ketika file log tidak memiliki line feed di akhir atau ketika log multi-baris (seperti stack exception) belum ditulis sepenuhnya. Karena collector data tidak dapat menentukan apakah log telah berakhir, segmen konten terakhir mungkin dipotong lebih awal atau dilaporkan dengan penundaan. Versi LoongCollector (Logtail) yang berbeda memiliki mekanisme pemrosesan berbeda:

  • Versi sebelum 1.8:
    Jika baris log terakhir tidak memiliki line feed (carriage return) atau segmen log multi-baris tidak lengkap, collector data menunggu tulisan berikutnya untuk memicu output. Hal ini dapat menyebabkan entri log terakhir tetap tidak terkirim untuk waktu yang lama 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 timeout, sistem secara otomatis mengirimkan konten saat ini untuk memastikan log akhirnya dikumpulkan.



    • Timeout default: 60 detik (memastikan kelengkapan dalam sebagian besar skenario)

    • Sesuaikan nilai ini sesuai kebutuhan. Namun, jangan atur ke 0. Jika tidak, log mungkin terpotong atau beberapa konten hilang.

Solusi:

Anda dapat memperpanjang waktu tunggu untuk memastikan log lengkap ditulis sebelum dikumpulkan:

  1. Login ke Konsol Simple Log Service. Buka Proyek target.

  2. Di panel navigasi kiri, pilih imageLogstore. Temukan Logstore target.

  3. Klik image sebelum namanya untuk memperluas Logstore.

  4. Klik Logtail Configuration. Di daftar konfigurasi, temukan konfigurasi Logtail target. Kemudian, klik Manage Logtail Configuration di kolom Actions.

  5. Di halaman Logtail Configuration, klik Edit:

    • Pilih Input Configurations > Other Input Configurations > Advanced Parameters. Tambahkan konfigurasi JSON berikut untuk menyesuaikan timeout:

      {
        "FlushTimeoutSecs": 1
      }
      • Nilai default: Ditentukan oleh parameter startup default_reader_flush_timeout (biasanya beberapa detik).

      • Unit: detik.

      • Nilai yang disarankan: ≥1 detik. Jangan atur ke 0. Jika tidak, log mungkin terpotong atau beberapa konten hilang.

  6. Setelah konfigurasi selesai, klik OK.

Mengapa LoongCollector (Logtail) Beralih dari Nama Domain Jaringan Pribadi ke Jaringan Publik Selama Runtime? Dapatkah Ia Secara Otomatis Beralih Kembali?

Selama runtime LoongCollector (Logtail), jika sistem mendeteksi komunikasi nama domain jaringan pribadi tidak normal (seperti jaringan tidak tersedia atau timeout koneksi), sistem secara otomatis beralih ke nama domain jaringan publik untuk mengirim data. Hal ini memastikan kelangsungan dan keandalan pengumpulan log serta mencegah akumulasi atau kehilangan log.

  • LoongCollector: Setelah jaringan pribadi pulih, sistem secara otomatis beralih kembali ke jaringan pribadi.

  • Logtail: Tidak secara otomatis beralih kembali. Anda harus me-restart secara manual untuk memulihkan komunikasi jaringan pribadi.

Lampiran: Detail Plugin Native

Di bagian Processor Configurations halaman Logtail Configuration, tambahkan processor untuk menterstrukturkan log mentah. Untuk menambahkan plugin pemrosesan ke konfigurasi pengumpulan yang sudah ada, ikuti langkah-langkah berikut:

  1. Di panel navigasi kiri, pilih imageLogstore dan temukan logstore target.

  2. Klik ikon image sebelum namanya untuk memperluas logstore.

  3. Klik Logtail Configuration. Di daftar konfigurasi, temukan konfigurasi Logtail target dan klik Manage Logtail Configuration di kolom Actions.

  4. Di 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 Extended processors.
Penting

Aturan menggabungkan plugin (untuk LoongCollector / Logtail 2.0 dan lebih baru):

  • Processor native dan extended dapat digunakan secara independen atau digabungkan sesuai kebutuhan.

  • Utamakan processor native karena menawarkan performa lebih baik dan stabilitas lebih tinggi.

  • Ketika fitur native tidak dapat memenuhi kebutuhan bisnis Anda, tambahkan processor extended setelah processor native yang dikonfigurasi untuk pemrosesan tambahan.

Batasan urutan:

Semua plugin dieksekusi secara berurutan sesuai urutan konfigurasinya, yang membentuk rantai pemrosesan. Catatan: Semua processor native harus mendahului processor extended apa pun. Setelah Anda menambahkan processor extended, Anda tidak dapat menambahkan processor native lagi.

Parsing Ekspresi Reguler

Ekstrak bidang log menggunakan ekspresi reguler dan uraikan log menjadi pasangan kunci-nilai. Setiap bidang dapat dikueri dan dianalisis secara independen.

Contoh:

Log mentah tanpa pemrosesan

Menggunakan plugin Parsing Ekspresi Reguler

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

Langkah konfigurasi: Di area Logtail Configuration pada halaman Processor Configurations, klik Add Processor, dan pilih Native Processor > Data Parsing (Regex Mode):

  • Regular Expression: Mencocokkan log. Mendukung pembuatan otomatis atau input manual:

    • Pembuatan otomatis:

      • Klik Generate Regular Expression automatically.

      • Pilih konten log untuk diekstrak di Log Sample.

      • Klik Generate Regular Expression.

        image

    • Input manual: Manually enter a regular expression berdasarkan format log.

    Setelah konfigurasi, klik Validate untuk menguji apakah ekspresi reguler mengurai konten log dengan benar.

  • Extracted Field: Atur nama bidang yang sesuai (Key) untuk konten log yang diekstrak (Value).

  • Untuk parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log Terstruktur.


Parsing Delimiter

Menterstrukturkan konten log menggunakan delimiter dan mengurai menjadi beberapa pasangan kunci-nilai. Mendukung delimiter karakter tunggal dan multi-karakter.

Contoh:

Log mentah tanpa pemrosesan

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

Langkah konfigurasi: Di area Logtail Configuration pada halaman Processor Configurations, klik Add Processor, dan pilih Native Processor > Data Parsing (Delimiter Mode):

  • Delimiter: Tentukan karakter yang digunakan untuk memisahkan konten log.

    Contoh: Untuk file CSV, pilih Custom dan masukkan koma (,).

  • Quote: Jika nilai bidang berisi delimiter, tentukan karakter quote untuk membungkus bidang dan mencegah pemisahan salah.

  • Extracted Field: Atur nama bidang yang sesuai (Key) untuk setiap kolom sesuai urutan pemisahan. Aturan sebagai berikut:

    • Nama bidang hanya boleh berisi huruf, angka, dan garis bawah (_).

    • Harus dimulai dengan huruf atau garis bawah (_).

    • Panjang maksimum: 128 byte.

  • Untuk parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log Terstruktur.


Parsing JSON Standar

Menterstrukturkan log JSON bertipe Object dan mengurai menjadi pasangan kunci-nilai.

Contoh:

Log mentah tanpa pemrosesan

Ekstraksi otomatis kunci-nilai JSON standar

{"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

Langkah konfigurasi: Di area Logtail Configuration pada halaman Processor Configurations, klik Add Processor, dan pilih Native Processor > Data Parsing (JSON Mode):

  • Original Field: Nilai default adalah content (bidang ini menyimpan konten log mentah yang akan diurai).

  • Untuk parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log Terstruktur.


Parsing JSON Bersarang

Uraikan log JSON bersarang menjadi pasangan kunci-nilai dengan menentukan kedalaman ekspansi.

Contoh:

Log mentah tanpa pemrosesan

Kedalaman ekspansi: 0, dan gunakan kedalaman ekspansi sebagai awalan

Kedalaman ekspansi: 1, dan gunakan kedalaman ekspansi 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"}}}}

Langkah konfigurasi: Di area Logtail Configuration pada halaman Processor Configurations, klik Add Processor, dan pilih Extended Processor > Expand JSON Field:

  • Original Field: Nama bidang sumber untuk diekspansi, seperti content.

  • JSON Expansion Depth: Level ekspansi objek JSON. 0 berarti ekspansi penuh (default), 1 berarti level saat ini, dan seterusnya.

  • Character to Concatenate Expanded Keys: Penghubung untuk nama bidang selama ekspansi JSON. Default-nya adalah garis bawah (_).

  • Name Prefix of Expanded Keys: Tentukan awalan untuk nama bidang setelah ekspansi JSON.

  • Expand Array: Aktifkan opsi ini untuk mengekspansi array menjadi pasangan kunci-nilai berindeks.

    Contoh: {"k":["a","b"]} diekspansi menjadi {"k[0]":"a","k[1]":"b"}.

    Untuk mengganti nama bidang yang diekspansi (misalnya, mengubah prefix_s_key_k1 menjadi new_field_name), tambahkan plugin Rename Fields nanti untuk menyelesaikan pemetaan.
  • Untuk parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log Terstruktur.


Parsing Array JSON

Gunakan fungsi json_extract function untuk mengekstrak objek JSON dari array JSON.

Contoh:

Log mentah tanpa pemrosesan

Ekstrak struktur array JSON

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

Langkah konfigurasi: Di area Logtail Configuration pada halaman Processor Configurations, ubah Processing Method 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 dan simpan hasilnya di bidang baru json1 dan json2, masing-masing.

* | extend json1 = json_extract(content, '$[0]'), json2 = json_extract(content, '$[1]')

Penguraian Log Apache

Menterstrukturkan konten log berdasarkan definisi dalam file konfigurasi log Apache dan mengurai menjadi beberapa pasangan kunci-nilai.

Contoh:

Log mentah tanpa pemrosesan

Format Log Umum Apache combined parsing

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]

Langkah konfigurasi: Di area Logtail Configuration pada halaman Processor Configurations, klik Add Processor, dan pilih Native Processor > Data Parsing (Apache Mode):

  • Log Format: combined

  • APACHE LogFormat Configuration: Sistem secara otomatis mengisi konfigurasi berdasarkan Log Format.

    Penting

    Verifikasi konten yang diisi otomatis untuk memastikan persis sama dengan LogFormat yang didefinisikan dalam file konfigurasi Apache di server (biasanya terletak di /etc/apache2/apache2.conf).

  • Untuk parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log Terstruktur.


Masking Data

Mask data sensitif dalam log.

Contoh:

Log mentah tanpa pemrosesan

Hasil masking

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

Langkah konfigurasi: Di area Logtail Configuration pada halaman Processor Configurations, klik Add Processor, dan pilih Native Processor > Data Masking:

  • Original Field: Bidang sumber yang menyimpan konten log sebelum parsing.

  • Data Masking Method:

    • const: Mengganti konten sensitif dengan string yang dimodifikasi.

    • md5: Mengganti konten sensitif dengan hash MD5-nya.

  • Replacement String: Saat Anda memilih Data Masking Method sebagai const, masukkan string untuk mengganti konten sensitif.

  • Content Expression that Precedes Replaced Content: Digunakan untuk menemukan konten sensitif. Konfigurasikan menggunakan sintaks RE2.

  • Content Expression to Match Replaced Content: Ekspresi untuk konten sensitif. Konfigurasikan menggunakan sintaks RE2.


Parsing Waktu

Uraikan bidang waktu dalam log dan atur hasil yang diurai sebagai bidang __time__ log.

Contoh:

Log mentah tanpa pemrosesan

Parsing waktu

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

image

Langkah konfigurasi: Di area Logtail Configuration pada halaman Processor Configurations, klik Add Processor, dan pilih Native Processor > Time Parsing:

  • Original Field: Bidang sumber yang menyimpan konten log sebelum parsing.

  • Time Format: Atur format waktu berdasarkan konten waktu dalam log. Untuk informasi lebih lanjut, lihat Format Waktu.

  • Time Zone: Pilih zona waktu bidang waktu log. Secara default, menggunakan zona waktu mesin, yaitu zona waktu lingkungan tempat proses LoongCollector (Logtail) berjalan.

Lampiran: Batasan Ekspresi Reguler (Penyaringan Kontainer)

Ekspresi reguler yang digunakan untuk penyaringan kontainer didasarkan pada mesin RE2 Go. Mesin ini memiliki beberapa batasan sintaks dibandingkan mesin lain seperti PCRE. Perhatikan hal berikut saat menulis ekspresi reguler:

1. Perbedaan sintaks grup bernama

Go menggunakan sintaks (?P<name>...) untuk mendefinisikan grup bernama. Tidak mendukung sintaks (?<name>...) yang digunakan di PCRE.

  • Contoh benar: (?P<year>\d{4})

  • Contoh salah: (?<year>\d{4})

2. Fitur ekspresi reguler yang tidak didukung

Fitur ekspresi reguler umum tetapi kompleks berikut tidak tersedia di RE2. Hindari penggunaannya:

  • Assertion: (?=...), (?!...), (?<=...), (?<!...)

  • Ekspresi kondisional: (?(condition)true|false)

  • Pencocokan rekursif: (?R), (?0)

  • Referensi subrutin: (?&name), (?P>name)

  • Grup atomik: (?>...)

3. Rekomendasi penggunaan

Saat men-debug ekspresi reguler menggunakan alat seperti Regex101, pilih mode Golang (RE2) untuk validasi guna memastikan kompatibilitas. Jika sintaks yang tidak didukung di atas digunakan, plugin tidak dapat mengurai atau mencocokkan dengan benar.

Lampiran: Perbandingan versi lama dan baru standard output kontainer

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.

  1. Keunggulan inti versi standard output baru

    • Peningkatan performa signifikan

      • Direfactoring dalam C++, performa meningkat 180% hingga 300% dibandingkan 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 persyaratan 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 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

      • Parameter konfigurasi 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 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 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__:<key>, bukan disematkan dalam konten log.

  4. Dampak perubahan versi baru terhadap pengguna

    • Adaptasi sisi konsumen: Karena lokasi penyimpanan berubah dari "content" ke "tag", logika konsumsi log pengguna perlu disesuaikan. Misalnya, Anda harus mengakses bidang melalui __tag__ selama 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

Item Konfigurasi

Deskripsi

Nama Konfigurasi

Nama konfigurasi Logtail harus unik dalam Proyeknya. Anda tidak dapat memodifikasi nama setelah membuat konfigurasi Logtail.

Jenis Topik Log

Pilih cara menghasilkan topik. Opsi termasuk topik machine group, ekstraksi jalur file, dan kustom.

Parameter Lanjutan

Untuk fitur lanjutan opsional lainnya terkait konfigurasi global, lihat CreateLogtailPipelineConfig.

Parameter Konfigurasi Input

Item Konfigurasi

Deskripsi

Mode Deployment Logtail

DaemonSet: Deploy satu LoongCollector di setiap node di kluster. Mengumpulkan log dari semua kontainer di node tersebut.

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

Jenis Jalur File

Mendukung Path in Container dan 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 ECS).

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

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

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

Pencarian file log menggunakan pencocokan direktori multi-lapis. Semua file yang cocok di direktori yang ditentukan (termasuk semua subdirektori) ditemukan. Misalnya:

  • /apsara/nuwa/**/*.log menunjukkan file dengan akhiran .log di direktori /apsara/nuwa (termasuk subdirektori rekursifnya).

  • /var/logs/app_*/**/*.log menunjukkan file dengan akhiran .log di semua direktori yang cocok dengan format app_* dalam direktori /var/logs (termasuk subdirektori rekursifnya).

  • /var/log/nginx/**/access* menunjukkan file yang dimulai dengan access di direktori /var/log/nginx (termasuk subdirektori rekursifnya).

Kedalaman Pemantauan Direktori Maksimum

Atur kedalaman maksimum untuk memantau direktori log. Ini adalah kedalaman direktori maksimum yang dicocokkan oleh karakter wildcard ** di File Path. Nilai 0 berarti hanya memantau direktori saat ini.

Standard Output

Aktifkan Stdout and Stderr untuk mengumpulkan standard output kontainer.

Standard Error

Aktifkan Standard Error untuk mengumpulkan standard error kontainer.

Izinkan Pengumpulan Standard Output Ganda

Secara default, log standard output kontainer hanya dapat cocok dengan satu konfigurasi pengumpulan standard output Logtail baru. Jika standard output perlu dikumpulkan oleh beberapa konfigurasi pengumpulan standard output baru, aktifkan sakelar Allow File to Be Collected for Multiple Times.

Aktifkan Pratinjau Metadata Kontainer

Aktifkan Enable Container Metadata Preview untuk melihat metadata kontainer setelah membuat konfigurasi Logtail. Ini termasuk informasi kontainer yang cocok dan informasi kontainer lengkap.

Penyaringan Kontainer

  • Deskripsi Kondisi Filter

Penting
  • Label kontainer berasal dari Docker inspect, bukan Kubernetes. Untuk informasi tentang cara mendapatkan label kontainer, lihat Get Container Label.

  • Variabel lingkungan dikonfigurasi selama startup kontainer. Untuk informasi tentang cara mendapatkan variabel lingkungan kontainer, lihat Get Container Environment Variables.

  • Dalam skenario Kubernetes, gunakan informasi tingkat Kubernetes (seperti K8s Pod Name Regular Matching, K8s Namespace Regular Matching, K8s Container Name Regular Matching, dan Kubernetes Pod Label Whitelist) untuk penyaringan kontainer.

  1. Namespace Kubernetes dan nama kontainer dipetakan ke io.kubernetes.pod.namespace dan io.kubernetes.container.name dalam label kontainer. Gunakan label kontainer ini untuk penyaringan kontainer. Misalnya, jika pod berada di namespace backend-prod dan nama kontainernya adalah worker-server, untuk mengumpulkan log dari kontainer ini, atur daftar putih label kontainer ke io.kubernetes.pod.namespace : backend-prod atau io.kubernetes.container.name : worker-server.

  2. Jika dua label kontainer di atas tidak memenuhi persyaratan penyaringan Anda, gunakan daftar hitam dan putih variabel lingkungan untuk penyaringan kontainer.

K8s Pod Name Regular Matching

Tentukan kontainer untuk dikumpulkan berdasarkan nama Pod. Mendukung pencocokan ekspresi reguler. Misalnya, atur ke ^(nginx-log-demo.*)$ untuk mencocokkan semua kontainer di pod yang namanya dimulai dengan nginx-log-demo.

K8s Namespace Regular Matching

Tentukan kontainer untuk dikumpulkan berdasarkan nama Namespace. Mendukung pencocokan ekspresi reguler. Misalnya, atur ke ^(default|nginx)$ untuk mencocokkan semua kontainer di namespace nginx dan default.

K8s Container Name Regular Matching

Tentukan kontainer untuk dikumpulkan berdasarkan nama kontainer (didefinisikan di `spec.containers`). Mendukung pencocokan ekspresi reguler. Misalnya, atur ke ^(container-test)$ untuk mencocokkan semua kontainer bernama container-test.

Container Label Whitelist (We recommend that you configure this parameter in a Docker environment and do not configure this parameter in a Kubernetes environment.)

Ini adalah daftar putih untuk label kontainer, digunakan untuk menentukan kontainer yang akan dikumpulkan. Secara default kosong, artinya semua standard output kontainer dikumpulkan. Untuk mengatur daftar putih label kontainer, `LabelKey` wajib diisi, dan `LabelValue` opsional.

  • Jika `LabelValue` kosong, semua kontainer yang labelnya berisi `LabelKey` dicocokkan.

  • Jika `LabelValue` tidak kosong, hanya kontainer yang labelnya berisi `LabelKey=LabelValue` yang dicocokkan.

    `LabelValue` menggunakan pencocokan string secara default. Artinya, `LabelValue` harus persis sama dengan nilai label kontainer. Jika nilai dimulai dengan ^ dan diakhiri dengan $, menggunakan pencocokan ekspresi reguler. Misalnya, atur LabelKey ke io.kubernetes.container.name dan LabelValue ke ^(nginx|cube)$. Ini mencocokkan kontainer bernama nginx atau cube.

Beberapa daftar putih menggunakan hubungan OR. Jika label kontainer memenuhi entri daftar putih apa pun, kontainer tersebut dicocokkan.

Container Label Blacklist (We recommend that you configure this parameter in a Docker environment and do not configure this parameter in a Kubernetes environment.)

Ini adalah daftar hitam untuk label kontainer, digunakan untuk mengecualikan kontainer dari pengumpulan. Secara default kosong, artinya tidak ada kontainer yang dikecualikan. Untuk mengatur daftar hitam label kontainer, `LabelKey` wajib diisi, dan `LabelValue` opsional.

  • Jika `LabelValue` kosong, semua kontainer yang labelnya berisi `LabelKey` dikecualikan.

  • Jika `LabelValue` tidak kosong, hanya kontainer yang labelnya berisi `LabelKey=LabelValue` yang dikecualikan.

    `LabelValue` menggunakan pencocokan string secara default. Artinya, `LabelValue` harus persis sama dengan nilai label kontainer. Jika nilai dimulai dengan ^ dan diakhiri dengan $, menggunakan pencocokan ekspresi reguler. Misalnya, atur LabelKey ke io.kubernetes.container.name dan LabelValue ke ^(nginx|cube)$. Ini mencocokkan kontainer bernama nginx atau cube.

Beberapa daftar hitam menggunakan hubungan OR. Jika label kontainer memenuhi entri daftar hitam apa pun, kontainer tersebut dikecualikan.

Environment Variable Whitelist

Ini adalah daftar putih untuk variabel lingkungan, digunakan untuk menentukan kontainer yang akan dikumpulkan. Secara default kosong, artinya semua standard output kontainer dikumpulkan. Untuk mengatur daftar putih variabel lingkungan, `EnvKey` wajib diisi, dan `EnvValue` opsional.

  • Jika `EnvValue` kosong, semua kontainer yang variabel lingkungannya berisi `EnvKey` dicocokkan.

  • Jika `EnvValue` tidak kosong, hanya kontainer yang variabel lingkungannya berisi `EnvKey=EnvValue` yang dicocokkan.

    `EnvValue` menggunakan pencocokan string secara default. Artinya, `EnvValue` harus persis sama dengan nilai variabel lingkungan. Jika nilai dimulai dengan ^ dan diakhiri dengan $, menggunakan pencocokan ekspresi reguler. Misalnya, atur EnvKey ke NGINX_SERVICE_PORT dan EnvValue ke ^(80|6379)$. Ini mencocokkan kontainer dengan port layanan 80 atau 6379.

Beberapa daftar putih menggunakan hubungan OR. Jika variabel lingkungan kontainer memenuhi pasangan kunci-nilai apa pun, kontainer tersebut dicocokkan.

Environment Variable Blacklist

Ini adalah daftar hitam untuk variabel lingkungan, digunakan untuk mengecualikan kontainer dari pengumpulan. Secara default kosong, artinya tidak ada kontainer yang dikecualikan. Untuk mengatur daftar hitam variabel lingkungan, `EnvKey` wajib diisi, dan `EnvValue` opsional.

  • Jika `EnvValue` kosong, log dari semua kontainer yang variabel lingkungannya berisi `EnvKey` dikecualikan.

  • Jika `EnvValue` tidak kosong, hanya kontainer yang variabel lingkungannya berisi `EnvKey=EnvValue` yang dikecualikan.

    `EnvValue` menggunakan pencocokan string secara default. Artinya, `EnvValue` harus persis sama dengan nilai variabel lingkungan. Jika nilai dimulai dengan ^ dan diakhiri dengan $, menggunakan pencocokan ekspresi reguler. Misalnya, atur EnvKey ke NGINX_SERVICE_PORT dan EnvValue ke ^(80|6379)$. Ini mencocokkan kontainer dengan port layanan 80 atau 6379.

Beberapa daftar hitam menggunakan hubungan OR. Jika variabel lingkungan kontainer memenuhi pasangan kunci-nilai apa pun, kontainer tersebut dikecualikan.

Kubernetes Pod Label Whitelist

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

  • Jika `LabelValue` kosong, semua kontainer yang label Kubernetes-nya berisi `LabelKey` dicocokkan.

  • Jika `LabelValue` tidak kosong, hanya kontainer yang label Kubernetes-nya berisi `LabelKey=LabelValue` yang dicocokkan.

    `LabelValue` menggunakan pencocokan string secara default. Artinya, `LabelValue` harus persis sama dengan nilai label Kubernetes. Jika nilai dimulai dengan ^ dan diakhiri dengan $, menggunakan pencocokan ekspresi reguler. Misalnya, atur LabelKey ke app dan LabelValue ke ^(test1|test2)$. Ini mencocokkan kontainer yang label Kubernetes-nya berisi app:test1 atau app:test2.

Beberapa daftar putih menggunakan hubungan OR. Jika label Kubernetes memenuhi entri daftar putih apa pun, kontainer tersebut dicocokkan.

Catatan
  • Perubahan label pada resource control plane Kubernetes (seperti Deployment) tidak me-restart Pod pekerja tertentu. Oleh karena itu, Pod tidak dapat mendeteksi perubahan ini, yang dapat menyebabkan aturan pencocokan gagal. Saat mengatur daftar hitam dan putih label K8s, gunakan label Kubernetes di Pod. Untuk informasi lebih lanjut tentang label Kubernetes, lihat Labels and Selectors.

Kubernetes Pod Label Blacklist

Kecualikan 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 yang label Kubernetes-nya berisi `LabelKey` dikecualikan.

  • Jika `LabelValue` tidak kosong, hanya kontainer yang label Kubernetes-nya berisi `LabelKey=LabelValue` yang dikecualikan.

    `LabelValue` menggunakan pencocokan string secara default. Artinya, `LabelValue` harus persis sama dengan nilai label Kubernetes. Jika nilai dimulai dengan ^ dan diakhiri dengan $, menggunakan pencocokan ekspresi reguler. Misalnya, atur LabelKey ke app dan LabelValue ke ^(test1|test2)$. Ini mencocokkan kontainer yang label Kubernetes-nya berisi app:test1 atau app:test2.

Beberapa daftar hitam menggunakan hubungan OR. Jika label Kubernetes memenuhi entri daftar hitam apa pun, kontainer tersebut dikecualikan.

Catatan
  • Perubahan label pada resource control plane Kubernetes (seperti Deployment) tidak me-restart Pod pekerja tertentu. Oleh karena itu, Pod tidak dapat mendeteksi perubahan ini, yang dapat menyebabkan aturan pencocokan gagal. Saat mengatur daftar hitam dan putih label K8s, gunakan label Kubernetes di Pod. Untuk informasi lebih lanjut tentang label Kubernetes, lihat Labels and Selectors.

Pengayaan Tag Log

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

Environment Variables

Atur bidang ekstensi variabel lingkungan. Layanan Log menambahkan bidang terkait variabel lingkungan ke log. Misalnya, atur Environment Variable Name ke VERSION dan Tag Name ke env_version. Jika kontainer berisi variabel lingkungan VERSION=v1.0.0, informasi ini ditambahkan ke log sebagai bidang __tag__:__env_version__: v1.0.0.

Pod Labels

Atur bidang ekstensi Pod Kubernetes. Layanan Log menambahkan bidang terkait Pod Kubernetes ke log. Misalnya, atur Pod Label Name ke app dan Tag Name ke k8s_pod_app. Jika Kubernetes berisi label app=serviceA, informasi ini ditambahkan ke log sebagai bidang __tag__:__k8s_pod_app__: serviceA.

Encoding File

Pilih format encoding untuk file log.

Ukuran Pengumpulan Awal

Saat konfigurasi pertama kali berlaku, ini adalah ukuran dari akhir file tempat pengumpulan dimulai. Ukuran pengumpulan awal diatur ke 1024 KB.

  • Jika file lebih kecil dari 1024 KB selama pengumpulan awal, pengumpulan dimulai dari awal konten file.

  • Jika file lebih besar dari 1024 KB selama pengumpulan awal, pengumpulan dimulai dari 1024 KB dari akhir file.

Modifikasi First Collection Size di sini. Rentang nilainya adalah 0 hingga 10485760 KB.

Daftar Hitam Pengumpulan

Aktifkan sakelar Collection Blacklist untuk mengonfigurasi daftar hitam. Ini mengabaikan direktori atau file tertentu selama pengumpulan. Mendukung pencocokan penuh dan wildcard untuk nama direktori dan file. Karakter wildcard hanya mendukung tanda bintang (*) dan tanda tanya (?).

Penting
  • Jika Anda menggunakan wildcard di File Path tetapi perlu memfilter beberapa jalur, tentukan jalur lengkap yang sesuai di Collection Blacklist untuk memastikan konfigurasi daftar hitam berlaku.

    Misalnya, jika File Path adalah /home/admin/app*/log/*.log, tetapi Anda ingin memfilter semua subdirektori di bawah /home/admin/app1*, pilih Directory Blacklist dan atur direktori ke /home/admin/app1*/**. Jika Anda mengaturnya ke /home/admin/app1*, daftar hitam tidak akan berlaku.

  • Pencocokan daftar hitam menimbulkan overhead komputasi. Batasi jumlah entri daftar hitam di bawah 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 daftar hitam jalur file, daftar hitam file, dan daftar hitam direktori. Detail sebagai berikut:

File Path Blacklist

  • Pilih File Path Blacklist dan atur jalur ke /home/admin/private*.log. Ini mengabaikan semua file di /home/admin/ yang dimulai dengan "private" dan diakhiri dengan ".log" selama pengumpulan.

  • Pilih File Path Blacklist dan atur jalur ke /home/admin/private*/*_inner.log. Ini mengabaikan file yang diakhiri dengan "_inner.log" di dalam direktori yang dimulai dengan "private" di /home/admin/. Misalnya, file /home/admin/private/app_inner.log diabaikan, dan /home/admin/private/app.log dikumpulkan.

File Blacklist

Pilih File Blacklist dan atur nama file ke app_inner.log. Ini mengabaikan semua file bernama app_inner.log selama pengumpulan.

Directory Blacklist

  • Pilih Directory Blacklist dan atur direktori ke /home/admin/dir1. Ini mengabaikan semua file di direktori /home/admin/dir1 selama pengumpulan.

  • Pilih Directory Blacklist dan atur direktori ke /home/admin/dir*. Ini mengabaikan semua file di subdirektori yang dimulai dengan "dir" di dalam /home/admin/ selama pengumpulan.

  • Pilih Directory Blacklist dan atur direktori ke /home/admin/*/dir. Ini mengabaikan semua file di subdirektori tingkat kedua bernama "dir" di dalam /home/admin/ selama pengumpulan. Misalnya, file di /home/admin/a/dir diabaikan, tetapi file di /home/admin/a/b/dir dikumpulkan.

Izinkan Pengumpulan File Ganda

Secara default, file log hanya dapat cocok dengan satu konfigurasi Logtail. Jika log dalam file perlu dikumpulkan beberapa kali, aktifkan sakelar Allow File to Be Collected for Multiple Times.

Parameter Lanjutan

Untuk fitur lanjutan opsional lainnya terkait plugin input file, lihat CreateLogtailPipelineConfig.

Parameter Konfigurasi Pemrosesan

Item Konfigurasi

Deskripsi

Sampel Log

Berikan sampel log yang akan dikumpulkan. Gunakan log dari skenario aktual Anda. Sampel log membantu mengonfigurasi parameter pemrosesan log dan menyederhanakan konfigurasi. Anda dapat menambahkan beberapa sampel, dengan panjang total tidak melebihi 1500 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 multi-baris: Log multi-baris mencakup beberapa baris berurutan. Bedakan setiap log dari konten log.

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

    • Multi-line JSON: Setiap objek JSON diperluas ke beberapa baris, seperti:

      {
        "name": "John Doe",
        "age": 30,
        "address": {
          "city": "New York",
          "country": "USA"
        }
      }
  • Penanganan kegagalan chunking:

    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 Layanan Log gagal melakukan chunking:

    • Discard: Buang log ini secara langsung.

    • Retain Single Line: Simpan setiap baris teks log sebagai log terpisah, menghasilkan empat log.

Mode Pemrosesan

Processors mencakup Native Processor dan Extended Processor. Untuk informasi lebih lanjut tentang plugin pemrosesan, lihat Penggunaan Plugin Pemrosesan Native dan Ekstensi.

Penting

Batasan plugin pemrosesan didasarkan pada petunjuk konsol.

  • Versi Logtail 2.0:

    • Plugin pemrosesan native dapat digabungkan secara bebas.

    • Plugin pemrosesan native dan ekstensi dapat digunakan bersama. Plugin pemrosesan ekstensi harus muncul setelah semua plugin pemrosesan native.

  • Versi Logtail sebelum 2.0:

    • Tidak mendukung penambahan plugin native dan ekstensi secara bersamaan.

    • Plugin native hanya untuk mengumpulkan log teks. Saat menggunakan plugin native, penuhi persyaratan berikut:

      • Plugin pemrosesan pertama harus berupa plugin parsing ekspresi reguler, plugin parsing delimiter, plugin parsing JSON, plugin parsing NGINX, plugin parsing Apache, atau plugin parsing IIS.

      • Dari plugin pemrosesan kedua hingga terakhir, sertakan paling banyak satu plugin parsing waktu, satu plugin filter, dan beberapa plugin desensitisasi.

    • 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 log asli saat gagal:

        image

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

        Misalnya, jika log asli "content": "{"request_method":"GET", "request_time":"200"}" berhasil diurai, menambahkan bidang asli menambahkan bidang ke log yang diurai. Nama bidang adalah Renamed original field (default-nya adalah nama bidang asli jika kosong), dan nilai bidang adalah log mentah {"request_method":"GET", "request_time":"200"}.

        image