全部产品
Search
文档中心

Simple Log Service:Kumpulkan log kontainer (standard output dan file) dari kluster menggunakan konsol

更新时间:Jan 29, 2026

Dalam lingkungan Kubernetes, log kontainer yang tersebar sulit dikelola, sehingga menyebabkan troubleshooting menjadi tidak efisien dan biaya O&M tinggi. Untuk mengatasi hal ini, Anda dapat menerapkan collector data LoongCollector dalam mode DaemonSet dan membuat konfigurasi pengumpulan di konsol Simple Log Service. Pendekatan ini memungkinkan pengumpulan log terpadu dan pemrosesan terstruktur, yang meningkatkan efisiensi pengambilan log, diagnosis masalah, dan analisis observabilitas.

Penerapan

  • Lingkungan runtime:

    • Container Service for Kubernetes (ACK) (edisi Managed dan Dedicated) serta kluster Kubernetes yang dikelola sendiri didukung.

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

    • Runtime kontainer (hanya Docker dan Containerd)

      • Docker:

        • Memerlukan izin akses ke docker.sock.

        • Pengumpulan standard output hanya mendukung driver log JSON.

        • Hanya driver penyimpanan overlay dan overlay2 yang didukung. Untuk tipe driver penyimpanan lainnya, Anda harus melakukan mount manual direktori log.

      • Containerd: Memerlukan izin akses ke containerd.sock.

  • Persyaratan resource: LoongCollector (Logtail) berjalan dengan prioritas tinggi sebagai `system-cluster-critical`. Jangan menerapkannya jika resource kluster tidak mencukupi, karena pod yang ada pada node tersebut mungkin akan dievakuasi.

    • CPU: Cadangkan minimal 0,1 core.

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

    • Penggunaan aktual bergantung pada laju pengumpulan, jumlah direktori dan file yang dipantau, serta tingkat kemacetan jaringan. Pastikan penggunaan aktual berada di bawah 80% dari batas yang ditentukan.

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

    Untuk membuat kebijakan kustom, rujuk ke kebijakan sistem AliyunCSManagedLogRolePolicy. Anda dapat menyalin izin dari kebijakan tersebut dan memberikannya kepada Pengguna RAM atau role target untuk konfigurasi izin detail halus.

Alur kerja konfigurasi pengumpulan

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

    Untuk informasi lebih lanjut tentang pola Sidecar, lihat Kumpulkan log teks dari pod Kubernetes (pola Sidecar).
  2. Buat Logstore: Logstore digunakan untuk menyimpan log yang dikumpulkan.

  3. Buat dan konfigurasikan aturan pengumpulan log

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

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

      • Log multiline: Cocok untuk entri log tunggal yang membentang di beberapa baris, seperti stack exception Java atau traceback Python. Anda dapat menggunakan ekspresi reguler baris pertama untuk mengidentifikasi awal setiap entri log.

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

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

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

  4. Konfigurasi kueri dan analisis: Indeks teks penuh diaktifkan secara default untuk mendukung pencarian kata kunci. Anda dapat mengaktifkan indeks bidang untuk kueri tepat dan analisis bidang terstruktur guna meningkatkan efisiensi pencarian.

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

Langkah 1: Instal LoongCollector

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

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

Catatan

Jika waktu host berubah saat LoongCollector (Logtail) sedang berjalan, hal ini dapat menyebabkan pengumpulan log duplikat atau kehilangan data.

Kluster ACK

Anda dapat menginstal LoongCollector dari konsol Container Service for Kubernetes. Secara default, log dikirim ke proyek Simple Log Service di bawah akun Alibaba Cloud saat ini.

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

  2. Klik nama kluster target.

  3. Di panel navigasi kiri, klik Component Management.

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

    Catatan

    Saat membuat kluster, Anda dapat memilih Use Simple Log Service pada halaman Component Configuration dan memilih untuk Create New Project atau Use Existing Project.

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

    Jenis resource

    Nama resource

    Fungsi

    Proyek

    k8s-log-${cluster_id}

    Unit manajemen resource yang mengisolasi log layanan berbeda.

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

    Kelompok mesin

    k8s-group-${cluster_id}

    Kumpulan node pengumpulan log.

    Logstore

    config-operation-log

    Penting

    Jangan hapus Logstore ini.

    Menyimpan log komponen loongcollector-operator. Metode penagihannya sama dengan Logstore biasa. Untuk informasi lebih lanjut, lihat Item yang dikenai biaya metode pengukuran pay-by-ingested-data. Jangan buat konfigurasi pengumpulan di Logstore ini.

Kluster yang dikelola sendiri

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

    Wilayah Tiongkok

    wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.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 proyek tempat log dari kluster ini akan dikumpulkan, contoh: k8s-log-custom-sd89ehdq
    projectName: ""
    # Wilayah proyek, contoh Shanghai: cn-shanghai
    region: ""
    # UID akun Alibaba Cloud pemilik proyek. Sertakan dalam tanda kutip, contoh: "123456789"
    aliUid: ""
    # Jaringan yang digunakan. Parameter opsional: Internet, Intranet. Default adalah Internet.
    net: Internet
    # ID AccessKey dan rahasia AccessKey akun Alibaba Cloud atau Pengguna RAM. Akun harus memiliki izin kebijakan sistem AliyunLogFullAccess.
    accessKeyID: ""
    accessKeySecret: ""
    # ID kluster kustom. Nama hanya boleh berisi huruf besar, huruf kecil, angka, dan tanda hubung (-).
    clusterID: ""
  3. Di direktori loongcollector-custom-k8s-package, jalankan perintah berikut untuk menginstal LoongCollector dan komponen dependennya:

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

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

    Bersamaan dengan itu, Simple Log Service secara otomatis membuat resource berikut. Anda dapat login ke Konsol Simple Log Service untuk melihatnya.

    Jenis resource

    Nama resource

    Fungsi

    Proyek

    Nilai projectName yang didefinisikan dalam file values.yaml

    Unit manajemen resource yang mengisolasi log layanan berbeda.

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

    Kelompok mesin

    k8s-group-${cluster_id}

    Kumpulan node pengumpulan log.

    Logstore

    config-operation-log

    Penting

    Jangan hapus Logstore ini.

    Menyimpan log komponen loongcollector-operator. Metode penagihannya sama dengan Logstore biasa. Untuk informasi lebih lanjut, lihat Item yang dikenai biaya metode pengukuran pay-by-ingested-data. Jangan buat konfigurasi pengumpulan di Logstore ini.

Langkah 2: Buat Logstore

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

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

  2. Di panel navigasi kiri, pilih imageLog Storage, klik +, lalu buat Logstore:

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

    • Logstore Type: Pilih Standard atau Query berdasarkan perbandingan fitur.

    • Billing Mode:

      • Pay-by-feature: Anda ditagih secara terpisah untuk setiap resource, seperti penyimpanan, indeks, dan operasi baca/tulis. Mode penagihan ini cocok untuk skenario skala kecil atau skenario dengan penggunaan fitur yang tidak pasti.

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

    • Data Retention Period: Menentukan jumlah hari penyimpanan log. Nilainya berkisar antara 1 hingga 3.650. Nilai 3.650 menunjukkan retensi permanen. Nilai default adalah 30 hari.

    • Pertahankan nilai default untuk pengaturan lainnya dan klik OK. Untuk informasi lebih lanjut, lihat Kelola Logstore.

Langkah 3: Buat dan konfigurasikan aturan pengumpulan log

Tentukan log mana yang dikumpulkan oleh LoongCollector, cara mengurai struktur log, dan cara menyaring konten. Kemudian, Anda dapat menerapkan konfigurasi tersebut ke kelompok mesin.

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

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

    • Untuk standard output kontainer, pilih K8S - Stdout And Stderr - New Version.

      Templat untuk mengumpulkan standard output kontainer tersedia dalam versi baru dan lama. Kami menyarankan Anda menggunakan versi baru. Untuk informasi lebih lanjut tentang perbedaan antara versi baru dan lama, lihat Lampiran: Perbandingan versi standard output kontainer baru dan lama.
    • Untuk log teks kluster, pilih Kubernetes - File.

  3. Configure the Machine Group lalu klik Next:

    • Scenario: Pilih Kubernetes Clusters.

    • Deployment Method: Pilih ACK Daemonset atau Self-managed Cluster Daemonset.

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

  4. Pada halaman Logtail Configuration, tentukan parameter berikut lalu klik Next.

1. Konfigurasi global dan input

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

Kumpulkan standard output kontainer

Global Configurations

  • Configuration Name: Nama konfigurasi pengumpulan. Nama harus unik dalam proyek dan tidak dapat diubah setelah dibuat. Nama harus memenuhi persyaratan berikut:

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

    • Harus dimulai dan diakhiri dengan huruf kecil atau angka.

Konfigurasi Input

  • Nyalakan sakelar Standard Output atau Standard Error (keduanya diaktifkan secara default).

    Penting

    Jangan aktifkan standard output dan standard error secara bersamaan. Hal ini dapat menyebabkan kebingungan pada log yang dikumpulkan.

Kumpulkan log teks kluster

Global Configurations:

  • Configuration Name: Nama konfigurasi pengumpulan. Nama harus unik dalam proyek dan tidak dapat diubah setelah dibuat. Nama harus memenuhi persyaratan berikut:

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

    • Harus dimulai dan diakhiri dengan huruf kecil atau angka.

Input Configurations:

  • File Path Type:

    • Path In Container: Mengumpulkan file log dari dalam kontainer.

    • Host Path: Mengumpulkan log layanan lokal pada host.

  • File Path: Jalur absolut file log yang akan dikumpulkan.

    • Linux: Jalur harus dimulai dengan garis miring (/). Contoh, /data/mylogs/**/*.log menunjukkan semua file dengan 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 karakter wildcard ** di File Path. Nilai default adalah 0, yang berarti hanya direktori saat ini. Nilainya berkisar antara 0 hingga 1.000.

    Atur kedalaman ke 0 dan konfigurasikan jalur ke direktori tempat file berada.

2. Pemrosesan dan penstrukturan log

Konfigurasikan aturan pemrosesan log untuk mengonversi log mentah yang tidak terstruktur menjadi data terstruktur yang dapat dicari. Hal ini meningkatkan efisiensi kueri dan analisis log. Sebelum mengonfigurasi aturan, Anda dapat menambahkan sampel log:

Pada halaman Logtail Configuration, di bagian Processor Configurations, klik Add Sample Log lalu masukkan konten log yang ingin Anda kumpulkan. Sistem mengidentifikasi format log berdasarkan sampel dan membantu Anda menghasilkan ekspresi reguler serta aturan parsing, yang menyederhanakan konfigurasi.

Skenario 1: Pemrosesan log multiline (seperti stack trace Java)

Log, seperti stack exception Java dan objek JSON, sering kali membentang di beberapa baris. Dalam mode pengumpulan default, log tersebut dipecah menjadi beberapa catatan tidak lengkap, sehingga menyebabkan kehilangan konteks. Untuk mengatasi masalah ini, Anda dapat mengaktifkan mode pengumpulan multiline dan mengonfigurasi ekspresi reguler baris pertama untuk menggabungkan baris berurutan dari log menjadi satu entri log lengkap.

Contoh:

Log mentah tanpa pemrosesan apa pun

Dalam mode pengumpulan default, setiap baris adalah log terpisah, dan informasi stack terputus, sehingga kehilangan konteks

Aktifkan mode multiline dan gunakan ekspresi reguler baris pertama untuk mengidentifikasi log lengkap, sehingga mempertahankan struktur semantik penuh.

image

image

image

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

  • Type: Pilih Custom atau Multi-line JSON.

    • Custom: Karena format log mentah tidak tetap, Anda harus mengonfigurasi Regex To Match First Line untuk mengidentifikasi baris pertama setiap entri log.

      • Regex To Match First Line: Hasilkan secara otomatis atau masukkan ekspresi reguler secara manual. Ekspresi reguler harus mencocokkan seluruh baris data. Contohnya, ekspresi reguler yang mencocokkan data pada contoh sebelumnya adalah \[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*.

        • Generasi otomatis: Klik Automatically Generate Regular Expression. Lalu, di kotak teks Log Sample, pilih konten log yang ingin Anda ekstrak lalu klik Generate Regular Expression.

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

    • Multi-line JSON: Pilih opsi ini jika semua log mentah berformat JSON standar. Simple Log Service secara otomatis menangani jeda baris dalam satu log JSON.

  • Split Failure Handling:

    • Discard: Jika segmen teks gagal mencocokkan aturan awal baris, segmen tersebut akan dibuang.

    • Retain Single Line: Teks yang tidak cocok dipecah dan dipertahankan berdasarkan pola baris tunggal aslinya.

Skenario 2: Log terstruktur

Ketika log mentah berupa teks tidak terstruktur atau semi-terstruktur, seperti log akses NGINX atau log output aplikasi, kueri dan analisis langsung sering kali tidak efisien. Simple Log Service menyediakan berbagai plugin parsing data yang secara otomatis mengonversi log mentah dengan format berbeda menjadi data terstruktur. Hal ini memberikan fondasi data yang kuat untuk analisis, pemantauan, dan peringatan selanjutnya.

Contoh:

Log mentah tanpa pemrosesan apa pun

Log setelah parsing terstruktur

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 plugin parsing: Klik Add Processor untuk mengonfigurasi parsing ekspresi reguler, parsing separator, parsing JSON, dan plugin lainnya yang sesuai dengan format log Anda. Misalnya, untuk mengumpulkan log NGINX, pilih Native Processor > Data Parsing (NGINX Mode).

  2. NGINX Log Configuration: Salin sepenuhnya definisi log_format dari file konfigurasi server NGINX (nginx.conf) lalu tempelkan ke kotak teks ini.

    Contoh:

    log_format main  '$remote_addr - $remote_user [$time_local] "$request" ''$request_time $request_length ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent"';
    Penting

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

  3. Parameter konfigurasi umum: Parameter berikut muncul di berbagai plugin parsing data. Fungsi dan penggunaannya konsisten.

    • Bidang Asli: Tentukan nama bidang sumber yang akan diurai. Nilai default adalah content, yang merepresentasikan seluruh konten log yang dikumpulkan.

    • Pertahankan Bidang Asli Jika Parsing Gagal: Kami menyarankan Anda memilih opsi ini. Jika log tidak dapat diurai oleh plugin karena ketidakcocokan format, opsi ini memastikan konten log asli tidak hilang dan sepenuhnya dipertahankan di bidang asli yang ditentukan.

    • Pertahankan Bidang Asli Jika Parsing Berhasil: Jika Anda memilih opsi ini, konten log asli akan dipertahankan bahkan jika log berhasil diurai.

3. Penyaringan log

Saat pengumpulan log, mengumpulkan volume besar log bernilai rendah atau tidak relevan, seperti log level DEBUG atau INFO, dapat membuang resource penyimpanan, meningkatkan biaya, memengaruhi efisiensi kueri, dan menimbulkan risiko kebocoran data. Untuk mengatasi masalah ini, Anda dapat menggunakan kebijakan penyaringan detail halus untuk pengumpulan log yang efisien dan aman.

Kurangi biaya melalui penyaringan konten

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

Contoh:

Log mentah tanpa pemrosesan apa pun

Kumpulkan hanya log 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: Pada halaman Logtail Configuration, di area Processing Configuration

Klik Add Processor lalu pilih Native Processor > Data Filtering:

  • Field Name: Bidang log yang akan disaring.

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

Kontrol cakupan pengumpulan melalui daftar hitam

Anda dapat menggunakan mekanisme daftar hitam untuk mengecualikan direktori atau file tertentu. Hal ini mencegah log yang tidak relevan atau sensitif diunggah.

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

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

    • /home/admin/private*.log: Saat pengumpulan, semua file di direktori /home/admin/ yang dimulai dengan private dan diakhiri dengan .log diabaikan.

    • /home/admin/private*/*_inner.log: Saat pengumpulan, file yang diakhiri dengan _inner.log di direktori yang dimulai dengan private di bawah direktori /home/admin/ diabaikan.

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

    • app_inner.log: Saat pengumpulan, semua file bernama app_inner.log diabaikan.

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

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

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

    • /home/admin/*/dir: Saat pengumpulan, semua file di subdirektori bernama dir pada level kedua di bawah direktori /home/admin/ diabaikan. Misalnya, file di direktori /home/admin/a/dir diabaikan, tetapi file di direktori /home/admin/a/b/dir dikumpulkan.

Penyaringan kontainer

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

Prosedur: Pada halaman Logtail Configuration, di bagian Input Configurations, aktifkan Container Filtering lalu klik Add.

Beberapa kondisi digabungkan menggunakan logika AND. Semua pencocokan ekspresi reguler berbasis mesin RE2 bahasa Go. Mesin ini memiliki lebih banyak batasan dibanding mesin lain, seperti PCRE. Oleh karena itu, Anda harus menulis ekspresi reguler yang mematuhi panduan dalam Lampiran: Batasan ekspresi reguler (penyaringan kontainer).
  • Daftar Hitam/Putih Variabel Lingkungan: Tentukan kondisi variabel lingkungan untuk kontainer dari mana Anda ingin mengumpulkan log.

  • Daftar Hitam/Putih Label Pod K8s: Tentukan kondisi label untuk pod tempat kontainer yang ingin Anda kumpulkan lognya berada.

  • Pencocokan Regex Nama Pod K8s: Tentukan kontainer dari mana Anda ingin mengumpulkan log berdasarkan nama pod.

  • Pencocokan Regex Namespace K8s: Tentukan kontainer dari mana Anda ingin mengumpulkan log berdasarkan nama namespace.

  • Pencocokan Regex Nama Kontainer K8s: Tentukan kontainer dari mana Anda ingin mengumpulkan log berdasarkan nama kontainer.

  • Daftar Hitam/Putih label Kontainer: Kumpulkan log dari kontainer yang labelnya memenuhi kondisi yang ditentukan. Ini digunakan dalam skenario Docker dan tidak disarankan untuk skenario Kubernetes.

4. Kategorisasi log

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

Konfigurasikan topik log

Jika log beberapa aplikasi atau instans memiliki format yang sama tetapi jalur berbeda, seperti /apps/app-A/run.log dan /apps/app-B/run.log, sulit membedakan sumber log yang dikumpulkan. Dalam kasus ini, Anda dapat menghasilkan topik berdasarkan kelompok mesin, nama kustom, atau ekstraksi jalur file untuk membedakan secara fleksibel log dari layanan atau sumber jalur yang berbeda.

Prosedur: Pilih Global Configurations > Other Global Configurations > Log Topic Type. Pilih metode pembuatan topik. Tiga jenis berikut didukung:

  • Topik Kelompok Mesin: Jika konfigurasi pengumpulan diterapkan ke beberapa kelompok mesin, LoongCollector secara otomatis menggunakan nama kelompok mesin server sebagai nilai bidang __topic__ untuk diunggah. Ini cocok untuk skenario di mana log dibagi berdasarkan kluster host.

  • Custom: Formatnya adalah customized://<custom_topic_name>, contoh customized://app-login. Ini berlaku untuk skenario topik statis dengan identitas bisnis tetap.

  • Ekstraksi Jalur File: Ekstrak informasi kunci dari jalur lengkap file log untuk menandai sumber log secara dinamis. Ini cocok untuk situasi di mana beberapa pengguna atau aplikasi berbagi nama file log yang sama tetapi memiliki jalur berbeda.

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

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

    Konfigurasikan Ekstraksi Jalur File dan gunakan ekspresi reguler untuk mengekstrak informasi kunci dari jalur lengkap. Hasil yang cocok kemudian digunakan sebagai topik log untuk diunggah ke Logstore.

    Aturan ekstraksi: Berdasarkan grup penangkapan ekspresi reguler

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

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

    Jenis grup penangkapan

    Skenario

    Bidang yang dihasilkan

    Contoh regex

    Contoh jalur yang cocok

    Bidang yang dihasilkan

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

    Hanya satu dimensi yang dibutuhkan untuk membedakan sumber, seperti username atau lingkungan

    Menghasilkan bidang __topic__

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

    /logs/userA/app.log

    __topic__: userA

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

    Beberapa dimensi dibutuhkan tetapi tanpa label semantik

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

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

    /logs/userA/svcA/app.log

    __tag__:__topic_1__userA.

    __tag__:__topic_2__svcA

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

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

    Menghasilkan bidang tag __tag__:{name}

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

    /logs/userA/svcA/app.log

    __tag__:user:userA;

    __tag__:service:svcA

Pemberian tag log

Anda dapat mengaktifkan fitur pengayaan tag log untuk mengekstrak informasi kunci dari variabel lingkungan kontainer atau label pod Kubernetes lalu melampirkan informasi tersebut sebagai tag untuk pengelompokan log detail halus.

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

  • Environment Variables: Konfigurasikan nama variabel lingkungan dan nama tag tempat menyimpan nilai variabel tersebut.

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

    • Nama Tag: Nama tag variabel lingkungan.

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

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

    • Nama Tag: Nama tag.

5. Output

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

Distribusi multi-tujuan dinamis

Penting
  • Pengiriman multi-tujuan hanya didukung oleh LoongCollector 3.0.0 dan versi lebih baru. Logtail tidak mendukung fitur ini.

  • Anda dapat mengonfigurasi maksimal lima tujuan output.

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

Langkah konfigurasi: Pada halaman Logtail Configuration, di area Output Configuration.

  1. Klik image untuk memperluas konfigurasi output.

  2. Klik Add Output Target lalu lengkapi konfigurasi berikut:

    • Logstore: Pilih Logstore target.

    • Compression Method: Mendukung lz4 dan zstd.

    • Routing Configuration: Merutekan log berdasarkan bidang Tag-nya. Log yang cocok dengan konfigurasi routing diunggah ke Logstore target. Jika konfigurasi routing kosong, semua log yang dikumpulkan diunggah ke Logstore target.

      • Tag Name: Nama bidang tag untuk routing. Masukkan nama bidang secara langsung, seperti __path__, tanpa awalan __tag__:. Bidang tag diklasifikasikan ke dalam dua jenis berikut:

        Untuk informasi lebih lanjut tentang tag, lihat Kelola tag pengumpulan LoongCollector.
        • Terkait agen: Terkait dengan agen pengumpulan itu sendiri dan tidak bergantung pada plugin. Contohnya termasuk __hostname__ dan __user_defined_id__.

        • Terkait plugin input: Bergantung pada plugin input, yang menyediakan dan memperkaya log dengan informasi terkait. Contohnya termasuk __path__ untuk pengumpulan file, dan _pod_name_ serta _container_name_ untuk pengumpulan Kubernetes.

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

      • Discard Tag Field: Jika Anda mengaktifkan opsi ini, log yang diunggah tidak akan menyertakan bidang tag ini.

Langkah 4: Konfigurasi kueri dan analisis

Setelah Anda mengonfigurasi pemrosesan log dan plugin, klik Next untuk menuju halaman Query and Analysis Configuration:

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

  • Untuk melakukan kueri tepat berdasarkan bidang, Anda dapat mengklik Automatic Index Generation setelah Pratinjau Data dimuat. Simple Log Service menghasilkan indeks bidang berdasarkan entri pertama dalam data pratinjau.

Setelah konfigurasi selesai, klik Next untuk menyelesaikan seluruh alur pengumpulan.

Langkah 5: Validasi dan troubleshooting

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

Lihat log yang dilaporkan

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

  2. Kueri log: Buka halaman kueri dan analisis Logstore target lalu klik Search & Analyze. Rentang waktu default adalah 15 menit terakhir. Periksa apakah log baru mengalir masuk. Setiap log teks kontainer yang dikumpulkan berisi informasi bidang default berikut:

    Nama bidang

    Deskripsi

    __tag__:__hostname__

    Nama host kontainer.

    __tag__:__path__

    Jalur file log dalam kontainer.

    __tag__:_container_ip_

    Alamat IP kontainer.

    __tag__:_image_name_

    Nama image yang digunakan oleh kontainer.

    __tag__:_pod_name_

    Nama pod.

    __tag__:_namespace_

    Namespace tempat pod berada.

    __tag__:_pod_uid_

    Pengenal unik (UID) pod.

FAQ troubleshooting

Status heartbeat kelompok mesin adalah GAGAL

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

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

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

    Jika file dengan nama ID akun Alibaba Cloud proyek saat ini ada di jalur yang ditentukan, pengenal pengguna telah dikonfigurasi dengan benar.

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

    • Linux:

      # Konfigurasikan ID pengguna kustom. Jika direktori tidak ada, buat secara manual.
      echo "user-defined-1" > /etc/ilogtail/user_defined_id
    • Windows: Di direktori C:\LogtailData, buat file bernama user_defined_id lalu tulis pengenal kustom ke dalam file tersebut. Jika direktori tidak ada, Anda harus membuatnya secara manual.

  3. Jika pengenal pengguna dan pengenal kelompok mesin telah dikonfigurasi dengan benar, lihat Troubleshoot masalah kelompok mesin LoongCollector (Logtail) untuk informasi lebih lanjut tentang troubleshooting.


Error pengumpulan log atau error format

Masalah ini menunjukkan bahwa koneksi jaringan dan konfigurasi dasar normal. Masalah ini biasanya disebabkan oleh ketidakcocokan antara konten log dan aturan parsing. Anda harus melihat pesan error spesifik untuk menemukan penyebabnya:

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

  2. Di bagian Collection Exception Monitoring > Complete Error Information, lihat metrik alarm log error lalu 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: Tidak ada data yang dikumpulkan dari log kontainer

  1. Periksa log baru: Setelah Anda mengonfigurasi LoongCollector (Logtail) untuk pengumpulan, jika tidak ada log baru di file log target, LoongCollector (Logtail) tidak mengumpulkan data dari file tersebut.

2. Lihat log operasional LoongCollector (Logtail)

Lihat log operasional LoongCollector (Logtail) untuk mendapatkan informasi error terperinci.

  1. Login ke kontainer Logtail:

    1. Kueri pod Logtail.

      kubectl get po -n kube-system | grep logtail

      Sistem mengembalikan hasil yang mirip dengan berikut.

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

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

      Dalam contoh ini, logtail-ds-****d adalah ID pod. Ganti dengan nilai aktual.

  1. Lihat log operasional Logtail:

    Log Logtail disimpan di direktori /usr/local/ilogtail/ dalam kontainer Logtail. Nama file-nya adalah ilogtail.LOG dan logtail_plugin.LOG. Login ke kontainer Logtail lalu jalankan perintah berikut untuk melihat file 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

    Tujuan: Periksa jenis alarm di log error lalu 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 imageResources > Machine Groups lalu klik nama kelompok mesin target. Di bagian Machine Group Configurations > Machine Group Status, lihat status Heartbeat dan catat jumlah node dengan status heartbeat OK.

  1. Periksa jumlah node pekerja di kluster kontainer.

    1. Dapatkan file kubeconfig kluster dan gunakan kubectl untuk menghubungkan ke kluster.

    2. Lihat jumlah node pekerja di kluster.

      kubectl get node | grep -v master

      Sistem mengembalikan hasil yang mirip dengan berikut.

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

    • Status heartbeat semua node di kelompok mesin adalah Failed:

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

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

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

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

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

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

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

        4. Perbarui resource.

          kubectl apply -f ./logtail-daemonset.yaml

4. Periksa kondisi filter konfigurasi pengumpulan

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

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

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

FAQ

Bagaimana cara mengelola konfigurasi distribusi multi-tujuan?

Karena konfigurasi distribusi multi-tujuan terkait dengan beberapa Logstore, konfigurasi ini harus dikelola di halaman manajemen tingkat proyek:

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

  2. Di panel navigasi kiri proyek target, klik imageResources > Configuration Management.

    Catatan

    Halaman ini menyediakan manajemen terpusat untuk semua konfigurasi pengumpulan di bawah proyek, termasuk yang tersisa setelah Logstore dihapus secara tidak sengaja.

Bagaimana cara mengirim log kluster ACK ke proyek di akun Alibaba Cloud lain?

Anda dapat menginstal komponen LoongCollector (Logtail) Simple Log Service secara manual di kluster ACK lalu mengonfigurasinya dengan ID akun Alibaba Cloud atau kredensial akses (AccessKey) akun tujuan. Hal ini memungkinkan Anda mengirim log kontainer ke proyek Simple Log Service yang dimiliki oleh akun Alibaba Cloud lain.

Skenario: Karena alasan seperti struktur organisasi, isolasi izin, atau pemantauan terpadu, Anda mungkin perlu mengumpulkan data log dari kluster ACK lalu mengirimkannya ke proyek Simple Log Service yang dimiliki oleh akun Alibaba Cloud berbeda. Anda dapat melakukannya dengan menginstal LoongCollector (Logtail) secara manual untuk konfigurasi lintas akun.

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

  1. Hubungkan ke kluster Kubernetes lalu jalankan perintah sesuai wilayah kluster Anda:

    Wilayah Tiongkok

    wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.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 lalu modifikasi file konfigurasi ./loongcollector/values.yaml.

    # ===================== Informasi Wajib =====================
    # Nama proyek tempat log dari kluster ini akan dikumpulkan, contoh: k8s-log-custom-sd89ehdq
    projectName: ""
    # Wilayah proyek, contoh Shanghai: cn-shanghai
    region: ""
    # UID akun Alibaba Cloud pemilik proyek. Sertakan dalam tanda kutip, contoh: "123456789"
    aliUid: ""
    # Jaringan yang digunakan. Parameter opsional: Internet, Intranet. Default adalah Internet.
    net: Internet
    # ID AccessKey dan rahasia AccessKey akun Alibaba Cloud atau Pengguna RAM. Akun harus memiliki izin kebijakan sistem AliyunLogFullAccess.
    accessKeyID: ""
    accessKeySecret: ""
    # ID kluster kustom. Nama hanya boleh berisi huruf besar, huruf kecil, angka, dan tanda hubung (-).
    clusterID: ""
  3. Di direktori loongcollector-custom-k8s-package, jalankan perintah berikut untuk menginstal LoongCollector dan komponen dependennya:

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

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

    Bersamaan dengan itu, Simple Log Service secara otomatis membuat resource berikut. Anda dapat login ke Konsol Simple Log Service untuk melihatnya.

    Jenis resource

    Nama resource

    Fungsi

    Proyek

    Nilai projectName yang didefinisikan dalam file values.yaml

    Unit manajemen resource yang mengisolasi log layanan berbeda.

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

    Kelompok mesin

    k8s-group-${cluster_id}

    Kumpulan node pengumpulan log.

    Logstore

    config-operation-log

    Penting

    Jangan hapus Logstore ini.

    Menyimpan log komponen loongcollector-operator. Metode penagihannya sama dengan Logstore biasa. Untuk informasi lebih lanjut, lihat Item yang dikenai biaya metode pengukuran pay-by-ingested-data. Jangan buat konfigurasi pengumpulan di Logstore ini.

Bagaimana cara mengumpulkan log dari file yang sama atau standard output kontainer menggunakan beberapa konfigurasi pengumpulan?

Secara default, untuk mencegah duplikasi data, Simple Log Service hanya mengizinkan setiap sumber log dikumpulkan oleh satu konfigurasi pengumpulan:

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

  • Standard output (stdout) kontainer:

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

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

  1. Login ke Konsol Simple Log Service lalu buka proyek target.

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

  3. Klik ikon image di sebelah kiri nama Logstore untuk memperluasnya.

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

  5. Pada halaman konfigurasi Logtail, klik Edit lalu gulir ke bawah ke bagian Input Configurations:

    • Untuk mengumpulkan log file teks: Aktifkan Allow File To Be Collected For Multiple Times.

    • Untuk mengumpulkan standard output kontainer, aktifkan Allow Standard Output To Be Collected Multiple Times.

Mengapa saya mendapatkan error dependensi saat mencoba menguninstal komponen loongcollector(logtail-ds) di ACK?

Masalah: Saat Anda mencoba menghapus komponen pengumpulan log loongcollector (logtail-ds) di Container Service for Kubernetes (ACK), sistem melaporkan error: `The dependencies of this component are not met`.

Dependencies of addons are not met: terway-eniip depends on logtail-ds(>0.0) whose version is v3.x.x.x-aliyun or will be v3.x.x.x-aliyun.

Penyebab: Plugin jaringan terway-eniip telah mengaktifkan fitur pengumpulan log, yang bergantung pada komponen loongcollector (logtail-ds). Oleh karena itu, ACK tidak mengizinkan Anda menguninstal loongcollector (logtail-ds) secara langsung sebelum menghapus dependensi ini.

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

  1. Login ke Konsol Container Service for Kubernetes.

  2. Di daftar kluster, klik nama kluster target.

  3. Di panel navigasi kiri, klik Component Management.

  4. Di daftar komponen, cari dan temukan komponen terway-eniip, lalu klik image > Disable Logging.

  5. Di kotak dialog yang muncul, klik Confirm.

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

Mengapa entri log terakhir dilaporkan setelah penundaan lama? Mengapa kadang terpotong?

Penyebab: Log biasanya terpotong jika file log tidak memiliki line feed di akhir, atau jika log multiline, seperti stack exception, belum sepenuhnya ditulis. Karena collector tidak dapat menentukan apakah log telah berakhir, bagian akhir konten mungkin terpisah terlalu dini atau dilaporkan dengan penundaan. Mekanisme penanganan berbeda berdasarkan versi LoongCollector (Logtail):

  • Versi sebelum 1.8:
    Jika baris terakhir log tidak memiliki line feed (carriage return), atau jika paragraf log multiline belum selesai, collector menunggu tulisan berikutnya untuk memicu output. Hal ini dapat menyebabkan entri log terakhir ditahan lama tanpa dikirim hingga log baru ditulis.

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

    • Timeout default: 60 detik. Ini memastikan integritas dalam sebagian besar skenario.

    • Anda dapat menyesuaikan nilai ini sesuai kebutuhan, tetapi jangan mengaturnya ke 0. Hal ini dapat menyebabkan log terpotong atau sebagian hilang.

Solusi:

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

  1. Login ke Konsol Simple Log Service lalu buka proyek target.

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

  3. Klik ikon image di sebelah kiri nama Logstore untuk memperluasnya.

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

  5. Pada halaman konfigurasi Logtail, klik Edit:

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

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

      • Unit: Detik.

      • Nilai yang disarankan: ≥1 detik. Jangan mengaturnya ke 0. Hal ini dapat menyebabkan log terpotong atau sebagian hilang.

  6. Setelah konfigurasi, klik Save.

Mengapa LoongCollector (Logtail) beralih dari titik akhir internal ke titik akhir publik selama operasi? Dapatkah beralih kembali secara otomatis?

Jika LoongCollector (Logtail) mendeteksi anomali dalam komunikasi titik akhir internal, seperti kegagalan jaringan atau timeout koneksi, sistem secara otomatis beralih ke titik akhir publik untuk transmisi data. Hal ini memastikan kelangsungan dan keandalan pengumpulan log serta mencegah akumulasi atau kehilangan log.

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

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

Lampiran: Penjelasan detail plugin native

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

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

  2. Klik ikon image di sebelah kiri nama logstore untuk memperluasnya.

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

  4. Pada halaman konfigurasi Logtail, klik Edit.

Bagian ini hanya memperkenalkan plugin pemrosesan yang umum digunakan yang mencakup kasus penggunaan pemrosesan log umum. Untuk fitur lainnya, lihat Prosesor lanjutan.
Penting

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

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

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

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

Batasan urutan:

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

Parsing ekspresi reguler

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

Contoh:

Log mentah tanpa pemrosesan apa pun

Menggunakan plugin parsing regex

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; x64) 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 bagian Processor Configurations pada halaman Logtail Configuration, klik Add Processor, lalu pilih Native Processor > Data Parsing (Regex Mode):

  • Regular Expression: Mencocokkan log dan mendukung generasi otomatis atau input manual:

    • Generasi otomatis:

      • Klik Auto-generate Regular Expression.

      • Di kotak teks Log Sample, pilih konten log yang ingin Anda ekstrak.

      • Klik Generate Regular Expression.

        image

    • Input manual: Anda dapat Manually Enter A Regular Expression berdasarkan format log.

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

  • Extracted Field: Untuk konten log yang diambil (Value), atur nama bidang yang sesuai (Key).

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


Parsing berbasis pembatas

Anda dapat menggunakan pembatas untuk menstrukturkan konten log dan mengurai log menjadi beberapa pasangan kunci-nilai. Pembatas karakter tunggal maupun multi-karakter didukung.

Contoh:

Log mentah tanpa pemrosesan apa pun

Pisahkan bidang berdasarkan karakter yang ditentukan,

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

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

    Contohnya, untuk file CSV, pilih Custom lalu masukkan koma (,).

  • Quote: Jika nilai bidang berisi pemisah, Anda harus menentukan kutipan untuk mengapit bidang tersebut guna mencegah pemisahan yang salah.

  • Extracted Field: Atur nama bidang (Key) untuk setiap kolom sesuai urutan pemisahannya. Aturan berikut berlaku:

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

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

    • Panjang maksimum adalah 128 byte.

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


Parsing JSON standar

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

Contoh:

Log mentah tanpa pemrosesan apa pun

Pasangan kunci-nilai JSON standar diekstrak secara otomatis

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

  • Raw Field: Nilai default adalah content. Bidang ini digunakan untuk menyimpan konten log mentah untuk parsing.

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


Parsing JSON bersarang

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

Contoh:

Log mentah tanpa pemrosesan apa pun

Kedalaman ekspansi: 0, dengan kedalaman ekspansi digunakan sebagai awalan

Kedalaman ekspansi: 1, dengan kedalaman ekspansi digunakan sebagai awalan

{"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 bagian Processor Configurations pada halaman Logtail Configuration, 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 berarti ekspansi penuh (default), 1 berarti level saat ini, dan seterusnya.

  • Character To Concatenate Expanded Keys: Pembatas yang digunakan untuk menggabungkan nama bidang selama ekspansi JSON. Default adalah garis bawah _.

  • JSON Expansion Field Prefix: Menentukan awalan untuk nama bidang setelah ekspansi JSON.

  • Expand Array: Memperluas array menjadi pasangan kunci-nilai berindeks.

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

    Untuk mengganti nama bidang yang diperluas (misalnya, mengubah prefix_s_key_k1 menjadi new_field_name), Anda dapat menambahkan plugin Rename Field nanti untuk menyelesaikan pemetaan.
  • Untuk informasi lebih lanjut tentang parameter lainnya, lihat deskripsi parameter konfigurasi umum di Skenario 2: Log terstruktur.


Parsing array JSON

Anda dapat menggunakan json_extract fungsi untuk mengambil objek JSON dari array JSON.

Contoh:

Log mentah tanpa pemrosesan apa pun

Struktur array JSON yang diekstrak

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

Langkah konfigurasi: Pada halaman Logtail Configuration, di bagian Processor Configurations, ubah Processing Method ke SPL, konfigurasikan Pernyataan SPL, lalu gunakan fungsi json_extract untuk mengekstrak objek JSON dari array JSON.

Contoh: Ekstrak elemen dari array JSON di bidang log content lalu simpan hasilnya di bidang baru json1 dan json2.

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

Parsing log Apache

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

Contoh:

Log mentah tanpa pemrosesan apa pun

Format Log Umum Apache combined parsing

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

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

  • Log Format: combined

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

    Penting

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

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


Penyamaran data

Anda dapat menyamarkan data sensitif dalam log.

Contoh:

Log mentah tanpa pemrosesan apa pun

Hasil penyamaran

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

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

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

  • Data Masking Method:

    • const: Mengganti konten sensitif dengan string yang ditentukan.

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

  • Replacement String: Jika Anda mengatur Data Masking Method ke const, Anda harus memasukkan string untuk mengganti konten sensitif.

  • Content Expression That Precedes Replaced Content: Digunakan untuk menemukan konten sensitif, dikonfigurasi menggunakan sintaks RE2.

  • Expression For Content To Be Replaced: Ekspresi untuk konten sensitif, dikonfigurasi menggunakan sintaks RE2.


Parsing waktu

Anda dapat mengurai bidang waktu dalam log lalu mengatur hasil parsing sebagai bidang __time__ log.

Contoh:

Log mentah tanpa pemrosesan apa pun

Parsing waktu

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

image

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

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

  • Time Format: Atur format waktu berdasarkan konten waktu dalam log.

  • Time Zone: Pilih zona waktu bidang waktu dalam log. Default adalah zona waktu mesin, yaitu zona waktu lingkungan tempat proses LoongCollector (Logtail) berjalan.

Lampiran: Batasan ekspresi reguler (penyaringan kontainer)

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

1. Perbedaan sintaks grup bernama

Go menggunakan sintaks (?P<name>...) untuk mendefinisikan grup bernama dan tidak mendukung sintaks (?<name>...) dari PCRE.

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

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

2. Fitur ekspresi reguler yang tidak didukung

Fitur ekspresi reguler umum tetapi kompleks berikut tidak didukung oleh RE2. Hindari penggunaannya:

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

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

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

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

  • Grup atomik: (?>...)

3. Rekomendasi

Gunakan alat seperti Regex101 untuk men-debug ekspresi reguler. Untuk memvalidasi kompatibilitas, pilih mode Golang (RE2). Plugin tidak dapat mengurai atau mencocokkan ekspresi yang berisi sintaks yang tidak didukung.

Lampiran: Perbandingan versi standard output kontainer baru dan lama

Untuk meningkatkan efisiensi penyimpanan log dan konsistensi pengumpulan, format metadata log untuk standard output kontainer telah ditingkatkan. Format baru mengkonsolidasikan metadata ke bidang __tag__, yang mencapai optimasi penyimpanan dan standardisasi format.

  1. Keunggulan inti versi standard output baru

    • Peningkatan kinerja signifikan

      • Direfaktor dalam C++, kinerja meningkat 180% hingga 300% dibanding implementasi Go lama.

      • Mendukung plugin native untuk pemrosesan data dan pemrosesan paralel multi-threading, yang sepenuhnya memanfaatkan resource sistem.

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

    • Keandalan lebih tinggi

      • Mendukung antrian rotasi log standard output. Mekanisme pengumpulan log disatukan dengan mekanisme pengumpulan file, yang memberikan keandalan tinggi dalam skenario dengan rotasi log standard output cepat.

    • Konsumsi resource lebih rendah

      • Penggunaan CPU berkurang 20% hingga 25%.

      • Penggunaan memory berkurang 20% hingga 25%.

    • Konsistensi O&M yang ditingkatkan

      • Konfigurasi parameter terpadu: Parameter konfigurasi plugin pengumpulan standard output baru konsisten dengan plugin pengumpulan file.

      • Manajemen metadata terpadu: Penamaan bidang metadata kontainer dan lokasi penyimpanan log tag disatukan dengan skenario pengumpulan file. Sisi konsumen hanya perlu memelihara satu set logika pemrosesan.

  2. Perbandingan fitur versi baru dan lama

    Dimensi fitur

    Fitur versi lama

    Fitur versi baru

    Metode penyimpanan

    Metadata langsung disematkan dalam konten log sebagai bidang normal.

    Metadata disimpan terpusat di tag __tag__.

    Efisiensi penyimpanan

    Setiap log membawa metadata lengkap berulang-ulang, yang mengonsumsi lebih banyak ruang penyimpanan.

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

    Konsistensi format

    Tidak konsisten dengan format pengumpulan file kontainer.

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

    Metode akses kueri

    Dapat dikueri langsung berdasarkan nama bidang, seperti _container_name_.

    Memerlukan akses ke pasangan kunci-nilai yang sesuai melalui __tag__, seperti __tag__: _container_name_.

  3. Tabel pemetaan bidang metadata kontainer

    Nama bidang versi lama

    Nama bidang versi baru

    _container_ip_

    __tag__:_container_ip_

    _container_name_

    __tag__:_container_name_

    _image_name_

    __tag__:_image_name_

    _namespace_

    __tag__:_namespace_

    _pod_name_

    __tag__:_pod_name_

    _pod_uid_

    __tag__:_pod_uid_

    Dalam versi baru, semua bidang metadata disimpan di area tag log dalam format __tag__:<key>, bukan disematkan dalam konten log.

  4. Dampak perubahan versi baru terhadap pengguna

    • Adaptasi sisi konsumen: Karena lokasi penyimpanan berubah dari "konten" ke "tag", logika konsumsi log pengguna perlu disesuaikan. Misalnya, Anda harus mengakses bidang melalui __tag__ saat kueri.

    • Kompatibilitas SQL: SQL kueri telah diadaptasi secara otomatis untuk kompatibilitas, sehingga pengguna tidak perlu memodifikasi pernyataan kueri mereka untuk memproses log versi baru dan lama secara bersamaan.

Informasi lebih lanjut

Parameter konfigurasi global

Parameter konfigurasi

Deskripsi

Nama Konfigurasi

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

Jenis Topik Log

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

Parameter Lanjutan

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

Parameter konfigurasi input

Item konfigurasi

Deskripsi

Mode Penerapan Logtail

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

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

Jenis Jalur File

Anda dapat mengonfigurasi Container Path atau Host Path.

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

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

Jalur File

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

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

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

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

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

  • /apsara/nuwa/**/*.log menunjukkan file dengan ekstensi .log di direktori /apsara/nuwa dan subdirektori rekursifnya.

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

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

Kedalaman Pemantauan Direktori Maksimum

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

Standard Output

Setelah Anda mengaktifkan Standard Output, Logtail mengumpulkan standard output kontainer.

Standard Error

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

Izinkan beberapa koleksi output standar.

Secara default, log standard output kontainer hanya dapat cocok dengan satu konfigurasi pengumpulan standard output Logtail versi baru. Jika standard output perlu dikumpulkan oleh beberapa konfigurasi pengumpulan standard output versi baru, Anda harus mengaktifkan Allow Standard Output To Be Collected Multiple Times.

Aktifkan Pratinjau Metadata Kontainer

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

Penyaringan Kontainer

  • Deskripsi kondisi filter

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

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

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

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

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

K8s Pod Name Regular Expression Matching

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

K8s Namespace Regular Matching

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

K8s Container Name Regular Matching

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

Container Label Whitelist

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

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

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

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

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

Container Label Blacklist

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

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

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

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

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

Environment Variable Whitelist

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

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

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

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

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

Environment Variable Blacklist

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

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

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

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

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

K8s Pod Label Whitelist

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

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

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

    Secara default, `LabelValue` digunakan untuk pencocokan string. Pencocokan hanya terjadi jika nilai `LabelValue` identik dengan nilai label Kubernetes. Jika nilai dimulai dengan ^ dan diakhiri dengan $, ini adalah pencocokan ekspresi reguler. Misalnya, jika Anda mengatur LabelKey ke app dan mengatur LabelValue ke ^(test1|test2)$, kontainer dengan label Kubernetes app:test1 atau app:test2 akan dicocokkan.

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

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

K8s Pod Label Blacklist

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

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

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

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

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

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

Pengayaan Tag Log

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

Environment Variables

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

Pod Labels

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

Pengodean File

Pilih format encoding file log.

Ukuran Pengumpulan Awal

Saat konfigurasi pertama kali berlaku, ini adalah ukuran dari akhir file tempat pengumpulan dimulai. Ukuran pengumpulan awal default adalah 1.024 KB.

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

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

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

Daftar Hitam Pengumpulan

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

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

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

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

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

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

File Path Blacklist

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

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

Daftar Hitam File

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

Daftar Hitam Direktori

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

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

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

Izinkan File Dikumpulkan Berkali-kali

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

Parameter Lanjutan

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

Parameter konfigurasi pemrosesan

Item Konfigurasi

Deskripsi

Sampel Log

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

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

Mode Multi-baris

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

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

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

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

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

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

    • Discard: Langsung membuang segmen log ini.

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

Metode Pemrosesan

Processing Plugin Group mencakup Native Plugins dan Extension Plugins. Untuk informasi lebih lanjut, lihat Gunakan Plugin Pemrosesan Native dan Ekstensi.

Penting

Untuk batasan penggunaan plugin pemrosesan, rujuk pada petunjuk di halaman konsol.

  • Logtail 2.0:

    • Plugin native dapat digabungkan dengan cara apa pun.

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

  • Versi Logtail sebelum 2.0:

    • Menambahkan plugin native dan ekstensi secara bersamaan tidak didukung.

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

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

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

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

      • Unggah hanya log yang berhasil diurai:

        image

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

        image

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

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

        image