All Products
Search
Document Center

Container Service for Kubernetes:Kumpulkan log kontainer (standard output dan file)

Last Updated:Sep 15, 2026

Deploy LoongCollector dalam mode DaemonSet dan buat konfigurasi pengumpulan di konsol SLS untuk mengkonsentrasikan pengumpulan log kontainer Kubernetes serta mengaktifkan pemrosesan terstruktur guna memungkinkan kueri dan analisis yang efisien.

Persyaratan

  • Lingkungan runtime

    • Mendukung Container Service for Kubernetes (ACK) (edisi managed dan dedicated) serta kluster Kubernetes yang dikelola sendiri.

    • Kubernetes 1.10.0 atau lebih baru yang mendukung Mount propagation: HostToContainer.

    • Runtime kontainer (hanya Docker dan Containerd)

      • Docker:

        • Memerlukan akses ke docker.sock.

        • Pengumpulan standard output hanya mendukung driver log JSON.

        • Hanya mendukung driver penyimpanan overlay dan overlay2. Untuk menggunakan jenis driver penyimpanan lain, mount direktori log secara manual.

      • Containerd: Memerlukan akses ke containerd.sock.

  • Kebutuhan sumber daya: LoongCollector (Logtail) berjalan dengan kelas prioritas tinggi system-cluster-critical. Deploy pada kluster dengan sumber daya terbatas dapat mengusir Pod yang sudah ada.

    • CPU: Cadangkan minimal 0,1 core.

    • Memory: Cadangkan minimal 150 MB untuk komponen pengumpulan dan minimal 100 MB untuk komponen controller.

    • Penggunaan aktual bergantung pada laju pengumpulan, jumlah direktori dan file yang dipantau, serta kemacetan pengiriman. Pastikan penggunaan sumber daya tetap di bawah 80% dari batas yang ditentukan.

  • Persyaratan izin: Untuk melakukan deploy, akun Alibaba Cloud atau Pengguna RAM harus memiliki izin AliyunLogFullAccess.

    Untuk membuat kebijakan kustom dengan izin detail halus, salin izin dari kebijakan sistem AliyunCSManagedLogRolePolicy, lalu berikan kepada Pengguna RAM atau role target.

Konfigurasi pengumpulan

  1. Instal LoongCollector: Deploy LoongCollector dalam mode DaemonSet. Ini memastikan bahwa satu kontainer pengumpulan berjalan di setiap node dalam kluster untuk mengumpulkan log dari semua kontainer di node tersebut.

    Untuk pola Sidecar, gunakan Kumpulkan log teks dari pod Kubernetes (pola Sidecar).
  2. Buat Logstore: Logstore menyimpan log yang dikumpulkan.

  3. Buat dan konfigurasikan aturan pengumpulan log

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

    2. Pemrosesan dan strukturisasi log: Konfigurasikan aturan pemrosesan berdasarkan format log.

      • Log multiline: Tangani entri log yang mencakup beberapa baris, seperti stack exception Java atau traceback Python, dengan mendefinisikan ekspresi reguler baris pertama untuk mengidentifikasi awal setiap entri.

      • Penguraian terstruktur: Konfigurasikan plugin penguraian, seperti ekspresi reguler, delimiter, atau mode NGINX, untuk mengekstrak string mentah menjadi pasangan kunci-nilai terstruktur, sehingga memungkinkan kueri dan analisis yang efisien.

    3. Penyaringan log: Konfigurasikan daftar hitam pengumpulan dan aturan penyaringan konten untuk menyaring data log yang tidak diinginkan. Hal ini membantu mengurangi transmisi dan penyimpanan data berlebihan.

    4. Kategorisasi log: Konfigurasikan topik dan tag log untuk membedakan log dari layanan, kontainer, atau sumber path yang berbeda.

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

  5. Verifikasi dan troubleshooting: Setelah menyelesaikan konfigurasi, verifikasi bahwa log berhasil dikumpulkan. Jika mengalami masalah seperti kegagalan pengumpulan data, kegagalan heartbeat, atau error parsing, lihat FAQ troubleshooting.

Langkah 1: Instal LoongCollector

LoongCollector adalah agen pengumpulan log generasi berikutnya dari Simple Log Service dan penerus Logtail. LoongCollector dan Logtail tidak dapat berjalan bersamaan. Untuk menginstal Logtail, lihat Instal, jalankan, upgrade, dan uninstall Logtail.

Instal LoongCollector menggunakan salah satu metode di bawah ini. Untuk detail parameter, lihat Instalasi dan konfigurasi. Jika LoongCollector atau Logtail sudah terinstal, lanjutkan ke Langkah 2: Buat logstore.

Catatan

Mengubah waktu host saat LoongCollector (Logtail) sedang berjalan dapat menyebabkan pengumpulan duplikat atau kehilangan data.

Kluster ACK

Instal LoongCollector di konsol Container Service for Kubernetes. Secara default, log dikirim ke Proyek Simple Log Service dalam 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 sisi kiri, klik Add-ons.

  4. Di tab Logs and Monitoring, temukan LoongCollector, lalu klik Install.

    Catatan

    Saat membuat kluster, Anda dapat memilih Enable Log Service di halaman Component Configurations. Anda dapat memilih Create Project atau Select Project. Saat menginstal LoongCollector untuk kluster yang sudah ada, kotak dialog instalasi mendukung penentuan nama Proyek menggunakan parameter projectName. Jika dibiarkan kosong, nilai default k8s-log-{cluster_id} akan digunakan.

    Setelah instalasi selesai, Simple Log Service secara otomatis membuat sumber daya berikut di akun saat ini. Anda dapat melihatnya di konsol Simple Log Service.

    Jenis sumber daya

    Nama sumber daya

    Deskripsi

    Project

    k8s-log-${cluster_id}

    Mengisolasi log dari layanan yang berbeda.

    Untuk manajemen log yang fleksibel, Buat Project.

    Kelompok mesin

    k8s-group-${cluster_id}

    Kumpulan node pengumpulan log. Alamat IP node Kubernetes berubah secara dinamis saat kluster diskalakan, sehingga mengidentifikasi kelompok mesin berdasarkan alamat IP dapat menyebabkan kegagalan heartbeat. Oleh karena itu, kelompok mesin dalam skenario Kubernetes menggunakan pengenal kustom. Untuk informasi lebih lanjut, lihat Panduan mengaitkan kelompok mesin dengan konfigurasi pengumpulan.

    Penting

    Komponen LoongCollector tidak membuat logstore bernama config-operation-log. Jika logstore ini sudah ada, LoongCollector tidak akan menulis log ke dalamnya.

Kluster yang dikelola sendiri

  1. Hubungkan ke kluster Kubernetes dan jalankan perintah yang sesuai untuk wilayah 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. Masuk ke direktori loongcollector-custom-k8s-package dan modifikasi file konfigurasi ./loongcollector/values.yaml.

    # ===================== Informasi Wajib =====================
    # Nama Project tempat log dari kluster ini dikirim. Contoh: k8s-log-custom-sd89ehdq
    projectName: ""
    # Wilayah tempat Project berada. Contoh: cn-shanghai
    region: ""
    # UID Akun Alibaba Cloud yang memiliki Project. Sertakan UID dalam tanda kutip (""). Contoh: "123456789"
    aliUid: ""
    # Jenis jaringan. Nilai yang valid: Internet dan Intranet. Nilai default: Internet.
    net: Internet
    # ID AccessKey dan rahasia AccessKey dari akun Alibaba Cloud atau Pengguna RAM. Akun atau Pengguna RAM harus memiliki izin kebijakan sistem AliyunLogFullAccess.
    accessKeyID: ""
    accessKeySecret: ""
    # ID kluster kustom. ID 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 dependensinya:

    bash k8s-custom-install.sh install
  4. Setelah instalasi selesai, verifikasi bahwa komponen berjalan.

    Jika pod gagal dimulai, verifikasi konfigurasi di file values.yaml dan pastikan image yang diperlukan telah 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 melihatnya di konsol Simple Log Service.

    Jenis sumber daya

    Nama sumber daya

    Deskripsi

    Project

    Nilai projectName yang Anda tentukan di file values.yaml

    Mengisolasi log dari layanan yang berbeda.

    Untuk manajemen log yang fleksibel, Buat Project.

    Kelompok mesin

    k8s-group-${cluster_id}

    Kumpulan node pengumpulan log. Alamat IP node Kubernetes berubah secara dinamis saat kluster diskalakan, sehingga mengidentifikasi kelompok mesin berdasarkan alamat IP dapat menyebabkan kegagalan heartbeat. Oleh karena itu, kelompok mesin dalam skenario Kubernetes menggunakan pengenal kustom. Untuk informasi lebih lanjut, lihat Panduan mengaitkan kelompok mesin dengan konfigurasi pengumpulan.

    Penting

    Komponen LoongCollector tidak membuat logstore bernama config-operation-log. Jika logstore ini sudah ada, LoongCollector tidak akan menulis log ke dalamnya.

Langkah 2: Buat logstore

Logstore adalah unit penyimpanan dasar untuk log di SLS.

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

  2. Di panel navigasi sisi kiri, pilih imageLogstores, 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 (Cannot Be Changed): Anda ditagih secara terpisah untuk setiap sumber daya, seperti penyimpanan, indeks, dan operasi baca/tulis. Mode ini cocok untuk kasus penggunaan skala kecil atau ketika penggunaan fitur belum pasti.

      • Pay-by-ingested-data: Anda hanya ditagih berdasarkan volume data mentah yang ditulis. Mode ini menyediakan penyimpanan gratis selama 30 hari dan fitur gratis seperti transformasi data dan pengiriman. Mode ini cocok untuk kasus bisnis dengan periode penyimpanan mendekati 30 hari atau pipeline pemrosesan data yang kompleks.

    • Data Retention Period: Jumlah hari untuk menyimpan log. Nilainya berkisar antara 1 hingga 3.650. Nilai 3.650 menunjukkan retensi permanen. Nilai default adalah 30 hari.

    • Biarkan pengaturan lainnya tetap default dan klik OK. Kelola logstore.

Langkah 3: Konfigurasikan aturan pengumpulan log

Tentukan log mana yang akan dikumpulkan, cara menguraikannya, dan cara menyaring konten, lalu terapkan konfigurasi ke kelompok mesin.

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

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

    • Untuk standard output kontainer, pilih K8s-Standard Output-New.

      Tersedia dua templat, versi baru dan lama, untuk mengumpulkan standard output kontainer. Kami merekomendasikan menggunakan versi baru. Untuk perbandingan versi, lihat Lampiran: Perbandingan versi standard output kontainer baru dan lama.
    • Untuk log teks kluster, pilih Kubernetes-File.

  3. Di bagian Machine Group Configurations, lengkapi konfigurasi lalu klik Next:

    • Scenario: Pilih Docker Containers.

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

    • Dari daftar Source Machine Group, pindahkan kelompok mesin yang dibuat sistem k8s-group-${cluster_id} ke daftar Applied Machine Group.

  4. Di halaman Logtail Configuration, konfigurasikan pengaturan berikut, lalu klik Next.

1. Konfigurasi global dan input

Pada langkah ini, tentukan nama, sumber log, dan cakupan untuk konfigurasi pengumpulan Anda.

Standard output kontainer

Global Configurations

  • Configuration Name: Masukkan nama kustom untuk konfigurasi pengumpulan. Nama harus unik dalam Project dan tidak dapat diubah setelah dibuat. Aturan penamaan:

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

    • Harus diawali dan diakhiri dengan huruf kecil atau angka.

Konfigurasi input

  • Nyalakan toggle Stdout and Stderr dan/atau Standard Error. Keduanya diaktifkan secara default.

    Penting

    Kami tidak merekomendasikan mengaktifkan standard output dan standard error secara bersamaan karena dapat menyebabkan pengumpulan log tidak berurutan.

Log teks kluster

Global Configurations:

  • Configuration Name: Masukkan nama kustom untuk konfigurasi pengumpulan. Nama harus unik dalam Project dan tidak dapat diubah setelah dibuat. Aturan penamaan:

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

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

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

  • File Path: Jalur absolut untuk pengumpulan log.

    • Linux: Harus diawali dengan garis miring (/), seperti /data/mylogs/**/*.log. Path ini menunjukkan semua file yang berakhiran .log di direktori /data/mylogs dan subdirektorinya.

    • Windows: Harus diawali dengan huruf drive, seperti C:\Program Files\Intel\**\*.log.

  • Maximum Directory Monitoring Depth: Kedalaman direktori maksimum yang dapat dicocokkan oleh wildcard ** dalam File Path. Defaultnya adalah 0 (hanya direktori saat ini), dan rentang yang valid adalah 0 hingga 1.000.

    Kami merekomendasikan mengatur nilai ini ke 0 dan mengonfigurasi path ke direktori yang berisi file log.

2. Pemrosesan dan strukturisasi log

Konfigurasikan aturan pemrosesan untuk mengonversi log mentah menjadi data terstruktur yang dapat dicari. Tambahkan contoh log sebelum mengonfigurasi aturan.

Di halaman Logtail Configuration, di area Processor Configurations, klik Add Sample Log dan masukkan konten log yang ingin Anda kumpulkan. Sistem menggunakan contoh ini untuk mengidentifikasi format log dan membantu menghasilkan ekspresi reguler serta aturan penguraian, sehingga menyederhanakan proses konfigurasi.

Kasus penggunaan 1: Proses log multiline

Log seperti stack trace Java dan objek JSON sering kali mencakup beberapa baris. Secara default, log ini dibagi menjadi catatan yang tidak lengkap. Aktifkan mode multiline dan konfigurasikan regex baris pertama untuk menggabungkan baris berurutan menjadi catatan lengkap.

Contoh:

Log mentah yang belum diproses

Dalam mode default, setiap baris dianggap sebagai log terpisah, sehingga stack trace terpecah dan kehilangan konteks.

Dengan mode multiline diaktifkan, ekspresi reguler baris pertama mengidentifikasi log lengkap, sehingga mempertahankan struktur semantisnya.

image

image

image

Prosedur: Di halaman Logtail Configuration, di area Processor Configurations, aktifkan Multi-line Mode.

  • Type: Pilih Custom atau Multi-line JSON.

    • Custom: Jika format log mentah tidak tetap, Anda harus mengonfigurasi Regex to Match First Line guna mengidentifikasi baris awal setiap entri log.

      • Regex to Match First Line: Anda dapat menghasilkannya secara otomatis atau memasukkannya secara manual. Ekspresi harus mencocokkan seluruh baris data. Untuk contoh di atas, regex 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 yang ingin diekstrak lalu klik Generate Regex.

        • Input manual: Klik Manually Enter Regular Expression. Setelah memasukkan ekspresi, klik Validate.

    • Multi-line JSON: Pilih opsi ini ketika log mentah dalam format JSON standar. LoongCollector secara otomatis menangani line break dalam satu entri JSON.

  • Processing Method If Splitting Fails:

    • Discard: Jika segmen teks tidak cocok dengan ekspresi reguler baris pertama, segmen tersebut akan dibuang.

    • Retain Single Line: Teks yang tidak cocok dibagi dan dipertahankan sesuai mode satu baris aslinya.

Kasus penggunaan 2: Strukturisasi log

Ketika log mentah berupa teks tidak terstruktur (misalnya, log akses Nginx), kueri langsung menjadi tidak efisien. LoongCollector menyediakan plugin penguraian yang mengonversi log mentah menjadi pasangan kunci-nilai terstruktur untuk analisis, pemantauan, dan peringatan.

Contoh:

Log mentah yang belum diproses

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 area Processor Configurations halaman Logtail Configuration:

  1. Tambahkan plugin penguraian: Klik Add Processor dan konfigurasikan plugin penguraian regex, delimiter, atau JSON berdasarkan format log Anda. Untuk contoh NGINX ini, pilih Native Processor > Data Parsing (NGINX Mode).

  2. NGINX Log Configuration: salin seluruh definisi log_format dari file konfigurasi server Nginx Anda (nginx.conf) dan 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 di sini harus persis sama dengan format yang menghasilkan log di server; jika tidak, penguraian akan gagal.

  3. Parameter umum: Parameter berikut umum untuk beberapa plugin penguraian data dan berfungsi dengan cara yang sama.

    • Field asli: Menentukan field sumber untuk diuraikan. Defaultnya adalah content, yaitu seluruh entri log yang dikumpulkan.

    • Pertahankan field asli saat gagal: Direkomendasikan. Jika log gagal diuraikan (misalnya, karena ketidakcocokan format), opsi ini mempertahankan konten log asli di field asli yang ditentukan.

    • Pertahankan field asli saat berhasil: Saat dipilih, konten log asli dipertahankan bahkan setelah penguraian berhasil.

3. Penyaringan log

Mengumpulkan log bernilai rendah atau tidak relevan, seperti log level DEBUG atau INFO, membuang penyimpanan, meningkatkan biaya, mengganggu kinerja kueri, dan dapat menimbulkan risiko keamanan. Terapkan kebijakan penyaringan detail halus untuk pengumpulan log yang efisien dan aman.

Penyaringan konten

Saring log berdasarkan konten field, seperti hanya mengumpulkan log dengan level WARNING atau ERROR.

Contoh:

Log mentah yang belum diproses

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 area Processor Configurations halaman Logtail Configuration:

Klik Add Processor dan pilih Native Processor > Data Filtering.

  • Field Name: Field log yang akan disaring.

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

Daftar hitam pengumpulan

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

Prosedur: Di halaman Logtail Configuration, navigasikan ke area Input Configurations > Other Input Configurations, aktifkan Collection Blacklist, lalu klik Add.

Mendukung pencocokan eksak dan wildcard untuk direktori dan nama file. Wildcard yang didukung hanya tanda bintang (*) dan tanda tanya (?).
  • File Path Blacklist: Path file yang akan diabaikan. Contoh:

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

    • /home/admin/private*/*_inner.log: Mengabaikan file yang diakhiri dengan "_inner.log" yang berada di subdirektori yang diawali dengan "private" di bawah direktori /home/admin/.

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

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

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

    • /home/admin/dir1/: Daftar hitam direktori tidak akan berlaku.

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

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

Penyaringan kontainer

Tentukan 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 area Input Configurations halaman Logtail Configuration, aktifkan Container Filtering lalu klik Add.

Beberapa kondisi digabungkan dengan logika "DAN". Semua pencocokan ekspresi reguler berbasis mesin RE2 Go, yang memiliki keterbatasan dibandingkan mesin seperti PCRE. Pastikan ekspresi Anda mematuhi Lampiran: Batasan Penggunaan Ekspresi Reguler (Penyaringan Kontainer).
  • Daftar Hitam/Putih Variabel Lingkungan: Saring kontainer berdasarkan variabel lingkungannya.

  • Daftar Hitam/Putih Label Pod K8s: Saring Pod berdasarkan labelnya.

  • Pencocokan Regex Nama Pod K8s: Kumpulkan log dari Pod yang namanya cocok dengan ekspresi reguler yang ditentukan.

  • Pencocokan Regex Namespace K8s: Pilih kontainer untuk pengumpulan berdasarkan nama namespace.

  • Pencocokan Regex Nama Kontainer K8s: Kumpulkan log dari kontainer yang namanya cocok dengan ekspresi reguler yang ditentukan.

  • Daftar Hitam/Putih Label Kontainer: Kumpulkan log dari kontainer dengan label yang cocok. Ini ditujukan untuk skenario Docker dan tidak direkomendasikan untuk skenario K8s.

4. Kategorisasi log

Dalam skenario di mana beberapa aplikasi berbagi format log yang sama, membedakan sumbernya menjadi sulit. Konfigurasikan topik dan tag log untuk mengaktifkan asosiasi konteks otomatis dan kategorisasi logis.

Topik log

Ketika beberapa aplikasi atau instans berbagi format log tetapi memiliki path berbeda (misalnya, /apps/app-A/run.log dan /apps/app-B/run.log), membedakan sumbernya menjadi sulit. Untuk mengatasi ini, Anda dapat menghasilkan topik log berdasarkan kelompok mesin, nama kustom, atau ekstraksi path file untuk membedakan log dari berbagai sumber bisnis atau path.

Prosedur: Navigasikan ke Global Configurations > Other Global Configurations > Log Topic Type lalu pilih metode pembuatan topik dari tiga opsi berikut:

  • Topik kelompok mesin: Ketika konfigurasi pengumpulan diterapkan ke beberapa kelompok mesin, LoongCollector secara otomatis menggunakan nama kelompok mesin sebagai nilai field __topic__. Ini cocok untuk skenario di mana log dikategorikan berdasarkan kluster host.

  • Custom: Formatnya adalah customized://<nama_topik_kustom>, misalnya, customized://app-login. Ini cocok untuk skenario topik statis dengan pengenal bisnis tetap.

  • Ekstraksi path file: Mengekstrak informasi kunci dari path lengkap file log untuk menandai sumber log secara dinamis. Ini cocok ketika beberapa pengguna atau aplikasi berbagi nama file log yang sama tetapi memiliki path berbeda.

    Ketika beberapa pengguna atau layanan menulis log ke direktori tingkat atas berbeda dengan sub-path dan nama file identik, sumbernya tidak dapat dibedakan hanya berdasarkan nama file. Misalnya:

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

    Dalam kasus ini, Anda dapat mengonfigurasi ekstraksi path file dan menggunakan ekspresi reguler untuk mengekstrak informasi kunci dari path lengkap. Hasil yang cocok kemudian diunggah ke Logstore sebagai topik log.

    Aturan ekstraksi: Grup penangkapan regex

    Ketika Anda mengonfigurasi ekspresi reguler, sistem secara otomatis menentukan format field output berdasarkan jumlah dan penamaan grup penangkapan, sebagai berikut:

    Dalam ekspresi reguler untuk path file, garis miring (/) harus di-escape.

    Tipe kelompok penangkap

    Kasus penggunaan

    Field yang dihasilkan

    Contoh regex

    Contoh path

    Field yang dihasilkan

    Grup penangkapan tunggal (satu (.*?))

    Diperlukan satu dimensi untuk membedakan sumber (misalnya, nama pengguna, lingkungan).

    Menghasilkan field __topic__.

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

    /logs/userA/app.log

    __topic__:userA

    Beberapa grup penangkapan tanpa nama (beberapa (.*?))

    Diperlukan beberapa dimensi tetapi tanpa label semantis.

    Menghasilkan field Tag diformat sebagai __tag__:__topic_{i}__:value, di mana {i} adalah indeks 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>.*?))

    Diperlukan beberapa dimensi dengan nama field semantis yang jelas untuk memudahkan kueri dan analisis.

    Menghasilkan field Tag diformat sebagai __tag__:{name}:value.

    \/logs\/(?P<user>.*?)\/(?P<service>.*?)\/app\.log

    /logs/userA/svcA/app.log

    __tag__:user:userA;

    __tag__:service:svcA

Tagging log

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

Prosedur: Di halaman Logtail Configuration, di area Input Configurations, aktifkan Log Tag Enrichment lalu klik Add.

  • Environment Variables: Konfigurasikan nama variabel lingkungan dan kunci Tag. Nilai variabel lingkungan akan disimpan sebagai nilai Tag.

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

    • Kunci Tag: Kunci untuk Tag baru.

  • Pod Labels: Konfigurasikan kunci label Pod dan kunci Tag. Nilai label Pod akan disimpan sebagai nilai Tag.

    • Kunci label Pod: Kunci label Pod Kubernetes yang akan diekstrak.

    • Kunci Tag: Kunci untuk Tag baru.

5. Konfigurasi output

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

Distribusi multi-tujuan dinamis

Penting
  • Distribusi multi-tujuan dinamis hanya tersedia untuk LoongCollector 3.0.0 dan lebih baru. Fitur ini tidak didukung oleh Logtail.

  • Anda dapat mengonfigurasi maksimal lima tujuan output.

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

Prosedur: Di halaman Logtail Configuration, di area Output Configurations:

  1. Klik image untuk memperluas konfigurasi output.

  2. Klik Add Output Targets dan lengkapi konfigurasi berikut:

    • Logstores: Pilih Logstore target.

    • Compression Method: Mendukung lz4 dan zstd.

    • Route Settings: Rute log berdasarkan field Tag. Log yang cocok dengan konfigurasi routing dikirim ke Logstore target. Jika dibiarkan kosong, semua log yang dikumpulkan dikirim ke Logstore target.

      • Tag Name: Kunci Tag yang digunakan untuk routing. Masukkan kunci secara langsung (misalnya, __path__) tanpa awalan __tag__:. Field Tag terbagi menjadi dua kategori:

        Tag dijelaskan di Kelola Tag Pengumpulan LoongCollector.
        • Terkait agen: Dihasilkan oleh agen pengumpulan dan tidak bergantung pada plugin apa pun. Contohnya termasuk __hostname__ dan __user_defined_id__.

        • Terkait plugin input: Disediakan dan diperkaya oleh plugin input. Contohnya termasuk __path__ dari pengumpulan file dan _pod_name_ atau _container_name_ dari pengumpulan K8s.

      • Tag Value: Log yang nilai Tag-nya cocok dengan pengaturan ini dikirim ke Logstore target.

      • Discard this tag?: Jika diaktifkan, field Tag ini tidak akan disertakan dalam log yang diunggah.

Langkah 4: Kueri dan analisis

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

  • Secara default, sistem mengaktifkan indeks teks penuh, yang memungkinkan Anda mencari konten log mentah berdasarkan kata kunci.

  • Untuk mengkueri data berdasarkan field tertentu, klik Automatic Index Generation setelah Preview Data dimuat. Layanan Log menghasilkan indeks bidang berdasarkan entri log pertama dalam data pratinjau.

Setelah menyelesaikan konfigurasi, klik Next untuk menyelesaikan proses pengumpulan.

Langkah 5: Validasi dan troubleshooting

Setelah membuat dan menerapkan konfigurasi pengumpulan ke kelompok mesin, sistem secara otomatis menerapkannya dan mulai mengumpulkan log inkremental.

Lihat log yang dikumpulkan

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

  2. Cari log: Buka halaman Search & Analyze Logstore target. Klik Search & Analyze. Rentang waktu default adalah 15 menit terakhir. Periksa apakah log baru telah diingest. Setiap log teks kontainer yang dikumpulkan mencakup field berikut secara default:

    Parameter

    Deskripsi

    __tag__:__hostname__

    Nama host kontainer.

    __tag__:__path__

    Path file log di dalam kontainer.

    __tag__:_container_ip_

    Alamat IP kontainer.

    __tag__:_image_name_

    Nama image yang digunakan oleh kontainer.

    __tag__:_pod_name_

    Nama Pod.

    __tag__:_namespace_

    Namespace Pod.

    __tag__:_pod_uid_

    Pengenal unik (UID) Pod.

Melihat riwayat node sebuah Pod

Jika Pod mengalami drift atau restart, Anda dapat mengkueri log event Kubernetes kluster ACK Anda di Simple Log Service untuk menemukan node tempat Pod tersebut sebelumnya berjalan.

  1. Masuk ke konsol Simple Log Service dan temukan proyek k8s-log-{cluster_id} di daftar proyek.

  2. Klik LogStore k8s-event untuk membuka halaman kueri dan analisis.

  3. Di kotak pencarian, masukkan pernyataan kueri yang menyaring berdasarkan nama Pod, misalnya, pod_name: my-pod, lalu klik Search & Analyze.

  4. Di hasil yang dikembalikan, periksa nilai field hostname. Nilai ini adalah hostname node tempat Pod berjalan.

Catatan

Di LogStore k8s-event, nama field adalah pod_name dan hostname, tanpa awalan __tag__:. Format awalan __tag__: berlaku untuk pengumpulan stdout kontainer dan log teks, bukan untuk log event Kubernetes.

Atasi masalah umum

Kegagalan heartbeat kelompok mesin

  1. Periksa pengenal pengguna: Jika server Anda bukan instans ECS, atau jika instans ECS dan Proyek milik akun Alibaba Cloud yang berbeda, pastikan pengenal pengguna yang benar ada di direktori yang ditentukan.

    • Di Linux, jalankan perintah cd /etc/ilogtail/users/ && touch <uid> untuk membuat file pengenal pengguna.

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

    Pengenal pengguna dikonfigurasi dengan benar jika path yang ditentukan berisi file yang namanya adalah ID akun Alibaba Cloud dari Proyek saat ini.

  2. Periksa pengenal kelompok mesin: Jika Anda menggunakan pengenal kustom untuk kelompok mesin, periksa apakah file user_defined_id ada di direktori yang ditentukan. Jika file ada, periksa apakah isinya cocok dengan pengenal kustom yang dikonfigurasi untuk kelompok mesin.

    • Linux:

      # Konfigurasikan pengenal 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 pengenal kustom ke dalam file tersebut. (Jika direktori tidak ada, buat secara manual.)

  3. Jika pengenal pengguna dan pengenal kelompok mesin dikonfigurasi dengan benar, lihat Troubleshooting kelompok mesin LoongCollector (Logtail) untuk troubleshooting lebih lanjut.


Error pengumpulan log atau error format

Masalah ini biasanya terjadi ketika koneksi jaringan dan konfigurasi dasar Anda benar, tetapi konten log tidak cocok dengan aturan penguraian. Untuk mendiagnosis masalah, lihat pesan error spesifik:

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

  2. Di bagian , lihat jenis alert dari log error dan rujuk ke Jenis error umum untuk pengumpulan data untuk menemukan solusi yang sesuai.

Langkah selanjutnya

  1. Kueri dan analisis log:

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

  3. Peringatan anomali data: Siapkan kebijakan peringatan untuk mendeteksi anomali data secara real-time.

Troubleshooting pengumpulan log kontainer

  1. Verifikasi bahwa log baru sedang dihasilkan di file log target. Logtail tidak mengumpulkan data sampai log baru muncul.

2. Periksa log runtime Logtail

  1. Masuk ke kontainer Logtail:

    1. Kueri pod Logtail.

      kubectl get po -n kube-system | grep logtail

      Outputnya 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

      Ganti logtail-ds-****d dengan ID pod aktual Anda.

  1. Periksa log runtime Logtail:

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

    # Masuk ke direktori /usr/local/ilogtail/.
    cd /usr/local/ilogtail
    
    # Lihat file ilogtail.LOG dan logtail_plugin.LOG.
    cat ilogtail.LOG
    cat logtail_plugin.LOG

    Periksa log error untuk jenis alert dan temukan solusi yang sesuai di Error umum dalam pengumpulan data Simple Log Service.

3. Periksa heartbeat kelompok mesin

Buka halaman Resource Group > Machine Groups lalu klik nama kelompok mesin target. Di bagian Machine Group Configurations > Machine Group Status, lihat status Heartbeat dan catat jumlah node yang memiliki status "OK".

  1. Periksa jumlah node pekerja di kluster kontainer.

    1. Hubungkan ke kluster ACK menggunakan kubectl.

    2. Periksa jumlah node pekerja di kluster.

      kubectl get node | grep -v master

      Outputnya 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. Bandingkan jumlah node dengan status heartbeat OK dengan jumlah node pekerja di kluster kontainer. Lalu, ikuti langkah troubleshooting yang sesuai berdasarkan hasilnya.

    • Status heartbeat semua node di kelompok mesin adalah Gagal:

      • Untuk kluster yang dikelola sendiri, verifikasi bahwa parameter {regionId}, {aliuid}, {access-key-id}, dan {access-key-secret} benar.

        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.

      • Periksa apakah DaemonSet dideploy secara manual menggunakan file YAML.

        1. Jalankan perintah berikut. Jika ada hasil yang dikembalikan, berarti DaemonSet sebelumnya dideploy 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} dengan nilai aktual Anda.

        4. Perbarui resource.

          kubectl apply -f ./logtail-daemonset.yaml

4. Periksa filter pengumpulan

Di konsol SLS, periksa konfigurasi pengumpulan Logtail. Verifikasi bahwa pengaturan IncludeLabel, ExcludeLabel, IncludeEnv, dan ExcludeEnv dalam konfigurasi Logtail memenuhi kebutuhan pengumpulan Anda.

  • Dalam konteks ini, "label" mengacu pada label kontainer dari output inspect Docker, bukan label Kubernetes.

  • Untuk menguji filter Anda, hapus sementara pengaturan IncludeLabel, ExcludeLabel, IncludeEnv, dan ExcludeEnv lalu periksa apakah log dikumpulkan. Jika iya, konfigurasi filter Anda salah.

FAQ

Kelola konfigurasi distribusi multi-tujuan

Karena konfigurasi distribusi multi-tujuan berlaku untuk beberapa logstore, kelola dari halaman manajemen tingkat Project:

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

  2. Di halaman Project, di panel navigasi sisi kiri, klik imageResource Group > Configurations.

    Catatan

    Halaman ini mengelola semua konfigurasi pengumpulan dalam Project, termasuk konfigurasi untuk logstore yang tidak sengaja dihapus.

Kirim log ACK ke Project lintas akun

Anda dapat mengirim log kontainer ke Project Simple Log Service (SLS) di akun Alibaba Cloud lain dengan menginstal komponen LoongCollector (Logtail) secara manual di kluster ACK dan mengonfigurasinya dengan ID akun Alibaba Cloud target atau kredensial akses (AccessKey).

Deskripsi skenario: Jika Anda perlu mengumpulkan data log ke Project SLS akun lain untuk keperluan organisasi, izin, atau pemantauan, instal LoongCollector (Logtail) secara manual untuk mengaktifkan pengumpulan lintas akun.

Prosedur: Ikuti langkah-langkah berikut untuk menginstal LoongCollector secara manual. Untuk informasi tentang cara menginstal Logtail, lihat Instal dan konfigurasikan Logtail.

  1. Hubungkan ke kluster Kubernetes dan jalankan perintah yang sesuai untuk wilayah 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. Masuk ke direktori loongcollector-custom-k8s-package dan modifikasi file konfigurasi ./loongcollector/values.yaml.

    # ===================== Informasi Wajib =====================
    # Nama Project tempat log dari kluster ini dikirim. Contoh: k8s-log-custom-sd89ehdq
    projectName: ""
    # Wilayah tempat Project berada. Contoh: cn-shanghai
    region: ""
    # UID Akun Alibaba Cloud yang memiliki Project. Sertakan UID dalam tanda kutip (""). Contoh: "123456789"
    aliUid: ""
    # Jenis jaringan. Nilai yang valid: Internet dan Intranet. Nilai default: Internet.
    net: Internet
    # ID AccessKey dan rahasia AccessKey dari akun Alibaba Cloud atau Pengguna RAM. Akun atau Pengguna RAM harus memiliki izin kebijakan sistem AliyunLogFullAccess.
    accessKeyID: ""
    accessKeySecret: ""
    # ID kluster kustom. ID 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 dependensinya:

    bash k8s-custom-install.sh install
  4. Setelah instalasi selesai, verifikasi bahwa komponen berjalan.

    Jika pod gagal dimulai, verifikasi konfigurasi di file values.yaml dan pastikan image yang diperlukan telah 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 melihatnya di konsol Simple Log Service.

    Jenis sumber daya

    Nama sumber daya

    Deskripsi

    Project

    Nilai projectName yang Anda tentukan di file values.yaml

    Mengisolasi log dari layanan yang berbeda.

    Untuk manajemen log yang fleksibel, Buat Project.

    Kelompok mesin

    k8s-group-${cluster_id}

    Kumpulan node pengumpulan log. Alamat IP node Kubernetes berubah secara dinamis saat kluster diskalakan, sehingga mengidentifikasi kelompok mesin berdasarkan alamat IP dapat menyebabkan kegagalan heartbeat. Oleh karena itu, kelompok mesin dalam skenario Kubernetes menggunakan pengenal kustom. Untuk informasi lebih lanjut, lihat Panduan mengaitkan kelompok mesin dengan konfigurasi pengumpulan.

    Penting

    Komponen LoongCollector tidak membuat logstore bernama config-operation-log. Jika logstore ini sudah ada, LoongCollector tidak akan menulis log ke dalamnya.

Gunakan beberapa konfigurasi untuk sumber yang sama

Secara default, untuk mencegah duplikasi data, Simple Log Service (SLS) hanya mengizinkan satu konfigurasi pengumpulan untuk mengumpulkan log dari setiap sumber:

  • File log teks hanya dapat cocok dengan satu konfigurasi pengumpulan Logtail.

  • Standard output (stdout) kontainer:

    • Jika Anda menggunakan templat standard output versi baru, stdout hanya dapat dikumpulkan oleh satu konfigurasi pengumpulan standard output secara default.

    • Jika Anda menggunakan templat standard output versi lama, tidak diperlukan konfigurasi tambahan, dan pengumpulan ganda didukung secara default.

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

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

  3. Klik ikon image di sebelah nama logstore untuk memperluasnya.

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

  5. Di halaman konfigurasi Logtail, klik Edit lalu gulir 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.

Error dependensi saat menguninstall loongcollector

Masalah: Saat mencoba menguninstall komponen loongcollector (logtail-ds) di Container Service for Kubernetes (ACK), Anda menerima error bahwa dependensi komponen tidak terpenuhi.

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 pengumpulan log, yang menciptakan dependensi pada komponen loongcollector (logtail-ds). Oleh karena itu, ACK tidak mengizinkan Anda menguninstall loongcollector (logtail-ds) sampai Anda menghapus dependensi ini.

Solusi: Ikuti langkah-langkah berikut untuk menghapus dependensi lalu menguninstall komponen:

  1. Masuk ke konsol ACK.

  2. Di daftar kluster, klik nama kluster target untuk membuka halaman detailnya.

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

  4. Di daftar add-on, cari komponen terway-eniip lalu klik Disable Logging.

  5. Di kotak dialog yang muncul, klik OK.

  6. Setelah konfigurasi diterapkan, coba uninstall komponen loongcollector (logtail-ds) lagi.

Entri log terakhir tertunda atau terpotong

Penyebab: Pemotongan log biasanya terjadi ketika file log tidak memiliki line feed di akhir, atau ketika entri log multiline, seperti stack exception, belum ditulis sepenuhnya. Karena collector tidak dapat menentukan apakah entri log sudah lengkap, entri log terakhir mungkin terbagi atau tertunda. Cara penanganannya tergantung pada versi LoongCollector (Logtail) Anda:

  • Versi sebelum 1.8:
    Jika baris terakhir log tidak memiliki line feed (carriage return), atau jika blok log multiline tidak lengkap, collector menunggu operasi penulisan berikutnya untuk memicu output. Hal ini dapat sangat menunda entri log terakhir sampai log baru ditulis.



  • Versi 1.8 dan lebih baru:
    Versi ini memperkenalkan mekanisme flush timeout untuk mencegah log macet. Ketika baris log yang tidak lengkap terdeteksi, sistem memulai timer. Setelah periode timeout berakhir, konten saat ini secara otomatis dikirimkan untuk memastikan log akhirnya dikumpulkan.



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

    • Anda dapat menyesuaikan nilai ini berdasarkan kebutuhan Anda. Namun, kami merekomendasikan agar Anda tidak mengaturnya ke 0 karena dapat menyebabkan pemotongan log atau kehilangan data parsial.

Solusi:

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

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

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

  3. Klik ikon image di sebelah nama logstore untuk memperluasnya.

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

  5. Di halaman konfigurasi Logtail, klik Edit.

    • Buka Input Configurations > Other Input Configurations > Advanced Parameters lalu 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 direkomendasikan: ≥ 1 detik. Kami merekomendasikan agar Anda tidak mengaturnya ke 0 karena dapat menyebabkan pemotongan log atau kehilangan data parsial.

  6. Setelah menyelesaikan konfigurasi, klik OK.

Failover dan pemulihan jaringan LoongCollector

Jika LoongCollector (Logtail) mendeteksi masalah konektivitas jaringan internal, seperti kegagalan atau timeout, sistem secara otomatis beralih ke jaringan publik. Mekanisme failover ini memastikan pengumpulan log yang andal dan mencegah penumpukan atau kehilangan data.

  • LoongCollector: Secara otomatis beralih kembali ke jaringan internal setelah jaringan pulih.

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

Lampiran: Prosesor native

Di halaman Logtail Configuration, di area Processor Configurations, Anda dapat menambahkan plugin pemrosesan untuk mengstrukturisasi log mentah. Untuk menambahkan plugin pemrosesan ke konfigurasi pengumpulan yang sudah ada, Anda dapat mengikuti langkah-langkah berikut:

  1. Di panel navigasi kiri, pilih imageLogstore dan temukan Logstore tujuan.

  2. Klik image di sebelah kiri nama Logstore untuk memperluasnya.

  3. Klik Logtail Configuration. Di daftar konfigurasi, temukan konfigurasi Logtail tujuan lalu 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 skenario pemrosesan log umum. Untuk fitur lainnya, lihat Plugin pemrosesan ekstensi.
Penting

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

  • Plugin pemrosesan native dan ekstensi dapat digunakan secara independen atau dikombinasikan sesuai kebutuhan.

  • Kami merekomendasikan agar Anda menggunakan plugin pemrosesan native terlebih dahulu karena menawarkan kinerja dan stabilitas yang lebih baik.

  • Ketika fitur native tidak dapat memenuhi kebutuhan bisnis, Anda dapat menambahkan plugin pemrosesan ekstensi setelah plugin native yang dikonfigurasi untuk melakukan pemrosesan tambahan.

Batasan urutan:

Semua plugin dieksekusi 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

Prosesor ini menggunakan ekspresi reguler untuk menguraikan log menjadi pasangan kunci-nilai. Anda kemudian dapat mengkueri dan menganalisis setiap field yang diekstrak secara independen.

Contoh:

Log mentah

Hasil penguraian

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-langkah: Di halaman Logtail Configuration, di area Processor Configurations, klik Add Processor, lalu pilih Native Processor > Data Parsing (Regex Mode):

  • Regular Expression: Mencocokkan entri log. Anda dapat menghasilkannya secara otomatis atau memasukkannya secara manual.

    • Untuk menghasilkan ekspresi reguler secara otomatis:

      • Klik Generate Regular Expression.

      • Di kotak Log Sample, sorot konten yang ingin diekstrak.

      • Klik Generate.

        image

    • Masukkan ekspresi reguler secara manual berdasarkan format log Anda.

    Setelah mengonfigurasi ekspresi, klik Validate untuk menguji apakah ekspresi tersebut menguraikan contoh log Anda dengan benar.

  • Extracted Field: Tetapkan nama (kunci) untuk konten yang diekstrak (nilai).

  • Untuk informasi tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log terstruktur.


Penguraian delimiter

Prosesor ini menggunakan delimiter untuk menguraikan log menjadi pasangan kunci-nilai. Anda dapat menggunakan delimiter karakter tunggal atau multi-karakter.

Contoh:

Log mentah

Menggunakan karakter yang ditentukan, untuk memisahkan field

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 Configuration, di area Processor Configurations, klik Add Processor, lalu pilih Native Processor > Data Parsing (Delimiter Mode):

  • Delimiter: Karakter yang memisahkan field dalam log.

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

  • Quote: Karakter yang digunakan untuk mengapit nilai field. Ini diperlukan jika nilai field mungkin berisi delimiter, karena mencegah pemisahan yang salah.

  • Extracted Field: Tetapkan nama field (Kunci) untuk setiap kolom secara berurutan. Nama field harus mematuhi aturan berikut:

    • Hanya boleh berisi huruf, angka, dan garis bawah (_).

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

    • Panjang maksimum: 128 byte.

  • Untuk informasi tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log terstruktur.


Penguraian JSON standar

Prosesor ini menguraikan entri log yang merupakan objek JSON menjadi pasangan kunci-nilai.

Contoh:

Log mentah

Hasil penguraian

{"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 Configuration, di bagian Processor Configurations, klik Add Processor, lalu pilih Native Processor > Data Parsing (JSON Mode):

  • Original Field: Nilai defaultnya adalah content. Field ini menyimpan konten log mentah yang akan diuraikan.

  • Untuk informasi tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log terstruktur.


Penguraian JSON bersarang

Prosesor ini memperluas objek JSON bersarang menjadi pasangan kunci-nilai. Anda mengontrol ekspansi dengan pengaturan Kedalaman ekspansi JSON.

Contoh:

Log mentah

Hasil (kedalaman: 0)

Hasil (kedalaman: 1)

{"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 Configuration, di bagian Processor Configurations, klik Add Processor, lalu pilih Extended Processor > Expand JSON Field:

  • Original Field: Nama field asli yang akan diperluas, seperti content.

  • JSON Expansion Depth: Jumlah level yang akan diperluas dalam objek JSON. 0 memperluas semua level (default), 1 hanya memperluas level teratas, dan seterusnya.

  • Character to Concatenate Expanded Keys: Karakter yang digunakan untuk menggabungkan kunci dari objek bersarang. Defaultnya adalah garis bawah (_).

  • Name Prefix of Expanded Keys: Awalan yang ditambahkan ke nama setiap kunci yang diperluas.

  • Expand Array: Aktifkan opsi ini untuk memperluas array menjadi pasangan kunci-nilai yang diindeks.

    Contohnya, {"k":["a","b"]} diperluas menjadi  {"k[0]":"a","k[1]":"b"}.

    Untuk mengganti nama field yang diperluas (misalnya, dari prefix_s_key_k1 ke new_field_name), tambahkan prosesor Rename Fields setelah prosesor ini.
  • Untuk informasi tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log terstruktur.


Penguraian array JSON

Gunakan fungsi json_extract untuk mengekstrak objek JSON dari array JSON.

Contoh:

Log mentah

Hasil penguraian

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

Prosedur: Di halaman Logtail Configuration, di bagian Processor Configurations, atur Processing Method ke SPL. Lalu, konfigurasikan Pernyataan SPL untuk menggunakan fungsi json_extract guna mengekstrak objek JSON dari array JSON.

Contoh: Dari field log content, ekstrak elemen dari array JSON dan simpan hasilnya masing-masing di field baru json1 dan json2.

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

Penguraian log Apache

Prosesor ini menguraikan log akses Apache menjadi pasangan kunci-nilai berdasarkan direktif LogFormat Apache Anda.

Contoh:

Log mentah

Penguraian format log Apache Common combined

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 Configuration, di bagian Processor Configurations, klik Add Processor, lalu pilih Native Processor > Data Parsing (Apache Mode):

  • Log Format: combined

  • APACHE LogFormat Configuration: Sistem secara otomatis mengisi field ini berdasarkan Log Format yang dipilih.

    Penting

    Verifikasi bahwa konten yang diisi otomatis identik dengan direktif LogFormat yang ditentukan dalam file konfigurasi server Apache Anda, yang biasanya berada di /etc/apache2/apache2.conf.

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


Penyembunyian data

Sembunyikan data sensitif dalam log Anda.

Contoh:

Log mentah

Hasil penyembunyian

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

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

  • Original Field: Field sumber yang berisi konten yang akan disembunyikan.

  • Data Masking Method:

    • const: Mengganti konten sensitif dengan string yang ditentukan.

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

  • Replacement String: String yang digunakan untuk penyembunyian. Ini diperlukan ketika Data Masking Method diatur ke const.

  • Content Expression that Precedes Replaced Content: Ekspresi reguler dalam sintaks RE2 untuk menemukan konten tepat sebelum data sensitif.

  • Content Expression to Match Replaced Content: Ekspresi reguler dalam sintaks RE2 untuk mencocokkan data sensitif yang ingin Anda ganti.


Penguraian waktu

Menguraikan field waktu dalam log dan mengatur hasil penguraian sebagai field __time__ log.

Contoh:

Log mentah

Hasil penguraian

{"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 Configuration, di bagian Processor Configurations, klik Add Processor, lalu pilih Native Processor > Time Parsing:

  • Original Field: Field sumber yang berisi string waktu untuk diuraikan.

  • Time Format: format waktu yang sesuai dengan string waktu dalam log Anda.

  • Time Zone: Zona waktu field waktu log. Jika tidak ditentukan, defaultnya adalah zona waktu mesin yang menjalankan LoongCollector (Logtail).

Lampiran: Batasan ekspresi reguler (penyaringan kontainer)

Ekspresi reguler untuk penyaringan kontainer menggunakan mesin RE2 Go. Dibandingkan dengan mesin lain seperti PCRE, mesin RE2 memiliki beberapa batasan sintaks. Ingat hal-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

Mesin RE2 tidak mendukung fitur ekspresi reguler umum berikut yang kompleks. Hindari penggunaannya:

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

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

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

  • Referensi subprogram: (?&name) dan (?P>name)

  • Grup atomik: (?>...)

3. Rekomendasi

Gunakan alat seperti Regex101 untuk men-debug ekspresi reguler Anda. Untuk memastikan kompatibilitas, pilih mode Golang (RE2) untuk validasi. Jika Anda menggunakan sintaks yang tidak didukung, plugin tidak akan dapat menguraikan atau mencocokkan ekspresi tersebut.

Lampiran: Perbandingan versi standard output kontainer

Untuk meningkatkan efisiensi penyimpanan dan konsistensi pengumpulan, format metadata log untuk standard output kontainer telah ditingkatkan. Format baru mengkonsolidasikan metadata di bawah field __tag__, yang mengoptimalkan penyimpanan dan menstandarkan format.

Keunggulan utama standard output baru

  • Kinerja yang jauh lebih baik

  • Direkayasa ulang dalam C++, versi baru memberikan peningkatan kinerja 180% hingga 300% dibandingkan implementasi Go sebelumnya.

  • Mendukung pemrosesan data dengan plugin native dan pemrosesan paralel multi-threading, yang sepenuhnya memanfaatkan sumber daya sistem.

  • Mendukung kombinasi fleksibel plugin native dan plugin Go untuk memenuhi kebutuhan skenario kompleks.

  • Keandalan yang lebih kuat

  • Mendukung antrian rotasi untuk log standard output dan menyatukan mekanisme pengumpulan log dengan mekanisme pengumpulan file, yang memberikan keandalan tinggi saat log standard output berotasi dengan cepat.

  • Konsumsi sumber daya yang lebih rendah

  • Penggunaan CPU berkurang 20% hingga 25%.

  • Penggunaan memori 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 field metadata kontainer dan lokasi penyimpanan tag disatukan dengan skenario pengumpulan file, sehingga sisi konsumen hanya perlu mempertahankan satu set logika pemrosesan.

Perbandingan fitur versi baru dan lama

Fitur

Versi lama

Versi baru

Metode penyimpanan

Metadata disematkan dalam konten log sebagai field biasa.

Metadata dikonsolidasikan di bawah tag __tag__.

Efisiensi penyimpanan

Setiap entri log membawa salinan lengkap metadata, yang mengonsumsi lebih banyak ruang penyimpanan.

Beberapa entri log dalam konteks yang sama dapat menggunakan kembali metadata, yang menghemat biaya penyimpanan.

Konsistensi format

Format tidak konsisten dengan format pengumpulan file kontainer.

Penamaan field dan struktur penyimpanan sepenuhnya selaras dengan pengumpulan file kontainer, yang memberikan pengalaman terpadu.

Metode akses kueri

Anda dapat mengkueri metadata langsung berdasarkan nama field, seperti _container_name_.

Anda harus mengakses pasangan kunci-nilai yang sesuai melalui __tag__, seperti __tag__: _container_name_.

Pemetaan field metadata kontainer

Nama field lama

Nama field 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 field metadata disimpan di bagian tag log dalam format __tag__:<kunci> alih-alih disematkan dalam konten log.

Dampak versi baru terhadap pengguna

  • Adaptasi sisi konsumen: Karena lokasi penyimpanan berubah dari konten ke tag, Anda harus menyesuaikan logika konsumsi log Anda. Misalnya, Anda harus mengakses field melalui __tag__ saat menjalankan kueri.

  • Kompatibilitas SQL: SQL kueri sudah secara otomatis kompatibel dengan kedua versi, sehingga Anda tidak perlu memodifikasi pernyataan kueri Anda untuk memproses log dari versi mana pun.

Informasi lebih lanjut

Parameter global

Parameter

Deskripsi

Nama konfigurasi

Nama konfigurasi Logtail. Harus unik dalam Project-nya. Nama tidak dapat diubah setelah konfigurasi Logtail dibuat.

Jenis topik log

Menentukan cara menghasilkan topik log. Opsi termasuk Topik Kelompok Mesin, Ekstraksi Path File, dan Kustom.

Parameter lanjutan

Parameter lanjutan opsional untuk konfigurasi global. Buat konfigurasi pipeline Logtail.

Parameter input

Parameter

Deskripsi

Mode deployment Logtail

DaemonSet: Deploy 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 yang berbeda diisolasi.

Jenis path file

Mendukung konfigurasi Path in Container atau Host Path.

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

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

Path file

Menentukan direktori log dan nama file berdasarkan lokasi log di host, seperti instans ECS.

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

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

Nama direktori dan file mendukung pencocokan eksak dan wildcard. Lihat Pencocokan wildcard. Wildcard satu-satunya yang didukung untuk path log adalah tanda bintang (*) dan tanda tanya (?).

Pengumpulan log menggunakan pencocokan direktori multi-level. Artinya Logtail menemukan semua file yang cocok dengan kriteria di direktori yang ditentukan dan semua subdirektorinya. Misalnya:

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

  • /var/logs/app_*/**/*.log menunjukkan file dengan akhiran .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 namanya diawali dengan access di direktori /var/log/nginx dan subdirektorinya secara rekursif.

Kedalaman pemantauan direktori maksimum

Menentukan kedalaman direktori maksimum untuk dipantau. Ini adalah kedalaman direktori maksimum yang dicocokkan oleh wildcard ** dalam File Path. Nilai 0 menunjukkan hanya direktori saat ini yang dipantau.

Standard output

Jika Anda mengaktifkan Stdout and Stderr, Logtail mengumpulkan standard output kontainer.

Standard error

Jika Anda mengaktifkan Standard Error, Logtail mengumpulkan standard error kontainer.

Izinkan standard output dikumpulkan beberapa kali

Secara default, standard output kontainer hanya dapat dikumpulkan oleh satu konfigurasi Logtail. Untuk mengumpulkan standard output dengan beberapa konfigurasi, aktifkan toggle Allow File to Be Collected for Multiple Times.

Aktifkan pratinjau metadata kontainer

Mengaktifkan Enable Container Metadata Preview memungkinkan Anda melihat metadata kontainer setelah membuat konfigurasi Logtail. Ini mencakup informasi kontainer yang cocok dan informasi kontainer lengkap.

Penyaringan kontainer

  • Kondisi filter

Penting
  • Label kontainer adalah label dalam output perintah docker inspect dan berbeda dari label Kubernetes. Dapatkan label kontainer.

  • Variabel lingkungan dikonfigurasi saat kontainer dimulai. Dapatkan variabel lingkungan kontainer.

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

  1. Dalam Kubernetes, namespace dan nama kontainer dipetakan ke label kontainer io.kubernetes.pod.namespace dan io.kubernetes.container.name, masing-masing. Kami merekomendasikan agar Anda menggunakan label ini untuk penyaringan kontainer. Misalnya, jika Pod termasuk dalam namespace backend-prod dan memiliki kontainer bernama worker-server, Anda dapat mengumpulkan log dari kontainer dengan mengatur daftar putih label kontainer ke io.kubernetes.pod.namespace : backend-prod atau io.kubernetes.container.name : worker-server.

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

K8s Pod Name Regular Matching

Menentukan ekspresi reguler untuk mencocokkan nama Pod. Log dikumpulkan dari kontainer dalam Pod yang cocok. Misalnya, jika Anda mengatur parameter ini ke ^(nginx-log-demo.*)$, semua kontainer dalam Pod yang namanya diawali dengan nginx-log-demo akan dicocokkan.

K8s Namespace Regular Matching

Menentukan ekspresi reguler untuk mencocokkan namespace. Log dikumpulkan dari kontainer dalam namespace yang cocok. Misalnya, jika Anda mengatur parameter ini ke ^(default|nginx)$, semua kontainer dalam namespace nginx dan default akan dicocokkan.

K8s Container Name Regular Matching

Menentukan ekspresi reguler untuk mencocokkan nama kontainer. Nama kontainer Kubernetes didefinisikan dalam spec.containers. Log dikumpulkan dari kontainer yang namanya cocok. Misalnya, jika Anda mengatur parameter ini ke ^(container-test)$, semua kontainer bernama container-test akan dicocokkan.

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

Menentukan kontainer dari mana log akan dikumpulkan. Secara default, ini kosong, yang berarti standard output semua kontainer dikumpulkan. Untuk mengatur daftar putih label kontainer, LabelKey wajib diisi dan LabelValue opsional.

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

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

    Secara default, LabelValue digunakan untuk pencocokan string. Pencocokan berhasil hanya jika LabelValue identik dengan nilai label kontainer. Jika nilai diawali dengan ^ dan diakhiri dengan $, pencocokan ekspresi reguler digunakan. 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 logika ATAU. Kontainer dicocokkan jika labelnya cocok dengan salah satu entri daftar putih.

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

Mengecualikan kontainer dari pengumpulan log. Secara default, ini 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 LabelKey akan dikecualikan.

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

    LabelValue defaultnya adalah pencocokan string. Pencocokan terjadi hanya jika nilai LabelValue identik 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)$, ini mencocokkan kontainer bernama nginx atau cube.

Beberapa entri daftar hitam memiliki hubungan logika ATAU. Kontainer dikecualikan jika labelnya cocok dengan salah satu entri daftar hitam.

Environment Variable Whitelist

Menentukan kontainer dari mana log akan dikumpulkan. Secara default, ini kosong, yang berarti standard output semua kontainer dikumpulkan. Untuk mengatur daftar putih variabel lingkungan, EnvKey wajib diisi dan EnvValue opsional.

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

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

    Secara default, EnvValue digunakan untuk pencocokan string. Pencocokan ditemukan hanya jika nilai EnvValue identik dengan nilai variabel lingkungan. Jika nilai diawali dengan ^ dan diakhiri dengan $, ini adalah pencocokan ekspresi reguler. Misalnya, jika Anda mengatur EnvKey ke NGINX_SERVICE_PORT dan EnvValue ke ^(80|6379)$, konfigurasi ini mencocokkan kontainer yang port layanannya adalah 80 atau 6379.

Beberapa entri daftar putih memiliki hubungan logika ATAU. Kontainer dicocokkan jika variabel lingkungannya cocok dengan salah satu pasangan kunci-nilai yang ditentukan.

Environment Variable Blacklist

Mengecualikan kontainer dari pengumpulan log. Secara default, ini 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 EnvKey akan dikecualikan.

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

    Secara default, EnvValue digunakan untuk pencocokan string, yang berarti pencocokan berhasil hanya jika nilai EnvValue identik dengan nilai variabel lingkungan. Jika nilai diawali dengan ^ dan diakhiri dengan $, ini dianggap sebagai ekspresi reguler. Misalnya, jika Anda mengatur EnvKey ke NGINX_SERVICE_PORT dan EnvValue ke ^(80|6379)$, konfigurasi ini mencocokkan kontainer yang memiliki port layanan 80 atau 6379.

Beberapa entri daftar hitam memiliki hubungan logika ATAU. Kontainer dikecualikan jika variabel lingkungannya cocok dengan salah satu pasangan kunci-nilai yang ditentukan.

Kubernetes Pod Label Whitelist

Menentukan kontainer dari mana log 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 LabelKey akan dicocokkan.

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

    Secara default, LabelValue menggunakan pencocokan string, yang berarti pencocokan terjadi hanya jika LabelValue identik dengan nilai label Kubernetes. Jika nilai diawali dengan ^ dan diakhiri dengan $, ini dianggap sebagai ekspresi reguler. Misalnya, mengatur LabelKey ke app dan LabelValue ke ^(test1|test2)$ mencocokkan kontainer yang memiliki label Kubernetes app:test1 atau app:test2.

Beberapa entri daftar putih memiliki hubungan logika ATAU. Kontainer dicocokkan jika label Kubernetes-nya cocok dengan salah satu entri daftar putih.

Catatan
  • Jika Anda mengubah label pada pengontrol sumber daya Kubernetes seperti Deployment saat runtime, Pod yang sedang berjalan tidak akan dimulai ulang. Oleh karena itu, Pod tidak dapat mendeteksi perubahan tersebut, yang dapat menyebabkan aturan pencocokan gagal. Saat mengonfigurasi daftar putih dan hitam label Kubernetes, gunakan label Kubernetes pada Pod. Untuk informasi lebih lanjut tentang label Kubernetes, lihat Labels and Selectors.

Kubernetes Pod Label Blacklist

Mengecualikan kontainer dari pengumpulan log 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 LabelKey akan dikecualikan.

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

    Secara default, LabelValue melakukan pencocokan string eksak. Pencocokan ditemukan hanya jika LabelValue identik dengan nilai label Kubernetes. Jika nilai diawali dengan ^ dan diakhiri dengan $, ini dianggap sebagai ekspresi reguler. Misalnya, jika Anda mengatur LabelKey ke app dan mengatur LabelValue ke ^(test1|test2)$, ini mencocokkan kontainer dengan label Kubernetes app:test1 atau app:test2.

Beberapa entri daftar hitam memiliki hubungan logika ATAU. Kontainer dikecualikan jika label Kubernetes-nya cocok dengan salah satu entri daftar hitam.

Catatan
  • Jika Anda mengubah label pada pengontrol sumber daya Kubernetes seperti Deployment saat runtime, Pod yang sedang berjalan tidak akan dimulai ulang. Oleh karena itu, Pod tidak dapat mendeteksi perubahan tersebut, yang dapat menyebabkan aturan pencocokan gagal. Saat mengonfigurasi daftar putih dan hitam label Kubernetes, gunakan label Kubernetes pada Pod. Untuk informasi lebih lanjut tentang label Kubernetes, lihat Labels and Selectors.

Pengayaan tag log

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

Environment Variables

Setelah Anda mengonfigurasi field ekstensi variabel lingkungan, Layanan Log menambahkan field terkait variabel lingkungan ke log Anda. Misalnya, jika Anda mengatur Environment Variable Name ke VERSION dan Tag Name ke env_version, dan kontainer memiliki variabel lingkungan VERSION=v1.0.0, field __tag__:__env_version__: v1.0.0 ditambahkan ke log Anda.

Pod Labels

Setelah Anda mengonfigurasi field ekstensi Pod Kubernetes, Layanan Log menambahkan field terkait Pod Kubernetes ke log Anda. Misalnya, jika Anda mengatur Pod Label Name ke app dan Tag Name ke k8s_pod_app, field __tag__:__k8s_pod_app__: serviceA ditambahkan ke log untuk Pod yang memiliki label app=serviceA.

Encoding file

Menentukan format encoding file log.

Ukuran pengumpulan pertama

Saat konfigurasi pertama kali diterapkan, parameter ini menentukan posisi awal pengumpulan, diukur dari akhir file. Nilai default adalah 1024 KB.

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

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

Anda dapat memodifikasi First Collection Size. Nilainya, dalam KB, dapat berkisar antara 0 hingga 10.485.760.

Daftar hitam pengumpulan

Mengaktifkan toggle Collection Blacklist memungkinkan Anda mengonfigurasi daftar hitam untuk mengabaikan direktori atau file tertentu selama pengumpulan. Anda dapat menentukan direktori dan nama file menggunakan pencocokan eksak atau wildcard. Wildcard satu-satunya yang didukung adalah tanda bintang (*) dan tanda tanya (?).

Penting
  • Jika Anda menggunakan wildcard dalam File Path tetapi ingin menyaring beberapa path yang dihasilkan, Anda harus memasukkan path lengkap yang sesuai di Collection Blacklist untuk memastikan konfigurasi daftar hitam berlaku.

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

  • Pencocokan daftar hitam menimbulkan overhead komputasi. Untuk kinerja optimal, gunakan 10 entri daftar hitam atau kurang.

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

Anda dapat mengonfigurasi daftar hitam berdasarkan path file, nama file, atau direktori.

File Path Blacklist

  • Pilih File Path Blacklist dan atur path ke /home/admin/private*.log untuk mengabaikan semua file di direktori /home/admin/ yang diawali dengan private dan diakhiri dengan .log selama pengumpulan.

  • Pilih File Path Blacklist dan atur path ke /home/admin/private*/*_inner.log untuk mengabaikan file yang diakhiri dengan _inner.log di dalam direktori yang diawali dengan private di bawah direktori /home/admin/. Misalnya, file /home/admin/private/app_inner.log diabaikan, tetapi file /home/admin/private/app.log dikumpulkan.

Daftar hitam file

Jika Anda memilih File Blacklist dan mengatur nama file ke app_inner.log, semua file bernama app_inner.log diabaikan selama pengumpulan.

Daftar hitam direktori

  • 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* untuk mengabaikan semua file di subdirektori yang diawali dengan dir di bawah direktori /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 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 beberapa kali

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

Parameter lanjutan

Parameter lanjutan opsional untuk plugin input file. Buat konfigurasi pipeline Logtail.

Parameter prosesor

Parameter

Deskripsi

Contoh log

Contoh log yang ingin Anda kumpulkan. Gunakan contoh log dari kasus penggunaan aktual Anda. Contoh ini membantu Anda mengonfigurasi parameter pemrosesan lebih mudah. Anda dapat menambahkan beberapa contoh. Panjang total tidak boleh 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 multi-baris: Log multi-baris adalah entri yang mencakup beberapa baris. Anda harus mendefinisikan aturan untuk mengidentifikasi awal setiap entri log.

    • Custom: Menggunakan Regex to Match First Line untuk mengidentifikasi setiap entri log.

    • Multi-line JSON: Setiap objek JSON diperluas menjadi beberapa baris. Contoh:

      {
        "name": "John Doe",
        "age": 30,
        "address": {
          "city": "New York",
          "country": "USA"
        }
      }
  • Tindakan saat 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)

    Jika Layanan Log gagal memisahkan konten log di atas:

    • Discard: Membuang segmen log ini.

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

Mode pemrosesan

Processors, yang mencakup Native Processor dan Extended Processor. Untuk informasi lebih lanjut tentang prosesor, lihat Gunakan prosesor native dan ekstensi.

Penting

Untuk batasan penggunaan prosesor, lihat petunjuk konsol.

  • Logtail 2.0 dan lebih baru:

    • Anda dapat menggabungkan prosesor native dengan cara apa pun.

    • Anda dapat menggabungkan prosesor native dan ekstensi, tetapi semua prosesor ekstensi harus mengikuti semua prosesor native.

  • Versi Logtail sebelum 2.0:

    • Anda tidak dapat menggunakan prosesor native dan ekstensi bersamaan.

    • Prosesor native hanya dapat digunakan untuk mengumpulkan log teks. Saat menggunakan prosesor native, Anda harus memenuhi persyaratan berikut:

      • Prosesor pertama harus berupa prosesor penguraian ekspresi reguler, penguraian berbasis delimiter, penguraian JSON, penguraian pola NGINX, penguraian pola Apache, atau penguraian pola IIS.

      • Setelah prosesor penguraian awal, Anda dapat menambahkan paling banyak satu prosesor penguraian waktu, satu prosesor penyaringan, dan beberapa prosesor penyembunyian data.

    • Untuk parameter Retain Original Field if Parsing Fails dan Retain Original Field if Parsing Succeeds, hanya kombinasi berikut yang valid.

      • Unggah hanya log yang berhasil diuraikan:

        image

      • Unggah log yang diuraikan saat berhasil dan log mentah saat gagal:

        image

      • Saat berhasil, unggah log yang diuraikan dan tambahkan field log mentah. Saat gagal, unggah log mentah.

        Misalnya, jika log asli "content": "{"request_method":"GET", "request_time":"200"}" berhasil diuraikan, menambahkan field asli menambahkan field baru ke log yang diuraikan. Nama field adalah field asli yang diganti namanya (jika dibiarkan kosong, nama defaultnya adalah nama field asli), dan nilai field adalah log asli {"request_method":"GET", "request_time":"200"}.

        image