All Products
Search
Document Center

Container Service for Kubernetes:Kumpulkan log kontainer kluster melalui konsol

Last Updated:Jun 22, 2026

Di lingkungan Kubernetes, log kontainer sering tersebar dan sulit dipusatkan serta dikelola, sehingga menyebabkan troubleshooting yang tidak efisien dan biaya operasional tinggi. Anda dapat memusatkan pengumpulan log dan melakukan pemrosesan terstruktur dengan men-deploy LoongCollector dalam mode DaemonSet serta membuat konfigurasi pengumpulan di konsol Simple Log Service (SLS). Hal ini meningkatkan efisiensi pengambilan log, diagnosis masalah, dan analisis observabilitas.

Persyaratan

  • Lingkungan runtime:

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

    • Memerlukan Kubernetes 1.10.0 atau lebih baru dengan dukungan Mount propagation: HostToContainer.

    • Runtime kontainer (hanya Docker dan Containerd)

      • Docker:

        • Memerlukan akses ke docker.sock.

        • Pengumpulan output standar hanya mendukung driver log JSON.

        • Hanya driver penyimpanan overlay dan overlay2 yang didukung. Untuk driver penyimpanan lainnya, Anda harus memasang direktori log secara manual.

      • Containerd: Memerlukan akses ke containerd.sock.

  • Persyaratan sumber daya: LoongCollector (Logtail) berjalan dengan prioritas system-cluster-critical. Jangan men-deploy-nya jika kluster Anda memiliki sumber daya yang tidak mencukupi; jika tidak, Pod yang ada pada suatu node mungkin akan di-evict.

    • CPU: Cadangkan minimal 0,1 core.

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

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

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

    Untuk membuat kebijakan kustom, rujuk ke kebijakan sistem AliyunCSManagedLogRolePolicy. Salin izin dari kebijakan sistem tersebut dan berikan kepada Pengguna RAM atau role target guna mengonfigurasi izin detail halus.

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 pada node tersebut.

    Untuk informasi tentang pola sidecar, lihat Kumpulkan log teks dari Pod Kubernetes menggunakan 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 log.

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

      • Log multi-baris: Untuk entri log tunggal yang mencakup beberapa baris, seperti stack trace Java atau traceback Python. Gunakan ekspresi reguler untuk mengidentifikasi awal setiap entri log.

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

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

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

  4. Konfigurasi kueri dan analisis: Indeks teks penuh diaktifkan secara default untuk mendukung pencarian kata kunci. Kami merekomendasikan mengaktifkan indeks bidang untuk melakukan kueri dan analisis presisi pada bidang terstruktur, yang meningkatkan efisiensi pencarian.

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

Langkah 1: Instal LoongCollector

LoongCollector adalah agen pengumpulan log generasi berikutnya untuk Simple Log Service dan merupakan peningkatan dari Logtail. LoongCollector dan Logtail tidak dapat berjalan bersamaan. Untuk menginstal Logtail, lihat Instal, jalankan, tingkatkan, dan uninstal Logtail.

Topik ini hanya mencakup instalasi dasar LoongCollector. Untuk informasi lebih lanjut tentang parameter, lihat Instalasi dan konfigurasi. Jika Anda telah menginstal LoongCollector atau Logtail, lewati langkah ini dan lanjutkan ke Langkah 2: Buat logstore.

Catatan

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

Kluster ACK

Secara default, LoongCollector mengirim log ke Project Simple Log Service di Akun Alibaba Cloud saat ini.

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

  2. Klik nama kluster target untuk membuka halaman detailnya.

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

  4. Pada tab Logs and Monitoring, temukan loongcollector dan klik Install.

    Catatan

    Saat membuat kluster, Anda dapat memilih Enable Log Service pada halaman Component Configurations. Anda dapat memilih untuk Create Project atau Select Project.

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

    Tipe

    Parameter

    Deskripsi

    Project

    k8s-log-${cluster_id}

    Unit manajemen sumber daya yang mengisolasi log dari layanan berbeda.

    Untuk membuat Project guna manajemen sumber daya log yang lebih fleksibel, lihat Buat Project.

    machine group

    k8s-group-${cluster_id}

    Sekumpulan node pengumpulan log.

    Penting

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

Kluster yang dikelola sendiri

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

    Wilayah Tiongkok Daratan

    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. Berpindah ke direktori loongcollector-custom-k8s-package dan ubah file konfigurasi ./loongcollector/values.yaml.

    # ===================== Informasi wajib =====================
    # Project tempat log dari kluster ini dikumpulkan. Contoh: k8s-log-custom-sd89ehdq
    projectName: ""
    # Wilayah tempat Project berada. Contoh: cn-shanghai
    region: ""
    # ID Akun Alibaba Cloud yang memiliki Project. Sertakan ID 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. Kebijakan AliyunLogFullAccess diperlukan.
    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, periksa status komponen.

    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, yang dapat Anda lihat di Konsol Simple Log Service.

    Tipe

    Parameter

    Deskripsi

    Project

    Nilai projectName yang didefinisikan di file values.yaml

    Unit manajemen sumber daya yang mengisolasi log dari layanan berbeda.

    Untuk membuat Project guna manajemen sumber daya log yang lebih fleksibel, lihat Buat Project.

    machine group

    k8s-group-${cluster_id}

    Sekumpulan node pengumpulan log.

    Penting

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

Langkah 2: Buat logstore

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

  1. Masuk ke Konsol Simple Log Service dan klik nama project target.

  2. Di panel navigasi sebelah kiri, pilih imageLogstores, lalu klik + untuk membuat logstore:

    • Logstore Name: Masukkan nama unik dalam project. 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 skenario di mana penggunaan fitur tidak pasti.

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

    • Data Retention Period: Atur jumlah hari untuk menyimpan log, dari 1 hingga 3.650. Nilai 3.650 menunjukkan retensi permanen. Nilai default adalah 30 hari.

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

Langkah 3: Konfigurasikan aturan pengumpulan log

Tentukan log apa yang dikumpulkan oleh LoongCollector, cara menguraikannya, dan cara menyaring kontennya. Kemudian, terapkan konfigurasi tersebut ke kelompok mesin yang terdaftar.

  1. Di halaman image LogStores, klik ikon image di sebelah nama LogStore target untuk memperluasnya.

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

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

      Templat untuk mengumpulkan output standar kontainer tersedia dalam versi baru dan lama. Kami merekomendasikan menggunakan versi baru. Untuk perbandingan versi baru dan lama, lihat Lampiran: Perbandingan Versi Baru dan Lama Output Standar Kontainer.
    • Untuk log teks kluster, pilih Kubernetes-File.

  3. Lengkapi Machine Group Configurations, lalu klik Next:

    • Scenario: Pilih Docker Containers.

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

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

  4. Di halaman Logtail Configuration, tentukan parameter berikut dan klik Next.

1. Konfigurasi global dan input

Sebelum memulai, pastikan Anda telah memilih templat pengumpulan data dan menerapkannya ke kelompok mesin. Pada langkah ini, Anda menentukan nama konfigurasi pengumpulan, sumber log, dan cakupannya.

Output standar kontainer

Global Configurations

  • Configuration Name: Tentukan nama kustom untuk konfigurasi pengumpulan. Nama harus unik dalam Project dan tidak dapat diubah setelah dibuat. Nama harus memenuhi persyaratan berikut:

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

    • Harus dimulai dan diakhiri dengan huruf kecil atau angka.

Konfigurasi Input

  • Aktifkan sakelar untuk Stdout and Stderr dan/atau Standard Error sesuai kebutuhan. Secara default, keduanya diaktifkan.

    Penting

    Kami merekomendasikan untuk tidak mengaktifkan output standar dan error standar secara bersamaan, karena hal ini dapat menyebabkan entri log yang tidak teratur.

Log teks kluster

Global Configurations:

  • Configuration Name: Tentukan nama kustom untuk konfigurasi pengumpulan. Nama harus unik dalam Project dan tidak dapat diubah setelah dibuat. Nama harus memenuhi persyaratan berikut:

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

    • Harus dimulai dan diakhiri dengan huruf kecil atau angka.

Input Configurations:

  • File Path Type:

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

    • Host Path: Kumpulkan log layanan lokal dari host.

  • File Path: Jalur absolut untuk pengumpulan log.

    • Linux: Jalur harus dimulai dengan garis miring (/). Contoh, /data/mylogs/**/*.log menunjukkan semua file yang memiliki ekstensi .log di direktori /data/mylogs dan subdirektorinya.

    • Windows: Jalur harus dimulai dengan huruf drive. Contoh: C:\Program Files\Intel\**\*.Log.

  • Maximum Directory Monitoring Depth: Kedalaman direktori maksimum yang dapat dicocokkan oleh wildcard ** di File Path. Nilai default adalah 0, yang menunjukkan hanya direktori saat ini. Rentang nilai yang valid adalah 0 hingga 1.000.

    Kami merekomendasikan mengatur nilai ini ke 0 dan menentukan jalur ke direktori tempat file berada.

2. Pemrosesan dan strukturisasi log

Konfigurasikan aturan pemrosesan log untuk mengubah log mentah yang tidak terstruktur menjadi data terstruktur yang dapat dicari guna meningkatkan efisiensi kueri dan analisis log. Kami merekomendasikan menambahkan sampel log sebelum mengonfigurasi aturan.

Di bagian Processor Configurations pada halaman Logtail Configuration, klik Add Sample Log dan masukkan sampel konten log. Sistem mengidentifikasi format log dari sampel dan membantu Anda menghasilkan ekspresi reguler dan aturan penguraian, menyederhanakan proses konfigurasi.

Skenario 1: Proses log multi-baris

Log seperti stack trace exception Java dan objek JSON sering kali mencakup beberapa baris. Dalam mode pengumpulan default, log ini dibagi menjadi beberapa catatan tidak lengkap, sehingga mengakibatkan kehilangan konteks. Untuk mengatasi hal ini, aktifkan mode multi-baris dan konfigurasikan ekspresi reguler baris pertama untuk menggabungkan baris log berturut-turut menjadi satu entri lengkap.

Contoh:

Log mentah yang belum diproses

Mode pengumpulan default: Setiap baris menjadi log terpisah, memecah stack trace dan kehilangan konteks.

Mode multi-baris diaktifkan: Ekspresi reguler baris pertama mengidentifikasi log lengkap, mempertahankan struktur semantiknya.

Log mentah berisi stack trace exception Java lengkap. Dimulai dengan timestamp dan level ERROR, serta mencakup java.sql.SQLException dengan stack panggilan multi-level at.

Dalam mode default, log mentah dibagi menjadi beberapa catatan terpisah. Setiap baris stack trace disimpan di bidang content individual. Konteks exception hilang, sehingga tidak mungkin menghubungkan baris-baris tersebut dengan log error aslinya.

Dengan mode multi-baris diaktifkan, stack trace exception lengkap digabung menjadi satu catatan log. Bidang content berisi seluruh konten, dari baris ERROR hingga baris stack panggilan terakhir, mempertahankan struktur semantik lengkapnya.

Prosedur: Di bagian Processor Configurations pada halaman Logtail Configuration, aktifkan Multi-line Mode:

  • Type: Pilih Custom atau Multi-line JSON.

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

      • Regex to Match First Line: Anda dapat menghasilkan ekspresi reguler secara otomatis atau memasukkannya secara manual. Ekspresi harus mencocokkan seluruh baris. Contohnya, ekspresi reguler yang cocok dengan data pada contoh sebelumnya adalah \[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*.

        • Generasi otomatis: Klik Auto-Generate Regular Expression. Lalu, di kotak teks Log Sample, pilih konten log untuk diekstrak dan klik Generate Regex.

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

    • Multi-line JSON: Pilih opsi ini jika log mentah Anda semuanya dalam format JSON standar. Layanan secara otomatis menangani jeda baris dalam satu log JSON.

  • Processing Method If Splitting Fails:

    • Discard: Jika segmen teks tidak cocok dengan aturan baris pertama, segmen tersebut dibuang.

    • Retain Single Line: Teks yang tidak cocok dibagi dan dipertahankan sebagai log satu baris.

Skenario 2: Strukturisasi log

Ketika log mentah berupa teks tidak terstruktur atau semi-terstruktur, seperti log akses NGINX atau log output aplikasi, kueri dan analisis langsung bisa menjadi tidak efisien. Layanan ini menyediakan berbagai prosesor penguraian data yang dapat secara otomatis mengonversi log mentah dengan berbagai format menjadi data terstruktur. Hal ini menciptakan fondasi data yang kuat untuk analisis, pemantauan, dan peringatan selanjutnya.

Contoh:

Log mentah yang belum diproses

Output log 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 bagian Processor Configurations pada halaman Logtail Configuration:

  1. Tambahkan prosesor penguraian: Klik Add Processor, lalu konfigurasikan prosesor penguraian ekspresi reguler, delimiter, atau JSON berdasarkan format log. Dalam contoh ini, log NGINX dikumpulkan. Pilih Native Processor > Data Parsing (NGINX Mode).

  2. NGINX Log Configuration: Salin seluruh definisi log_format dari file konfigurasi server NGINX (nginx.conf) dan tempelkan ke dalam kotak teks.

    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 untuk menghasilkan log di server. Jika tidak, penguraian log akan gagal.

  3. Parameter konfigurasi umum: Parameter berikut umum untuk beberapa prosesor penguraian data dan memiliki fungsi serta penggunaan yang konsisten.

    • Bidang Asal: Tentukan nama bidang sumber untuk diurai. Nilai default adalah content, yang merepresentasikan seluruh entri log yang dikumpulkan.

    • Pertahankan Bidang Asal saat Penguraian Gagal: Kami merekomendasikan mengaktifkan opsi ini. Jika log tidak dapat diurai dengan sukses oleh prosesor (misalnya, karena ketidakcocokan format), opsi ini memastikan bahwa konten log asli dipertahankan di bidang asal yang ditentukan.

    • Pertahankan Bidang Asal saat Penguraian Berhasil: Jika dipilih, konten log asli dipertahankan bahkan jika log berhasil diurai.

3. Penyaringan log

Selama pengumpulan log, pengumpulan besar-besaran log dengan volume tinggi yang bernilai rendah atau tidak relevan, seperti log level DEBUG atau INFO, dapat membuang sumber daya penyimpanan, meningkatkan biaya, mengurangi efisiensi kueri, dan menimbulkan risiko kebocoran data. Untuk mengatasi masalah ini, Anda dapat menerapkan kebijakan penyaringan detail halus untuk pengumpulan log yang efisien dan aman.

Filter berdasarkan konten

Filter log berdasarkan konten bidang, 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 bagian Processor Configurations pada halaman Logtail Configuration:

Klik Add Processor dan pilih Native Processor > Data Filtering.

  • Field Name: Bidang log yang akan difilter.

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

Daftar hitam

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

Prosedur: Di bagian Input Configurations > Other Input Configurations pada halaman Logtail Configuration, aktifkan Collection Blacklist dan klik Add.

Mendukung pencocokan eksak dan wildcard untuk direktori dan nama file. Satu-satunya wildcard yang didukung adalah tanda bintang (*) dan tanda tanya (?).
  • File Path Blacklist: Jalur file yang akan diabaikan. Contoh:

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

    • /home/admin/private*/*_inner.log: Mengabaikan file yang diakhiri dengan _inner.log yang berada di subdirektori apa pun yang namanya dimulai 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 selama pengumpulan.

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

    • /home/admin/dir1/: Entri daftar hitam ini tidak valid dan akan diabaikan.

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

    • /home/admin/*/dir: Mengabaikan semua file di subdirektori tingkat kedua bernama dir di bawah direktori /home/admin/. Misalnya, file di direktori /home/admin/a/dir diabaikan, tetapi file di direktori /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 pengumpulan log dari kontainer tertentu.

Prosedur: Di bagian Input Configurations pada halaman Logtail Configuration, aktifkan Container Filtering dan klik Add.

Beberapa kondisi digabungkan dengan logika AND. Semua pencocokan ekspresi reguler didasarkan pada mesin RE2 Go, yang memiliki beberapa keterbatasan dibandingkan mesin seperti PCRE. Pastikan ekspresi reguler Anda mematuhi panduan dalam Lampiran: Batasan Penggunaan Ekspresi Reguler (Penyaringan Kontainer).
  • Daftar Hitam/Putih Variabel Lingkungan: Tentukan kondisi berdasarkan variabel lingkungan kontainer target.

  • Daftar Hitam/Putih Label Pod K8s: Tentukan kondisi berdasarkan label Pod tempat kontainer target berada.

  • Pencocokan Regex Nama Pod K8s: Tentukan kontainer untuk dikumpulkan dengan mencocokkan nama Pod.

  • Pencocokan Regex Namespace K8s: Tentukan kontainer untuk dikumpulkan dengan mencocokkan nama namespace.

  • Pencocokan Regex Nama Kontainer K8s: Tentukan kontainer untuk dikumpulkan dengan mencocokkan nama kontainer.

  • Daftar Hitam/Putih Label Kontainer: Kumpulkan log dari kontainer yang labelnya sesuai dengan kondisi yang ditentukan. Fitur ini ditujukan untuk skenario Docker dan tidak direkomendasikan untuk skenario Kubernetes.

4. Kategorisasi log

Dalam skenario di mana beberapa aplikasi atau instans berbagi format log yang sama, sulit untuk membedakan sumber log. Hal ini menyebabkan hilangnya konteks selama kueri dan analisis yang tidak efisien. Untuk mengatasi hal ini, Anda dapat mengonfigurasi topik log dan penandaan log untuk asosiasi konteks otomatis dan kategorisasi logis.

Topik log

Ketika log dari beberapa aplikasi atau instans berbagi format yang sama tetapi jalur berbeda (misalnya, /apps/app-A/run.log dan /apps/app-B/run.log), sulit untuk membedakan sumbernya. Dalam kasus seperti ini, Anda dapat menghasilkan topik berdasarkan kelompok mesin, nama kustom, atau ekstraksi jalur file untuk secara fleksibel membedakan log dari berbagai layanan atau jalur bisnis.

Prosedur: Buka Global Configurations > Other Global Configurations > Log Topic Type dan pilih metode pembuatan topik. Tiga metode berikut didukung:

  • Machine Group Topic: Jika konfigurasi pengumpulan diterapkan ke beberapa kelompok mesin, LoongCollector secara otomatis menggunakan nama kelompok mesin server sebagai nilai bidang __topic__. Metode ini cocok untuk skenario di mana log dikategorikan berdasarkan kluster host.

  • Custom: Gunakan format customized://<custom_topic_name>, misalnya, customized://app-login. Metode ini cocok untuk skenario topik statis dengan pengenal bisnis tetap.

  • File Path Extraction: Ekstrak informasi kunci dari jalur lengkap file log untuk memberi tag sumber log secara dinamis. Metode ini cocok untuk situasi di mana beberapa pengguna atau aplikasi berbagi nama file log yang sama tetapi memiliki jalur berbeda.

    Jika beberapa pengguna atau layanan menulis log ke direktori tingkat atas yang berbeda tetapi menggunakan jalur subdirektori dan nama file yang sama, sumbernya tidak dapat dibedakan hanya berdasarkan nama file. Contoh:

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

    Dalam kasus ini, Anda dapat mengonfigurasi File Path Extraction dan menggunakan ekspresi reguler untuk mengekstrak informasi kunci dari jalur lengkap. Hasil yang cocok kemudian diunggah ke LogStore sebagai topik log.

    Aturan ekstraksi

    Saat Anda mengonfigurasi ekspresi reguler, sistem secara otomatis menentukan format bidang output berdasarkan jumlah dan penamaan grup penangkapan, seperti dijelaskan dalam aturan berikut:

    Dalam ekspresi reguler untuk jalur file, Anda harus meng-escape garis miring (/).

    Jenis kelompok penangkap

    Kasus penggunaan

    Bidang yang dihasilkan

    Contoh regex

    Contoh jalur yang cocok

    Bidang yang dihasilkan

    Grup penangkapan tunggal (satu (.*?))

    Hanya satu dimensi yang diperlukan untuk membedakan sumber, seperti nama pengguna atau lingkungan.

    Menghasilkan bidang __topic__.

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

    /logs/userA/app.log

    __topic__:userA

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

    Beberapa dimensi diperlukan, tetapi tanpa label semantik.

    Menghasilkan bidang tag dalam format __tag__:__topic_{i}__, di mana {i} adalah nomor urut grup penangkapan.

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

    /logs/userA/svcA/app.log

    __tag__:__topic_1__:userA;

    __tag__:__topic_2__:svcA

    Beberapa grup penangkapan bernama (menggunakan (?P<name>.*?))

    Beberapa dimensi diperlukan, dan makna bidang yang jelas diinginkan untuk memudahkan kueri dan analisis.

    Menghasilkan bidang tag dalam format __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 melampirkan informasi ini sebagai tag untuk pengelompokan log detail halus.

Prosedur: Di bagian Input Configurations pada halaman Logtail Configuration, aktifkan Log Tag Enrichment dan klik Add.

  • Environment Variables: Konfigurasikan nama variabel lingkungan dan nama tag. Nilai variabel lingkungan disimpan sebagai nilai tag.

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

    • Nama Tag: Nama tag yang menyimpan nilai variabel lingkungan.

  • Pod Labels: Konfigurasikan nama label Pod dan nama tag. Nilai label Pod disimpan sebagai nilai tag.

    • Nama Label Pod: Nama label Pod Kubernetes yang akan diekstrak.

    • Nama Tag: Nama tag yang menyimpan nilai label Pod.

5. Konfigurasi output

Secara default, semua log dikumpulkan dan dikirim ke LogStore saat ini dengan kompresi lz4. Untuk mengirim log dari sumber yang sama ke LogStore yang berbeda, ikuti langkah-langkah di bawah ini.

Pengiriman multi-tujuan

Penting
  • Pengiriman multi-tujuan hanya tersedia di LoongCollector 3.0.0 dan yang lebih baru. Logtail tidak mendukung fitur ini.

  • Anda dapat mengonfigurasi maksimal lima tujuan output.

  • Setelah Anda mengonfigurasi beberapa tujuan output, konfigurasi pengumpulan ini tidak akan lagi tercantum di bawah LogStore saat ini. Untuk melihat, mengubah, atau menghapus konfigurasi pengiriman multi-tujuan, lihat Bagaimana cara mengelola konfigurasi pengiriman multi-tujuan?.

Prosedur: Di bagian Output Configurations pada halaman Logtail Configuration:

  1. Klik image untuk memperluas konfigurasi output.

  2. Klik Add Output Targets dan lengkapi konfigurasi berikut:

    • Logstores: Pilih LogStore tujuan.

    • Compression Method: Jenis yang didukung adalah lz4 dan zstd.

    • Route Settings: Rute dan kirim log berdasarkan bidang tagnya. Log yang cocok dengan konfigurasi routing dikirim ke LogStore tujuan. Jika konfigurasi ini dibiarkan kosong, semua log yang dikumpulkan dikirim ke LogStore tujuan.

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

        Untuk informasi lebih lanjut tentang tag, lihat Kelola Tag Pengumpulan LoongCollector.
        • Terkait agen: Tag yang berasal dari agen pengumpulan dan independen dari prosesor. Contoh: __hostname__, __user_defined_id__.

        • Terakit prosesor input: Tag yang bersumber dari prosesor input, yang menambahkan informasi kontekstual ke log. Contoh: __path__ untuk pengumpulan file; _pod_name_ dan _container_name_ untuk pengumpulan K8s.

      • Tag Value: Jika bidang tag log cocok dengan nilai ini, log dikirim ke LogStore tujuan.

      • Discard this tag?: Jika diaktifkan, log yang diunggah tidak akan berisi bidang tag ini.

Langkah 4: Kueri dan analisis

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

  • Secara default, indeks teks penuh diaktifkan, memungkinkan Anda mencari kata kunci dalam konten log mentah.

  • Untuk menjalankan kueri presisi berdasarkan bidang, klik Automatic Index Generation setelah Preview Data dimuat. Layanan Log kemudian menghasilkan indeks bidang berdasarkan entri pertama dalam data pratinjau.

Setelah menyelesaikan konfigurasi, klik Next untuk menyelesaikan proses pengumpulan.

Langkah 5: Validasi dan troubleshooting

Setelah membuat konfigurasi pengumpulan dan menerapkannya ke kelompok mesin, sistem secara otomatis men-deploy konfigurasi tersebut dan mulai mengumpulkan log inkremental.

Lihat log yang dikumpulkan

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

  2. Kueri log: Buka halaman kueri dan analisis Logstore target dan klik Search & Analyze. Rentang waktu default adalah 15 menit terakhir. Periksa log baru. Secara default, setiap log teks kontainer yang dikumpulkan mencakup 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 oleh kontainer.

    __tag__:_pod_name_

    Nama Pod.

    __tag__:_namespace_

    Namespace Pod.

    __tag__:_pod_uid_

    Pengenal unik (UID) Pod.

Penyelesaian masalah umum

Heartbeat kelompok mesin gagal

  1. Periksa pengenal pengguna: Jika server Anda bukan instans ECS, atau jika instans ECS dan Project termasuk dalam Akun Alibaba Cloud yang berbeda, verifikasi bahwa direktori yang ditentukan berisi file pengenal pengguna yang benar.

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

    Jika file yang dinamai sesuai dengan ID Akun Alibaba Cloud Project saat ini ada di jalur yang ditentukan, pengenal pengguna dikonfigurasi dengan benar.

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

    • 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 jika belum ada), buat file user_defined_id dan tuliskan ID kustom ke dalamnya.

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


Error pengumpulan atau format log

Pendekatan troubleshooting: Error ini menunjukkan bahwa koneksi jaringan dan konfigurasi dasar normal. Penyebabnya biasanya ketidakcocokan antara konten log dan aturan parsing. Lihat pesan error spesifik untuk menemukan penyebabnya:

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

  2. Di bagian , periksa jenis peringatan log error dan temukan solusi yang sesuai di Error Pengumpulan Data Umum.

Langkah selanjutnya

  1. Kueri dan analisis log:

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

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

Troubleshooting pengumpulan log kontainer

  1. Setelah Anda mengonfigurasi LoongCollector (Logtail), jika file log target tidak berisi log baru, LoongCollector (Logtail) tidak mengumpulkan data darinya.

2. Lihat log runtime Logtail

Lihat log runtime LoongCollector (Logtail) untuk informasi error terperinci.

  1. Masuk ke kontainer Logtail:

    1. Kueri pod Logtail.

      kubectl get po -n kube-system | grep logtail

      Perintah mengembalikan output yang mirip dengan berikut:

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

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

      Dalam perintah ini, logtail-ds-****d adalah nama pod. Ganti dengan nama pod yang sebenarnya.

  1. Lihat log runtime Logtail:

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

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

    Tujuan: Identifikasi jenis alarm di log error dan temukan solusi yang sesuai di Error umum dalam pengumpulan data Simple Log Service.

3. Periksa heartbeat kelompok mesin

Periksa status heartbeat kelompok mesin: Buka halaman Resource Group > Machine Groups dan klik nama kelompok mesin target. Di bagian Machine Group Configurations > Machine Group Status, lihat status Heartbeat dan hitung jumlah node yang statusnya OK.

  1. Periksa jumlah node pekerja di kluster kontainer.

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

    2. Lihat jumlah node pekerja di kluster.

      kubectl get node | grep -v master

      Perintah mengembalikan output yang mirip dengan berikut:

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

    • Status heartbeat semua node di kelompok mesin adalah Gagal:

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

        Jika salah satu parameter ini salah, jalankan perintah helm del --purge alibaba-log-controller untuk menghapus dan kemudian menginstal ulang paket instalasi.

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

      • Tentukan apakah DaemonSet dideploy secara manual.

        1. Jalankan perintah berikut. Jika mengembalikan output apa pun, DaemonSet sebelumnya dideploy secara manual.

          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 spesifik Anda.

        4. Terapkan konfigurasi yang diperbarui.

          kubectl apply -f ./logtail-daemonset.yaml

4. Periksa filter pengumpulan

Di konsol Simple Log Service, periksa konfigurasi pengumpulan Logtail. Verifikasi apakah pengaturan filter seperti IncludeLabel, ExcludeLabel, IncludeEnv, ExcludeEnv, dan lainnya dikonfigurasi dengan benar sesuai kebutuhan Anda.

  • Istilah "label" di sini merujuk pada label kontainer Docker (dari output docker inspect), bukan label Kubernetes.

  • Untuk menguji ini, hapus sementara konfigurasi IncludeLabel, ExcludeLabel, IncludeEnv, dan ExcludeEnv dan periksa apakah log dikumpulkan. Jika iya, hal ini mengonfirmasi adanya kesalahan dalam konfigurasi parameter tersebut.

FAQ

Kelola konfigurasi distribusi multi-tujuan

Karena konfigurasi distribusi multi-tujuan dikaitkan dengan beberapa Logstore, konfigurasi tersebut harus dikelola di halaman manajemen tingkat Project:

  1. Masuk ke Konsol Simple Log Service dan klik nama Project target.

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

    Catatan

    Halaman ini mengelola secara terpusat semua konfigurasi pengumpulan di Project, termasuk konfigurasi yang tersisa dari Logstore yang secara tidak sengaja dihapus.

Transfer log kluster ACK ke akun lain

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

Skenario: Untuk mengumpulkan data log dari kluster ACK ke Project Simple Log Service di akun Alibaba Cloud yang berbeda karena alasan seperti struktur organisasi, isolasi izin, atau pemantauan terpusat, instal LoongCollector (Logtail) secara manual untuk mengaktifkan pengumpulan lintas akun.

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

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

    Wilayah Tiongkok Daratan

    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. Berpindah ke direktori loongcollector-custom-k8s-package dan ubah file konfigurasi ./loongcollector/values.yaml.

    # ===================== Informasi wajib =====================
    # Project tempat log dari kluster ini dikumpulkan. Contoh: k8s-log-custom-sd89ehdq
    projectName: ""
    # Wilayah tempat Project berada. Contoh: cn-shanghai
    region: ""
    # ID Akun Alibaba Cloud yang memiliki Project. Sertakan ID 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. Kebijakan AliyunLogFullAccess diperlukan.
    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, periksa status komponen.

    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, yang dapat Anda lihat di Konsol Simple Log Service.

    Tipe

    Parameter

    Deskripsi

    Project

    Nilai projectName yang didefinisikan di file values.yaml

    Unit manajemen sumber daya yang mengisolasi log dari layanan berbeda.

    Untuk membuat Project guna manajemen sumber daya log yang lebih fleksibel, lihat Buat Project.

    machine group

    k8s-group-${cluster_id}

    Sekumpulan node pengumpulan log.

    Penting

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

Konfigurasi ganda untuk satu sumber

Secara default, Simple Log Service hanya menggunakan satu konfigurasi pengumpulan per sumber log untuk mencegah duplikasi data:

  • Setiap file log teks hanya dapat dicocokkan dengan satu konfigurasi pengumpulan Logtail.

  • Untuk output standar kontainer (stdout):

    • Jika Anda menggunakan templat output standar baru, hanya satu konfigurasi pengumpulan yang dapat mengumpulkan dari stdout secara default.

    • Templat output standar lama mendukung pengumpulan ganda secara default tanpa konfigurasi tambahan.

  1. Masuk ke Konsol Simple Log Service dan buka Project target.

  2. Di panel navigasi sebelah kiri, klik imageLogstores dan temukan Logstore target.

  3. Klik ikon image di sebelah nama Logstore untuk memperluas detailnya.

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

  5. Di halaman konfigurasi, klik Edit dan gulir ke bagian Input Configurations.

    • Untuk log file teks, aktifkan Allow File to Be Collected for Multiple Times.

    • Untuk output standar kontainer, aktifkan Allow Collection by Different Logtail Configurations.

Error dependensi saat uninstallasi

Gejala: Saat mencoba meng-uninstall komponen pengumpulan log loongcollector (logtail-ds) di Container Service for Kubernetes (ACK), sistem melaporkan error berikut:

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: Error ini terjadi karena fitur pengumpulan log plugin jaringan terway-eniip membuat dependensi pada komponen loongcollector (logtail-ds). Oleh karena itu, ACK mencegah uninstallasi hingga dependensi ini dihapus.

Solusi: Ikuti langkah-langkah berikut untuk menghapus dependensi sebelum meng-uninstall komponen:

  1. Masuk ke Konsol ACK.

  2. Di daftar kluster, klik nama kluster target.

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

  4. Di halaman Add-ons, temukan komponen terway-eniip dan klik Disable Logging.

  5. Di kotak dialog konfirmasi yang muncul, klik OK.

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

Entri log terakhir tertunda atau terpotong

Analisis: Pemotongan log sering terjadi ketika baris terakhir dalam file log tidak memiliki karakter line feed, atau ketika entri log multi-baris (seperti stack exception) tidak lengkap. Hal ini terjadi karena collector tidak dapat menentukan apakah entri log sudah lengkap, yang dapat menyebabkan segmen terakhir terpisah secara prematur atau dilaporkan setelah penundaan. Mekanisme penanganan bervariasi tergantung versi LoongCollector (Logtail):

  • Versi sebelum 1.8:
    Jika baris terakhir log tidak memiliki line feed (atau carriage return), atau jika log multi-baris tidak lengkap, collector menunggu operasi penulisan berikutnya untuk memicu output. Hal ini dapat menyebabkan entri log terakhir ditahan untuk periode yang lama hingga log baru ditulis.



  • Versi 1.8 dan lebih baru:
    Versi ini memperkenalkan mekanisme flush timeout untuk mencegah log ditahan tanpa batas. Saat collector mendeteksi baris log yang tidak lengkap, timer dimulai. Setelah periode timeout berakhir, buffer saat ini secara otomatis dikirimkan, memastikan log akhirnya dikumpulkan.



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

    • Anda dapat menyesuaikan nilai ini sesuai kebutuhan, tetapi jangan mengaturnya ke 0. Mengatur nilai ke 0 dapat menyebabkan pemotongan log atau kehilangan data parsial.

Solusi:

Anda dapat memperpanjang periode timeout untuk memastikan log ditulis sepenuhnya sebelum dikumpulkan:

  1. Masuk ke Konsol Simple Log Service dan buka Project target.

  2. Di panel navigasi sebelah kiri, klik imageLogstores dan temukan Logstore target.

  3. Klik ikon image di sebelah nama Logstore untuk memperluas detailnya.

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

  5. Di halaman konfigurasi, klik Edit.

    • Buka Input Configurations > Other Input Configurations > Advanced Parameters dan 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. Jangan mengatur nilai ini ke 0, karena dapat menyebabkan pemotongan log atau kehilangan data parsial.

  6. Setelah menyelesaikan konfigurasi, klik OK.

Failover titik akhir jaringan

Jika LoongCollector (Logtail) mendeteksi anomali komunikasi di jaringan internal, seperti kegagalan jaringan atau timeout koneksi, secara otomatis beralih ke titik akhir jaringan publik untuk transmisi data. Hal ini memastikan pengumpulan log yang berkelanjutan dan andal, mencegah penumpukan log atau kehilangan data.

  • LoongCollector: Secara otomatis beralih kembali ke jaringan internal begitu konektivitas dipulihkan.

  • Logtail: Tidak secara otomatis beralih kembali. Anda harus me-restart komponen secara manual untuk melanjutkan komunikasi melalui jaringan internal.

Lampiran: Referensi prosesor native

Di bagian Processor Configurations pada halaman Logtail Configuration, tambahkan prosesor untuk menyusun log mentah. Untuk menambahkan plugin pemrosesan ke konfigurasi yang sudah ada:

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

  2. Klik ikon image di depan 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 Prosesor ekstensi.
Penting

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

  • Prosesor native dan ekstensi dapat digunakan secara independen atau digabungkan sesuai kebutuhan.

  • Utamakan prosesor native karena menawarkan kinerja dan stabilitas yang lebih baik.

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

Batasan urutan:

Plugin dijalankan secara berurutan sesuai konfigurasi, membentuk rantai pemrosesan. Semua prosesor native harus mendahului prosesor ekstensi apa pun. Setelah menambahkan prosesor ekstensi, Anda tidak dapat menambahkan prosesor native lagi.

Penguraian data (mode regex)

Anda dapat menggunakan ekspresi reguler untuk mengekstrak bidang dari log dan mengurai log menjadi pasangan kunci-nilai. Setiap bidang kemudian dapat dikueri dan dianalisis secara independen.

Contoh:

Log mentah

Hasil

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

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

  • Regular Expression: Ekspresi reguler yang digunakan untuk mencocokkan log. Anda dapat menghasilkan ekspresi secara otomatis atau memasukkannya secara manual.

    • Hasilkan ekspresi reguler secara otomatis:

      • Klik Auto-generate regular expression.

      • Di bidang Log Sample, sorot konten log yang ingin Anda ekstrak.

      • Klik Generate regular expression.

        Setelah Anda menyorot konten, tombol Generate regular expression muncul di atas teks log.

    • Masukkan ekspresi reguler secara manual berdasarkan format log.

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

  • Extracted Field: Atur nama bidang (kunci) untuk nilai log yang diekstrak.

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


Penguraian data (mode delimiter)

Anda dapat menggunakan delimiter untuk mengurai konten log menjadi pasangan kunci-nilai. Delimiter karakter tunggal maupun multi-karakter didukung.

Contoh:

Log mentah

Menggunakan karakter yang ditentukan, membagi bidang

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

  • Delimiter: Karakter yang digunakan untuk membagi konten log.

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

  • Quote: Jika nilai bidang berisi delimiter, Anda harus menentukan quote untuk membungkus bidang tersebut guna mencegah pemisahan yang salah.

  • Extracted Field: Atur nama bidang (kunci) untuk kolom hasil secara berurutan. Aturan berikut berlaku:

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

    • Nama bidang harus dimulai dengan huruf atau garis bawah (_).

    • Panjang maksimum adalah 128 byte.

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


Penguraian data (mode JSON)

Anda dapat mengurai objek JSON dari log Anda menjadi pasangan kunci-nilai.

Contoh:

Log mentah

Hasil

{"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 default adalah content. Bidang ini menyimpan konten log mentah yang akan diurai.

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


Perluas bidang JSON

Anda dapat mengurai log JSON bersarang menjadi pasangan kunci-nilai dengan menentukan kedalaman perluasan.

Contoh:

Log mentah

Kedalaman perluasan: 0

Kedalaman perluasan: 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 bidang sumber untuk diperluas, seperti content.

  • JSON Expansion Depth: Jumlah level untuk diperluas dalam objek JSON. Nilai 0 (default) memperluas semua level. Nilai 1 mencegah perluasan objek bersarang.

  • Character to Concatenate Expanded Keys: Karakter yang digunakan untuk menggabungkan nama bidang bersarang. Default adalah garis bawah _.

  • Name Prefix of Expanded Keys: Awalan untuk nama bidang setelah perluasan JSON.

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

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

    Untuk mengganti nama bidang yang diperluas, misalnya dari prefix_s_key_k1 menjadi new_field_name, Anda dapat menambahkan prosesor Rename Fields untuk melakukan pemetaan.
  • Untuk informasi tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Studi Kasus 2: Log terstruktur.


Penguraian array JSON

Gunakan fungsi json_extract untuk mengekstrak objek JSON dari array JSON.

Contoh:

Log mentah

Objek yang diekstrak

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

Prosedur: Di halaman Logtail Configuration, di bagian 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 bernama json1 dan json2.

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

Penguraian data (mode Apache)

Anda dapat menyusun konten log menjadi beberapa pasangan kunci-nilai berdasarkan definisi di file konfigurasi log Apache Anda.

Contoh:

Log mentah

Format Log Umum Apache combined Penguraian

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

Prosedur: Di halaman Logtail 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 bidang ini berdasarkan Log Format yang dipilih.

    Penting

    Anda harus memverifikasi konten yang diisi otomatis untuk memastikan identik dengan definisi LogFormat di file konfigurasi Apache di server Anda, yang biasanya terletak di /etc/apache2/apache2.conf.

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


Penyamaran data

Sembunyikan data sensitif dalam log Anda.

Contoh:

Log mentah

Hasil yang disembunyikan

[{'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: Bidang 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: Jika Anda mengatur Data Masking Method ke const, Anda harus memasukkan string untuk mengganti konten sensitif.

  • Content Expression that Precedes Replaced Content: Ekspresi reguler yang mencocokkan konten tepat sebelum data sensitif. Ekspresi ini menggunakan sintaks RE2.

  • Content Expression to Match Replaced Content: Ekspresi reguler yang mencocokkan konten sensitif. Ekspresi ini menggunakan sintaks RE2.


Penguraian waktu

Mengurai bidang waktu di log dan mengatur hasil yang diurai sebagai bidang __time__ log.

Contoh:

Log mentah

Hasil

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

Log yang diurai ditampilkan sebagai pasangan kunci-nilai terstruktur, dengan bidang waktu diurai dengan benar sebagai waktu log (misalnya, 09-29 09:56:01) dan bidang lain seperti cluster, level, message, dan userId ditampilkan secara independen.

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

  • Original Field: Bidang yang berisi nilai waktu yang akan diurai.

  • Time Format: format waktu yang sesuai dengan nilai waktu di log.

  • Time Zone: Zona waktu bidang waktu sumber. Secara default, sistem menggunakan zona waktu lingkungan tempat proses LoongCollector (Logtail) berjalan.

Lampiran: Batasan ekspresi reguler

Ekspresi reguler untuk penyaringan kontainer menggunakan mesin Go RE2, yang memiliki batasan sintaks dibandingkan mesin lain seperti Perl Compatible Regular Expressions (PCRE). Perhatikan hal berikut saat menulis ekspresi reguler:

1. Perbedaan sintaks grup bernama

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

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

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

2. Fitur ekspresi reguler yang tidak didukung

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

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

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

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

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

  • Grup atomik: (?>...)

3. Rekomendasi

Untuk men-debug ekspresi reguler Anda, gunakan alat seperti Regex101. Untuk memastikan kompatibilitas, pilih mode Golang (RE2) untuk validasi. Plugin akan gagal mengurai atau menemukan kecocokan dengan ekspresi yang menggunakan sintaks yang tidak didukung.

Lampiran: Perbandingan versi output standar kontainer

Untuk meningkatkan efisiensi penyimpanan dan konsistensi pengumpulan, format metadata log untuk output standar kontainer telah ditingkatkan. Dalam format baru, semua metadata dikonsolidasikan di bawah bidang __tag__ untuk mengoptimalkan penyimpanan dan menstandarkan format.

  1. Keunggulan inti versi baru

    • Keuntungan kinerja signifikan

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

      • Mendukung plugin native untuk pemrosesan data dan pemrosesan paralel multi-threaded untuk memanfaatkan sumber daya sistem secara penuh.

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

    • Keandalan yang ditingkatkan

      • Mendukung antrian rotasi log untuk output standar kontainer dan menyatukan mekanisme pengumpulan log dengan mekanisme pengumpulan file. Penyatuan ini memastikan keandalan tinggi selama rotasi log cepat.

    • Konsumsi sumber daya lebih rendah

      • Penggunaan CPU berkurang 20% hingga 25%.

      • Penggunaan memori berkurang 20% hingga 25%.

    • Konsistensi O&M yang ditingkatkan

      • Konfigurasi parameter terpadu: Parameter konfigurasi untuk plugin pengumpulan output standar kontainer baru konsisten dengan plugin pengumpulan file.

      • Manajemen metadata terpadu: Nama bidang dan lokasi penyimpanan untuk metadata kontainer sekarang konsisten dengan format pengumpulan file. Akibatnya, sisi konsumen hanya memerlukan satu set logika pemrosesan.

  2. Perbandingan fitur versi baru dan lama

    Fitur

    Perilaku sebelumnya

    Perilaku baru

    Metode penyimpanan

    Metadata disematkan dalam konten log sebagai bidang individual.

    Metadata dikonsolidasikan di bawah bidang __tag__.

    Efisiensi penyimpanan

    Setiap entri log berisi set lengkap metadata duplikat, yang mengonsumsi lebih banyak ruang penyimpanan.

    Beberapa entri log dari sumber yang sama dapat menggunakan kembali metadata, menghemat biaya penyimpanan.

    Konsistensi format

    Format tidak konsisten dengan format pengumpulan file.

    Nama bidang dan struktur penyimpanan sekarang konsisten dengan format pengumpulan file, memberikan pengalaman terpadu.

    Metode akses kueri

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

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

  3. Pemetaan bidang metadata kontainer

    Parameter sebelumnya

    Parameter 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 bagian tag log dalam format __tag__:<key> alih-alih disematkan dalam konten log.

  4. Dampak pada pengguna

    • Adaptasi sisi konsumen: Karena lokasi penyimpanan berubah dari "Content" ke "Tag", Anda harus menyesuaikan logika konsumsi log Anda. Misalnya, Anda harus menggunakan __tag__ untuk mengakses bidang saat menjalankan kueri.

    • Kompatibilitas kueri SQL: Kueri SQL secara otomatis kompatibel mundur, sehingga Anda tidak perlu memodifikasi kueri yang ada untuk memproses log dari kedua versi.

Informasi lebih lanjut

Parameter global

Parameter

Deskripsi

Nama konfigurasi

Nama konfigurasi Logtail. Nama ini harus unik dalam project dan tidak dapat diubah setelah konfigurasi dibuat.

Tipe topik log

Metode untuk menghasilkan topik log. Anda dapat menghasilkan topik dari kelompok mesin, mengekstrak topik dari jalur file, atau menentukan topik kustom.

Parameter lanjutan

Untuk parameter lanjutan opsional lainnya untuk konfigurasi global, lihat Buat konfigurasi pipeline Logtail.

Parameter masukan

Parameter

Deskripsi

Mode deployment Logtail

DaemonSet: Men-deploy instans LoongCollector di setiap node dalam kluster untuk mengumpulkan log dari semua kontainer di node tersebut.

Sidecar: Men-deploy kontainer LoongCollector di setiap pod untuk mengumpulkan log dari semua kontainer di pod tersebut. Pengumpulan log diisolasi antar pod.

Tipe jalur file

Anda dapat mengonfigurasi Path in Container atau Host Path.

  • Path in Container: Mengumpulkan file log teks dari jalur tertentu di dalam kontainer.

  • Host Path: Mengumpulkan log layanan dari jalur tertentu di node kluster.

Jalur file

Tentukan direktori log dan nama file berdasarkan lokasi log di host (misalnya, ECS).

  • Di host Linux, jalur log harus dimulai dengan garis miring (/). Contoh: /apsara/nuwa/**/app.Log.

  • Di host Windows, jalur log harus dimulai dengan huruf drive. Contoh: C:\Program Files\Intel\**\*.Log.

Anda dapat menentukan nama eksak atau menggunakan wildcard untuk direktori dan file. Untuk informasi lebih lanjut, lihat Pencocokan wildcard. Hanya wildcard tanda bintang (*) dan tanda tanya (?) yang didukung di jalur log.

Metode penemuan file menggunakan pencocokan direktori multi-level, yang menemukan semua file yang cocok di direktori yang ditentukan dan subdirektorinya. Contoh:

  • /apsara/nuwa/**/*.log menentukan semua file yang memiliki ekstensi .log di direktori /apsara/nuwa dan subdirektorinya.

  • /var/logs/app_*/**/*.log menentukan semua file yang memiliki ekstensi .log di semua direktori yang cocok dengan format app_* di direktori /var/logs dan subdirektorinya.

  • /var/log/nginx/**/access* menentukan semua file yang namanya dimulai dengan access di direktori /var/log/nginx dan subdirektorinya.

Kedalaman pemantauan direktori maksimum

Kedalaman pemantauan direktori maksimum. Nilai ini menentukan kedalaman maksimum yang dapat dicocokkan oleh wildcard ** di File Path. Nilai 0 hanya memantau direktori saat ini.

Output standar

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

Error standar

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

Izinkan pengumpulan ganda untuk output standar

Secara default, output standar kontainer hanya dapat dicocokkan dengan satu konfigurasi Logtail untuk pengumpulan output standar. Jika Anda perlu mengumpulkan output standar menggunakan beberapa konfigurasi, aktifkan sakelar Allow File to Be Collected for Multiple Times.

Aktifkan pratinjau metadata kontainer

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

Penyaringan kontainer

  • Kondisi filter

Penting
  • Label kontainer, yang dapat Anda ambil dengan menjalankan perintah docker inspect, berbeda dari label Kubernetes. Untuk informasi lebih lanjut, lihat Dapatkan label kontainer.

  • Variabel lingkungan adalah variabel yang Anda konfigurasikan saat startup kontainer. Untuk informasi lebih lanjut, lihat Dapatkan variabel lingkungan kontainer.

  • Dalam skenario Kubernetes, kami merekomendasikan menggunakan informasi tingkat Kubernetes, seperti K8s Pod Name Regular Matching, K8s Namespace Regular Matching, K8s Container Name Regular Matching, dan Kubernetes Pod Label Whitelist, untuk menyaring kontainer.

  1. Namespace Kubernetes dan nama kontainer dipetakan ke label kontainer io.kubernetes.pod.namespace dan io.kubernetes.container.name. Kami merekomendasikan menggunakan label kontainer ini untuk menyaring kontainer. Misalnya, pod termasuk dalam namespace backend-prod dan kontainernya bernama worker-server. Untuk mengumpulkan log dari kontainer ini, Anda dapat menambahkan io.kubernetes.pod.namespace : backend-prod atau io.kubernetes.container.name : worker-server ke daftar putih label kontainer.

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

K8s Pod Name Regular Matching

Menentukan kontainer dari mana Anda ingin mengumpulkan log berdasarkan nama pod. Pencocokan ekspresi reguler didukung. Misalnya, jika Anda mengatur parameter ini ke ^(nginx-log-demo.*)$, semua kontainer di pod yang namanya dimulai dengan nginx-log-demo dicocokkan.

K8s Namespace Regular Matching

Menentukan kontainer dari mana Anda ingin mengumpulkan log berdasarkan nama namespace. Pencocokan ekspresi reguler didukung. Misalnya, jika Anda mengatur parameter ini ke ^(default|nginx)$, semua kontainer di namespace nginx dan default dicocokkan.

K8s Container Name Regular Matching

Menentukan kontainer dari mana Anda ingin mengumpulkan log berdasarkan nama kontainer. Nama kontainer Kubernetes didefinisikan di spec.containers. Pencocokan ekspresi reguler didukung. Misalnya, jika Anda mengatur parameter ini ke ^(container-test)$, semua kontainer bernama container-test 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.)

Daftar putih label kontainer memilih kontainer untuk pengumpulan log. Secara default, parameter ini kosong, yang menunjukkan bahwa output standar semua kontainer dikumpulkan. Untuk mengonfigurasi daftar putih label kontainer, Anda harus menentukan LabelKey. LabelValue bersifat opsional.

  • Jika Anda membiarkan LabelValue kosong, semua kontainer yang labelnya berisi LabelKey yang ditentukan cocok.

  • Jika Anda menentukan LabelValue, hanya kontainer yang labelnya merupakan pasangan LabelKey=LabelValue yang ditentukan yang cocok.

    Secara default, pencocokan string digunakan untuk LabelValue. Kecocokan hanya terjadi jika LabelValue identik dengan nilai label kontainer. Jika nilai dimulai dengan ^ dan diakhiri dengan $, pencocokan ekspresi reguler digunakan. Misalnya, Anda dapat mengatur LabelKey ke io.kubernetes.container.name dan LabelValue ke ^(nginx|cube)$. Konfigurasi ini mencocokkan kontainer bernama nginx atau cube.

Jika Anda mengonfigurasi beberapa daftar putih, daftar putih dievaluasi dengan logika OR. Kontainer cocok jika labelnya cocok dengan salah satu 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.)

Daftar hitam label kontainer menentukan kontainer yang ingin Anda kecualikan dari pengumpulan log. Secara default, parameter ini kosong, yang menunjukkan bahwa tidak ada kontainer yang dikecualikan. Untuk mengonfigurasi daftar hitam label kontainer, Anda harus menentukan LabelKey. LabelValue bersifat opsional.

  • Jika Anda membiarkan LabelValue kosong, konfigurasi ini mengecualikan semua kontainer yang labelnya berisi LabelKey yang ditentukan.

  • Jika Anda menentukan LabelValue, konfigurasi ini hanya mengecualikan kontainer yang labelnya merupakan pasangan LabelKey=LabelValue yang ditentukan.

    Secara default, pencocokan string digunakan untuk LabelValue. Kecocokan hanya terjadi jika LabelValue identik dengan nilai label kontainer. Jika nilai dimulai dengan ^ dan diakhiri dengan $, pencocokan ekspresi reguler digunakan. Misalnya, Anda dapat mengatur LabelKey ke io.kubernetes.container.name dan LabelValue ke ^(nginx|cube)$. Konfigurasi ini mengecualikan kontainer bernama nginx atau cube.

Jika Anda mengonfigurasi beberapa daftar hitam, daftar hitam dievaluasi dengan logika OR. Kontainer dikecualikan jika labelnya cocok dengan salah satu daftar hitam.

Environment Variable Whitelist

Daftar putih variabel lingkungan menentukan kontainer dari mana Anda ingin mengumpulkan log. Secara default, parameter ini kosong, yang menunjukkan bahwa output standar semua kontainer dikumpulkan. Untuk mengonfigurasi daftar putih variabel lingkungan, Anda harus menentukan EnvKey. EnvValue bersifat opsional.

  • Jika Anda membiarkan EnvValue kosong, semua kontainer yang variabel lingkungannya berisi EnvKey yang ditentukan cocok.

  • Jika Anda menentukan EnvValue, hanya kontainer yang variabel lingkungannya merupakan pasangan EnvKey=EnvValue yang ditentukan yang cocok.

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

Jika Anda mengonfigurasi beberapa daftar putih, daftar putih dievaluasi dengan logika OR. Kontainer cocok jika variabel lingkungannya cocok dengan salah satu daftar putih.

Environment Variable Blacklist

Daftar hitam variabel lingkungan menentukan kontainer yang ingin Anda kecualikan dari pengumpulan log. Secara default, parameter ini kosong, yang menunjukkan bahwa tidak ada kontainer yang dikecualikan. Untuk mengonfigurasi daftar hitam variabel lingkungan, Anda harus menentukan EnvKey. EnvValue bersifat opsional.

  • Jika Anda membiarkan EnvValue kosong, konfigurasi ini mengecualikan semua kontainer yang variabel lingkungannya berisi EnvKey yang ditentukan.

  • Jika Anda menentukan EnvValue, konfigurasi ini hanya mengecualikan kontainer yang variabel lingkungannya merupakan pasangan EnvKey=EnvValue yang ditentukan.

    Secara default, pencocokan string digunakan untuk EnvValue. Kecocokan hanya terjadi jika EnvValue identik dengan nilai variabel lingkungan. Jika nilai dimulai dengan ^ dan diakhiri dengan $, pencocokan ekspresi reguler digunakan. Misalnya, Anda dapat mengatur EnvKey ke NGINX_SERVICE_PORT dan EnvValue ke ^(80|6379)$. Konfigurasi ini mengecualikan kontainer yang port layanannya 80 atau 6379.

Jika Anda mengonfigurasi beberapa daftar hitam, daftar hitam dievaluasi dengan logika OR. Kontainer dikecualikan jika variabel lingkungannya cocok dengan salah satu daftar hitam.

Kubernetes Pod Label Whitelist

Menentukan kontainer dari mana Anda ingin mengumpulkan log berdasarkan daftar putih label Kubernetes. Untuk mengonfigurasi daftar putih label Kubernetes, Anda harus menentukan LabelKey. LabelValue bersifat opsional.

  • Jika Anda membiarkan LabelValue kosong, semua kontainer yang label Kubernetes-nya berisi LabelKey yang ditentukan cocok.

  • Jika Anda menentukan LabelValue, hanya kontainer yang label Kubernetes-nya merupakan pasangan LabelKey=LabelValue yang ditentukan yang cocok.

    Secara default, pencocokan string digunakan untuk LabelValue. Kecocokan hanya terjadi jika LabelValue identik dengan nilai label Kubernetes. Jika nilai dimulai dengan ^ dan diakhiri dengan $, pencocokan ekspresi reguler digunakan. Misalnya, Anda dapat mengatur LabelKey ke app dan LabelValue ke ^(test1|test2)$. Konfigurasi ini mencocokkan kontainer yang memiliki label Kubernetes app:test1 atau app:test2.

Jika Anda mengonfigurasi beberapa daftar putih, daftar putih dievaluasi dengan logika OR. Kontainer cocok jika label Kubernetes-nya cocok dengan salah satu daftar putih.

Catatan
  • Jika Anda mengubah label sumber daya manajemen Kubernetes, seperti deployment, saat runtime, pod spesifik 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 pod K8s, pastikan Anda mengacu pada label pod. Untuk informasi lebih lanjut tentang label Kubernetes, lihat Labels and Selectors.

Kubernetes Pod Label Blacklist

Menentukan kontainer yang ingin Anda kecualikan dari pengumpulan log berdasarkan daftar hitam label Kubernetes. Untuk mengonfigurasi daftar hitam label Kubernetes, Anda harus menentukan LabelKey. LabelValue bersifat opsional.

  • Jika Anda membiarkan LabelValue kosong, konfigurasi ini mengecualikan semua kontainer yang label Kubernetes-nya berisi LabelKey yang ditentukan.

  • Jika Anda menentukan LabelValue, konfigurasi ini hanya mengecualikan kontainer yang label Kubernetes-nya merupakan pasangan LabelKey=LabelValue yang ditentukan.

    Secara default, pencocokan string digunakan untuk LabelValue. Kecocokan hanya terjadi jika LabelValue identik dengan nilai label Kubernetes. Jika nilai dimulai dengan ^ dan diakhiri dengan $, pencocokan ekspresi reguler digunakan. Misalnya, Anda dapat mengatur LabelKey ke app dan LabelValue ke ^(test1|test2)$. Konfigurasi ini mengecualikan kontainer yang memiliki label Kubernetes app:test1 atau app:test2.

Jika Anda mengonfigurasi beberapa daftar hitam, daftar hitam dievaluasi dengan logika OR. Kontainer dikecualikan jika label Kubernetes-nya cocok dengan salah satu daftar hitam.

Catatan
  • Jika Anda mengubah label sumber daya manajemen Kubernetes, seperti deployment, saat runtime, pod spesifik 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 pod K8s, pastikan Anda mengacu pada label pod. Untuk informasi lebih lanjut tentang label Kubernetes, lihat Labels and Selectors.

Pengayaan tag log

Anda dapat menambahkan variabel lingkungan dan label Kubernetes ke log sebagai tag log.

Environment Variables

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

Pod Labels

Setelah Anda mengonfigurasi parameter ini, Layanan Log menambahkan bidang yang terkait dengan label pod Kubernetes ke log. Misalnya, jika Anda mengatur Pod Label Name ke app dan Tag Name ke k8s_pod_app, dan pod Kubernetes memiliki label app=serviceA, Layanan Log menambahkan bidang __tag__:__k8s_pod_app__: serviceA ke log.

Encoding file

Format encoding file log.

Ukuran pengumpulan awal

Saat konfigurasi pertama kali berlaku, parameter ini menentukan posisi awal pengumpulan log relatif terhadap akhir file. Nilai default adalah 1.024 KB.

  • Selama pengumpulan pertama, jika file lebih kecil dari 1.024 KB, Logtail mengumpulkan log dari awal file.

  • Selama pengumpulan pertama, jika file lebih besar dari 1.024 KB, Logtail mengumpulkan log mulai dari 1.024 KB sebelum akhir file.

Anda dapat memodifikasi First Collection Size. Nilai dapat berkisar dari 0 hingga 10.485.760 KB.

Daftar hitam pengumpulan

Setelah Anda mengaktifkan sakelar Collection Blacklist, Anda dapat mengonfigurasi daftar hitam untuk mengabaikan direktori atau file tertentu selama pengumpulan log. Anda dapat menentukan nama eksak atau menggunakan wildcard untuk direktori dan file. Hanya wildcard tanda bintang (*) dan tanda tanya (?) yang didukung.

Penting
  • Jika Anda menggunakan wildcard saat mengonfigurasi File Path tetapi perlu mengecualikan beberapa path yang cocok, Anda harus menentukan path lengkap tersebut dalam Collection Blacklist untuk memastikan bahwa blacklist berlaku.

    Misalnya, Anda mengatur File Path ke /home/admin/app*/log/*.log tetapi ingin mengecualikan semua subdirektori dalam direktori /home/admin/app1*. Dalam hal ini, Anda harus memilih Directory Blacklist dan mengatur direktori ke /home/admin/app1*/**. Jika Anda mengatur direktori ke /home/admin/app1*, blacklist tidak berlaku.

  • Pencocokan terhadap daftar hitam menimbulkan overhead komputasi. Kami merekomendasikan menentukan maksimal 10 entri daftar hitam.

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

Anda dapat mengonfigurasi daftar hitam untuk jalur file, file, dan direktori. Tabel berikut menjelaskan jenis daftar hitam.

File Path Blacklist

  • Jika Anda memilih File Path Blacklist dan mengatur jalur ke /home/admin/private*.log, semua file yang namanya dimulai dengan private dan diakhiri dengan .log di direktori /home/admin/ diabaikan selama pengumpulan log.

  • Jika Anda memilih File Path Blacklist dan mengatur jalur ke /home/admin/private*/*_inner.log, file yang namanya diakhiri dengan _inner.log di direktori yang namanya dimulai dengan private di direktori /home/admin/ diabaikan selama pengumpulan log. Misalnya, file /home/admin/private/app_inner.log diabaikan, tetapi file /home/admin/private/app.log dikumpulkan.

File blacklist

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

Directory blacklist

  • Jika Anda memilih Directory Blacklist dan mengatur direktori ke /home/admin/dir1, semua file di direktori /home/admin/dir1 diabaikan selama pengumpulan log.

  • Jika Anda memilih Directory Blacklist dan mengatur direktori ke /home/admin/dir*, semua file di subdirektori yang namanya dimulai dengan dir di direktori /home/admin/ diabaikan selama pengumpulan log.

  • Jika Anda memilih Directory Blacklist dan mengatur direktori ke /home/admin/*/dir, semua file di subdirektori tingkat kedua bernama dir di direktori /home/admin/ diabaikan selama pengumpulan log. 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, hanya satu konfigurasi Logtail yang dapat mengumpulkan log dari file tertentu. Untuk mengumpulkan log dari file beberapa kali, aktifkan sakelar Allow File to Be Collected for Multiple Times.

Parameter lanjutan

Untuk informasi lebih lanjut tentang parameter lanjutan opsional lainnya untuk plugin input file, lihat Buat konfigurasi pipeline Logtail.

Parameter pemrosesan

Parameter

Deskripsi

Sampel log

Sampel data log Anda. Kami merekomendasikan menggunakan log dari lingkungan produksi Anda. Sampel log membantu Anda mengonfigurasi parameter pemrosesan log dan menyederhanakan konfigurasi. Anda dapat menambahkan beberapa sampel. 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

  • Tipe log multi-baris: Log multi-baris adalah satu entri log yang mencakup beberapa baris berturut-turut. Anda harus menentukan aturan untuk mengidentifikasi awal setiap entri log.

    • Custom: Gunakan Regex to Match First Line untuk mencocokkan baris pertama 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"
        }
      }
  • Aksi saat parsing 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 mengurai konten log di atas:

    • Discard: Membuang log.

    • Retain Single Line: Mempertahankan setiap baris sebagai log terpisah. Dalam hal ini, proses ini menghasilkan empat log terpisah.

Metode pemrosesan

Processors: Anda dapat menggunakan kombinasi Native Processor dan Extended Processor. Untuk informasi lebih lanjut tentang prosesor, lihat Proses data menggunakan plugin Logtail.

Penting

Batasan penggunaan prosesor tunduk pada informasi di halaman konsol.

  • Logtail 2.0 dan yang lebih baru

    • Anda dapat menggabungkan prosesor native dalam urutan apa pun.

    • Anda dapat menggunakan prosesor native dan prosesor ekstensi secara bersamaan. Namun, prosesor ekstensi harus ditempatkan setelah semua prosesor native.

  • Versi Logtail sebelum 2.0

    • Anda tidak dapat menggunakan prosesor native dan prosesor ekstensi secara bersamaan.

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

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

      • Prosesor berikutnya dapat mencakup maksimal satu plugin penguraian waktu, satu plugin filter, dan beberapa plugin penyamaran data.

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

      • Unggah hanya log yang diurai dengan sukses:

        Kosongkan kotak centang Keep Source Field on Parse Failure dan Keep Source Field on Parse Success.

      • Unggah log yang diurai saat parsing berhasil dan log mentah saat parsing gagal:

        Pilih kotak centang Keep Source Field on Parse Failure, kosongkan kotak centang Keep Source Field on Parse Success, lalu atur Renamed Source Field ke __raw__.

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

        Misalnya, jika log mentah "content": "{"request_method":"GET", "request_time":"200"}" diurai dengan sukses, menambahkan bidang mentah menambahkan bidang lain ke log yang diurai. Nama bidang yang ditambahkan ditentukan oleh Renamed Source Field (jika tidak ditentukan, nama bidang asli digunakan), dan nilainya adalah log mentah {"request_method":"GET", "request_time":"200"}.

        Pilih kotak centang Keep Source Field on Parse Failure dan Keep Source Field on Parse Success. Lalu, atur Renamed Source Field ke nama bidang yang menyimpan log mentah, aktifkan advanced parameters, lalu atur Parameter Lanjutan ke {"CopyingRawLog":true}.