All Products
Search
Document Center

Simple Log Service:Plugin penguraian data

Last Updated:Aug 27, 2026

Layanan Log menyimpan log mentah di bidang content secara default. Gunakan plugin penguraian untuk mengekstrak pasangan kunci-nilai terstruktur guna mendukung kueri tingkat bidang, agregasi, dan visualisasi. Plugin penguraian dapat diterapkan pada bidang apa pun—cukup tentukan bidang target dan pilih plugin yang sesuai dengan format kontennya.

Contoh penguraian data

Log aplikasi umum sebelum dan sesudah penguraian:

Tanpa plugin penguraian data

Tanpa penguraian, semua informasi disimpan dalam satu bidang content, sehingga data sulit dikueri dan dianalisis berdasarkan bidang.

Content:"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""

Dengan plugin penguraian regex

Plugin penguraian regex mengekstrak bidang bernama yang dapat dikueri dan dianalisis secara independen.

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

Pemilihan plugin penguraian data

  • Disarankan: Penguraian format log khusus.
    Untuk log Nginx, Apache, atau IIS, gunakan mode penguraian khusus (penguraian mode Nginx, penguraian mode Apache, penguraian mode IIS). Tidak perlu aturan manual.

  • Alternatif: Penguraian data terstruktur (JSON / delimiter)
    Untuk objek JSON atau log dengan delimiter tetap (koma, pipe, dll.), gunakan penguraian JSON atau penguraian mode delimiter. Mudah dikonfigurasi dan cepat diproses.

  • Cadangan: Penguraian regex
    Gunakan penguraian regex untuk log tidak teratur dan tidak terstruktur yang tidak dapat ditangani oleh mode lain. Regex sangat fleksibel tetapi lebih sulit ditulis dan di-debug, serta dapat mengurangi throughput.

Prosedur

Tambahkan plugin penguraian saat membuat atau mengubah konfigurasi Logtail.

Ubah konfigurasi yang sudah ada

  1. Masuk ke Konsol Simple Log Service.

  2. Di bagian Projects, klik proyek yang diinginkan.

    image

  3. Pada tab Log Storage > Logstores, klik > di samping Logstore target, lalu pilih Data Collection > Logtail Configurations.

  4. Dari daftar Logtail Configurations, klik Manage Logtail Configuration di kolom Actions konfigurasi target.

  5. Klik Edit di bagian atas halaman. Di bagian bawah halaman, pada bagian Processor Configurations, tambahkan plugin Logtail, lalu klik Save.

Buat konfigurasi baru

  1. Masuk ke Konsol Simple Log Service.

  2. Klik kartu Quick Data Import di sisi kanan konsol.

  3. Pada kotak dialog Import Data, klik kartu sumber data dan ikuti panduan. Pada langkah Logtail Configurations, tambahkan plugin Logtail di bagian Logtail Configurations.

    Catatan

    Pengaturan plugin sama seperti saat Anda mengubah konfigurasi Logtail.

Gunakan plugin penguraian data

Parameter umum

Parameter ini berlaku untuk semua plugin penguraian data dan tidak diulang di bagian selanjutnya.

Parameter

Deskripsi

Original Field

Bidang sumber yang berisi konten log yang akan diurai. Secara default, ini adalah content, yang menyimpan seluruh entri log mentah.

Retain Original Field if Parsing Fails

Disarankan. Mempertahankan konten asli di bidang sumber saat penguraian gagal (misalnya, karena ketidaksesuaian format), sehingga data tetap tersedia untuk debugging.

Retain Original Field if Parsing Succeeds

Mempertahankan konten log asli setelah penguraian berhasil. Biasanya digunakan untuk verifikasi data.

New Name of Original Field

Mengganti nama bidang sumber yang dipertahankan untuk mencegah konflik penamaan saat opsi Keep source field on parse failure atau Keep source field on parse success diaktifkan.

Penguraian ekspresi reguler

Mengekstrak bidang dari log menggunakan ekspresi reguler dan menguraikannya menjadi pasangan kunci-nilai. Sangat fleksibel dan dapat disesuaikan dengan hampir semua format teks.

Konfigurasi

  • Detail parameter

    Selain parameter umum, plugin ini memiliki parameter inti berikut:

    Parameter

    Deskripsi

    Regular Expression

    Ekspresi reguler yang digunakan untuk mencocokkan konten log.

    • Jika Anda memberikan contoh log, Anda dapat menghasilkan atau memasukkan ekspresi reguler secara manual.

      • Klik Generate. Di kotak teks Log Sample, sorot konten yang ingin diekstrak, lalu klik Generate Regular Expression. Simple Log Service akan menghasilkan ekspresi reguler berdasarkan pilihan Anda.

      • Klik Manually Enter Regular Expression dan masukkan ekspresi reguler. Setelah memasukkan ekspresi tersebut, klik Validate untuk memastikan ekspresi tersebut mengurai konten log dengan benar. Untuk informasi lebih lanjut, lihat How do I test a regular expression.

    • Jika Anda tidak memberikan contoh log, Anda harus memasukkan ekspresi reguler secara manual yang sesuai dengan format log Anda.

    Extracted Field

    Menentukan nama bidang (kunci) untuk konten log yang diekstrak (nilai).

  • Contoh konfigurasi

    • Log Masukan

      127.0.0.1 - - [16/Oct/2023:12:36:49 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
    • Konfigurasi plugin

      Ikuti Prosedur untuk mengonfigurasi plugin. Ekspresi regulernya adalah (\S+)\s-\s(\S+)\s\[([^]]+)]\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)(\s\d+)[^-]+([^"]+)"\s"([^"]+).*.

      Atur Source field ke content dan masukkan log akses Nginx di kotak teks Log sample. Mengurai log dengan ekspresi reguler tersebut akan mengisi bagian Extracted log fields dengan pasangan kunci-nilai, seperti remote_addr, remote_user, time_local, request_method, request_uri, request_protocol, status, body_bytes_sent, http_referer, dan http_user_agent. Opsi Keep source field on parse failure dan Keep source field on parse success tidak dipilih.

    • Hasil penguraian

Penguraian JSON

Mengurai objek JSON menjadi pasangan kunci-nilai.

Batasan

Plugin JSON hanya mengekstrak pasangan kunci-nilai tingkat atas dari objek JSON. Plugin ini tidak mengurai array JSON secara langsung. Untuk menangani JSON kompleks, gunakan pendekatan How to Process Complex JSON.

Konfigurasi

  • Parameter

    Plugin ini hanya menggunakan parameter konfigurasi umum.

  • Contoh konfigurasi

    • Log input

      {"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/2020:13:30:28"}
    • Konfigurasi plugin

      Ikuti Prosedur. Atur processor type ke JSON dan source field ke content. Kosongkan centang pada opsi keep source field on failure dan keep source field on success. Nonaktifkan advanced parameters, lalu klik OK.

    • Hasil penguraian

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

Penguraian mode delimiter

Plugin penguraian mode delimiter menggunakan delimiter untuk menyusun konten log, menguraikannya menjadi beberapa pasangan kunci-nilai.

Konfigurasi

  • Parameter

    Selain parameter umum, plugin ini memiliki parameter berikut:

    Parameter

    Deskripsi

    Delimiter

    Pilih delimiter yang sesuai dengan konten log Anda, seperti pipe (|).

    Catatan

    Untuk menentukan Non-printable Character sebagai delimiter, cari nilai heksadesimalnya di tabel kode ASCII dan masukkan dalam format 0x<hexadecimal value>. Misalnya, karakter non-printable dengan kode ASCII 1 dimasukkan sebagai 0x01.

    Quote

    Jika bidang log berisi delimiter, Anda harus membungkus bidang tersebut dengan karakter quote. Simple Log Service mengurai konten yang dibungkus oleh karakter quote sebagai satu bidang. Pilih karakter quote yang sesuai dengan format log Anda.

    Catatan

    Untuk menentukan Non-printable Character sebagai karakter quote, cari nilai heksadesimalnya di tabel kode ASCII dan masukkan dalam format 0x<hexadecimal value>. Misalnya, karakter non-printable dengan kode ASCII 1 dimasukkan sebagai 0x01.

    Extracted log fields

    • Jika Anda memberikan contoh log, Simple Log Service mengekstrak konten log berdasarkan contoh dan delimiter yang ditentukan. Layanan Log mengekstrak konten tersebut menjadi Values. Anda harus menetapkan Key untuk setiap Value.

    • Jika Anda tidak memberikan contoh log, daftar Value tidak dihasilkan, dan Anda harus memasukkan Key secara manual berdasarkan data log dan delimiter Anda.

    Key hanya boleh berisi huruf, angka, dan garis bawah (_), serta harus dimulai dengan huruf atau garis bawah (_). Panjang maksimum adalah 128 byte.

    Allow Missing Field

    Pengaturan ini menentukan apakah log akan diunggah ke Simple Log Service ketika jumlah Value yang diekstrak kurang dari jumlah Key yang ditentukan. Pilih Allow Missing Field untuk mengunggah log tersebut.

    Contohnya, jika log adalah 11|22|33|44, delimiter adalah pipe (|), dan Key-nya adalah A, B, C, D, dan E.

    • Jika Anda memilih Allow Missing Field, Value untuk bidang E akan kosong, dan Simple Log Service akan mengunggah log tersebut.

    • Jika Anda tidak memilih Allow Missing Field, log tersebut akan dibuang.

      Catatan

      Parameter Allow Missing Field untuk penguraian mode delimiter didukung di Logtail untuk Linux 1.0.28 ke atas dan Logtail untuk Windows 1.0.28.0 ke atas.

    Processing Method of Field to which Excess Part is Assigned

    Menentukan cara menangani log ketika jumlah Value yang diekstrak melebihi jumlah Key yang ditentukan.

    • Expand: Mempertahankan Value berlebih dan menambahkannya ke bidang terpisah dalam format __column$i__, di mana $i adalah indeks bidang berlebih, dimulai dari 0. Contohnya, __column0__ dan __column1__.

    • Retain: Menambahkan semua Value berlebih ke satu bidang bernama __column0__.

    • Discard: Membuang Value berlebih.

  • Contoh konfigurasi

    • Contoh 1: Delimiter karakter tunggal

      • Log input

        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
      • Konfigurasi plugin

        Ikuti Prosedur. Gunakan koma (,) sebagai delimiter dan tanda kutip ganda (") sebagai karakter quote.

        Catatan

        Delimiter: Anda dapat menggunakan satu karakter untuk memisahkan log, seperti tab (\t), pipe (|), spasi, koma (,), titik koma (;), atau karakter non-printable. Delimiter tidak boleh berupa tanda kutip ganda (").

        Jika tanda kutip ganda (") muncul di dalam bidang, Anda harus meng-escape-nya sebagai "" di log. Simple Log Service secara otomatis mengembalikan "" menjadi " saat mengurai bidang tersebut. Misalnya, jika delimiter adalah koma (,) dan karakter quote adalah tanda kutip ganda ("), serta bidang berisi koma dan tanda kutip ganda, Anda harus membungkus bidang tersebut dengan karakter quote dan meng-escape tanda kutip ganda sebagai "". Entri log yang dihasilkan, Chevy,"Venture ""Extended Edition, Very Large""","", diurai menjadi tiga bidang: Chevy, Venture "Extended Edition, Very Large", dan bidang kosong.

        Karakter quote: Jika bidang log berisi delimiter, Anda harus membungkus bidang tersebut dengan karakter quote. Layanan Log mengurai konten yang dibungkus sebagai satu bidang. Karakter quote dapat berupa satu karakter, seperti tab (\t), pipe (|), spasi, koma (,), titik koma (;), atau karakter non-printable.

        Contohnya, jika delimiter adalah koma (,) dan karakter quote adalah tanda kutip ganda ("), Layanan Log mengurai log 1997,"ac,moon",3000.00 menjadi tiga bidang: 1997, ac,moon, dan 3000.00.

      • Hasil penguraian

        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
    • Contoh 2: Delimiter multi-karakter

      • Log Masukan

        05/May/2022:13:30:28&&10.200.**.**&&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
      • Konfigurasi plugin

        Ikuti Prosedur. Gunakan && sebagai delimiter dan pertahankan karakter quote default, yaitu tanda kutip ganda (").

        Penting

        Dalam mode multi-karakter, delimiter dapat terdiri dari dua atau tiga karakter, seperti ||, &&&, atau ^_^. Logtail mengurai log berdasarkan pencocokan delimiter, sehingga Anda tidak perlu membungkus bidang dengan karakter quote. Pastikan tidak ada konten bidang yang mengandung kecocokan penuh dengan delimiter. Jika tidak, Logtail mungkin salah memisahkan bidang tersebut.

      • Hasil penguraian

        ip:10.200.**.**
        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/2022:13:30:28
        user_agent:aliyun-sdk-java

Penanganan kegagalan penguraian delimiter

Jika delimiter tercampur dengan karakter lain dalam konten log—misalnya, timestamp itu sendiri berisi spasi dan koma, atau spasi mengelilingi delimiter—penguraian mode delimiter mungkin tidak membagi batas bidang seperti yang diharapkan, sehingga nilai bidang yang diekstrak bisa salah.

Contoh

Log berikut menggunakan pipe (|) sebagai delimiter:

2026-03-06 21:04:32,701 - | 4 | 45 | 980

Karena timestamp itu sendiri berisi spasi, penguraian mode delimiter menyimpan tanda hubung di akhir timestamp, sehingga menjadi 2026-03-06 21:04:32,701 -, dan bidang numerik 4, 45, dan 980 membawa spasi di awal dan akhir.

Dalam kasus ini, beralihlah ke penguraian ekspresi reguler dan gunakan Regular Expression untuk menulis ekspresi reguler yang mencocokkan setiap nilai bidang secara tepat. Misalnya, ekspresi reguler berikut dengan benar mengekstrak log di atas menjadi empat bidang:

^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3})\s+-\s+\|\s+(\d+)\s+\|\s+(\d+)\s+\|\s+(\d+)$

Atur Extracted Field menjadi time, field1, field2, dan field3 secara berurutan. Hasil penguraiannya adalah sebagai berikut:

time: 2026-03-06 21:04:32,701
field1: 4
field2: 45
field3: 980

Untuk informasi tentang cara men-debug ekspresi reguler, lihat How do I test a regular expression.

Pemecahan masalah

Jika Anda tidak yakin apakah plugin di Processor Configurations menyebabkan kegagalan penguraian, hapus plugin satu per satu dan kumpulkan ulang log untuk memverifikasi:

  1. Pada daftar Logtail Configurations, temukan konfigurasi Logtail target dan klik Manage Logtail Configuration.

  2. Klik Edit. Di bagian Processor Configurations, hapus satu plugin pemrosesan dan klik Save.

  3. Kumpulkan ulang file log dan periksa apakah hasil penguraian kembali normal.

  4. Ulangi langkah-langkah di atas untuk menghapus plugin satu per satu hingga Anda mengidentifikasi plugin yang menyebabkan kegagalan penguraian.

Penguraian mode Nginx

Plugin mode Nginx mengurai konten log menjadi pasangan kunci-nilai berdasarkan definisi log_format.

Log Nginx

Server Nginx menghasilkan log akses berdasarkan direktif log_format dan access_log. Direktif tersebut secara default sebagai berikut:

log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                 '$request_time $request_length '
                 '$status $body_bytes_sent "$http_referer" '
                 '"$http_user_agent"';
access_log /var/logs/nginx/access.log main

Log tersebut berisi bidang-bidang berikut:

Nama bidang

Deskripsi

remote_addr

Alamat IP klien.

remote_user

Username klien.

time_local

Waktu server. Harus diapit tanda kurung siku ([]).

request

URI permintaan dan protokol HTTP.

request_time

Total waktu untuk memproses permintaan, dalam detik.

request_length

Panjang permintaan, termasuk baris permintaan, header permintaan, dan badan permintaan.

status

Kode status permintaan.

body_bytes_sent

Jumlah byte yang dikirim ke klien, tidak termasuk ukuran header respons.

http_referer

Referer.

http_user_agent

Informasi tentang klien, seperti jenis dan versi browser.

Konfigurasi

  • Parameter

    Selain parameter umum, plugin ini memiliki parameter berikut:

    Parameter

    Deskripsi

    NGINX Log Configuration

    Definisi log_format dari file konfigurasi Nginx Anda.

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

    Extracted Field

    Plugin secara otomatis mengekstrak bidang log (kunci) berdasarkan NGINX Log Configuration.

  • Contoh konfigurasi

    • Log input

      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"
    • Konfigurasi plugin

      Ikuti Prosedur. Di lingkungan produksi, log_format harus sesuai dengan definisi di file konfigurasi Nginx Anda (biasanya /etc/nginx/nginx.conf).

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

      body_bytes_sent: 368
      http_referer: -
      http_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.*.* 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

Penguraian pola Apache

Plugin penguraian pola Apache menyusun konten log menjadi pasangan kunci-nilai berdasarkan definisi dalam file konfigurasi log Apache Anda.

Log Apache

Server Apache menghasilkan log berdasarkan format log, path, dan nama yang ditentukan dalam file konfigurasi lognya. Misalnya, direktif CustomLog "/var/log/apache2/access_log" combined menulis log dalam format combined ke /var/log/apache2/access_log.

  • Format log Apache

    • format combined

      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    • format common

      LogFormat "%h %l %u %t \"%r\" %>s %b" 
    • format kustom

      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized

    Tabel berikut menjelaskan bidang-bidang tersebut. Lihat mod_log_config untuk referensi lengkap.

    Format

    Parameter

    Deskripsi

    %a

    client_addr

    Alamat IP klien.

    %A

    local_addr

    Alamat IP lokal.

    %b

    response_size_bytes

    Ukuran respons dalam byte. Nilai null dicatat sebagai tanda hubung (-).

    %B

    response_bytes

    Ukuran respons dalam byte. Nilai null dicatat sebagai 0.

    %D

    request_time_msec

    Waktu yang dibutuhkan untuk melayani permintaan, dalam mikrodetik.

    %f

    filename

    Nama file.

    %h

    remote_addr

    Nama host jarak jauh.

    %H

    request_protocol_supple

    Protokol permintaan.

    %I

    bytes_received

    Byte yang diterima oleh server. Memerlukan modul mod_logio.

    %k

    keep_alive

    Jumlah permintaan yang ditangani pada koneksi ini.

    %l

    remote_ident

    Nama log jarak jauh dari identd, jika tersedia.

    %m

    request_method_supple

    Metode permintaan.

    %O

    bytes_sent

    Byte yang dikirim oleh server. Memerlukan modul mod_logio.

    %p

    remote_port

    Nomor port server.

    %P

    child_process

    ID proses anak.

    %q

    request_query

    String kueri. String kosong dicatat jika tidak ada.

    %r

    request

    Baris permintaan, yang mencakup metode, URI, dan protokol HTTP.

    %R

    response_handler

    Jenis penanganan di server.

    %s

    status

    Status HTTP awal dari respons.

    %>s

    status

    Status HTTP akhir dari respons.

    %t

    time_local

    Waktu server.

    %T

    request_time_sec

    Waktu yang dibutuhkan untuk melayani permintaan, dalam detik.

    %u

    remote_user

    User jarak jauh, jika permintaan diautentikasi.

    %U

    request_uri_supple

    Path URI yang diminta, tanpa string kueri.

    %v

    server_name

    Nama server.

    %V

    server_name_canonical

    Nama server sebagaimana ditentukan oleh direktif UseCanonicalName.

    %{User-Agent}i

    http_user_agent

    Header permintaan HTTP User-Agent.

    %{Referer}i

    http_referer

    URL halaman tempat permintaan berasal.

Konfigurasi

  • Parameter

    Selain parameter umum, plugin ini memiliki parameter berikut:

    Parameter

    Deskripsi

    Log Format

    Pilih format log yang didefinisikan dalam file konfigurasi log Apache Anda. Opsi meliputi common, combined, dan custom.

    APACHE LogFormat Configuration

    Direktif LogFormat dari file konfigurasi Apache Anda.

    • Saat Anda mengatur Log Format ke common atau combined, bidang konfigurasi yang sesuai akan diisi secara otomatis. Pastikan formatnya konsisten dengan yang didefinisikan dalam file konfigurasi Apache.

    • Saat Anda mengatur Log Format ke Custom, masukkan string format aktual. Misalnya, LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized.

    Extracted Field

    Bidang log (kunci) yang diekstrak secara otomatis berdasarkan isi APACHE LogFormat Configuration.

  • Contoh konfigurasi

    • Log input

      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"
    • Konfigurasi plugin

      Ikuti Prosedur. Atur Log format ke combined.

    • Hasil penguraian

      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]

Penguraian mode IIS

Plugin mode IIS mengurai konten log menjadi beberapa pasangan kunci-nilai berdasarkan definisi format log IIS.

Log IIS

Server Windows menghasilkan log IIS berdasarkan format log yang Anda pilih (IIS, NCSA, atau W3C).

  • Format log

    #Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
    • Deskripsi awalan bidang

      Awalan

      Deskripsi

      s-

      Aksi server.

      c-

      Aksi klien.

      cs-

      Aksi klien-ke-server.

      sc-

      Aksi server-ke-klien.

    • Deskripsi bidang

      Bidang

      Deskripsi

      date

      Tanggal permintaan.

      time

      Waktu permintaan.

      s-sitename

      Nama layanan Internet dan nomor instansi situs yang diakses klien.

      s-computername

      Nama server yang menghasilkan entri log.

      s-ip

      Alamat IP server yang menghasilkan entri log.

      cs-method

      Metode permintaan, seperti GET atau POST.

      cs-uri-stem

      Sumber daya URI yang diminta klien.

      cs-uri-query

      Kueri URI: informasi yang mengikuti tanda tanya (?) dalam permintaan.

      s-port

      Port server.

      cs-username

      Domain atau username yang diautentikasi.

      • Untuk user yang diautentikasi, formatnya adalah Domain\Username.

      • Untuk user anonim, ditampilkan tanda hubung (-).

      c-ip

      Alamat IP klien yang mengakses server.

      cs-version

      Versi protokol, seperti HTTP/1.0 atau HTTP/1.1.

      cs(User-Agent)

      Browser yang digunakan klien.

      Cookie

      Isi cookie yang dikirim atau diterima. Jika tidak ada cookie, ditampilkan tanda hubung (-).

      referer

      Situs tempat pengguna dirujuk.

      cs-host

      Informasi header host.

      sc-status

      Kode status HTTP.

      sc-substatus

      Kode substatus HTTP.

      sc-win32-status

      Kode status operasional khusus Windows.

      sc-bytes

      Jumlah byte yang dikirim oleh server.

      cs-bytes

      Jumlah byte yang diterima oleh server.

      time-taken

      Waktu yang dibutuhkan untuk memproses permintaan, dalam milidetik.

Konfigurasi

  • Deskripsi parameter

    Selain parameter umum, plugin ini memiliki parameter berikut:

    Parameter

    Deskripsi

    Log Format

    Format log yang digunakan oleh server IIS. Format yang didukung meliputi IIS, NCSA, dan W3C.

    IIS Configuration Fields

    • Jika format log adalah IIS atau NCSA, Layanan Log mengatur bidang konfigurasi IIS secara default.

    • Jika format log adalah W3C, atur parameter ini ke isi parameter logExtFileFlags dalam file konfigurasi IIS Anda. Contohnya:

      logExtFileFlags="Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Cookie, Referer, ProtocolVersion, Host, HttpSubStatus"
      • Path file konfigurasi IIS 5 default: C:\WINNT\system32\inetsrv\MetaBase.bin.

      • Path file konfigurasi IIS 6 default: C:\WINDOWS\system32\inetsrv\MetaBase.xml.

      • Path file konfigurasi IIS 7 default: C:\Windows\System32\inetsrv\config\applicationHost.config.

    Extracted Field

    Layanan Log secara otomatis menghasilkan bidang log yang diekstrak (kunci) berdasarkan isi parameter IIS Configuration Fields.

  • Contoh konfigurasi

    • Log Masukan

      #Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
      2023-10-27 08:00:00 W3SVC1 192.168.1.1 GET /index.html - 80 - 10.0.0.5 Mozilla/5.0 200 0 0 500 100 150
    • Konfigurasi plugin

      Ikuti Prosedur. Atur Log format ke IIS.

    • Hasil penguraian

      date: 2023-10-27
      time: 08:00:00
      s-sitename: W3SVC1
      s-ip: 192.168.1.1
      cs-method: GET
      cs-uri-stem: /index.html
      cs-uri-query: -
      s-port: 80
      cs-username: -
      c-ip: 10.0.0.5
      cs(User-Agent): Mozilla/5.0
      sc-status: 200
      sc-substatus: 0
      sc-win32-status: 0
      sc-bytes: 500
      cs-bytes: 100
      time-taken: 150

FAQ

Kegagalan regex di Layanan Log

Periksa masalah umum berikut:

  1. Contoh log tidak cocok: Pastikan contoh log yang digunakan dalam konfigurasi Logtail persis sesuai dengan format log yang dikumpulkan, termasuk spasi dan karakter khusus.

  2. Format log campuran: Jika sumber log Anda berisi beberapa format, satu regex mungkin tidak cocok dengan semuanya. Aktifkan opsi keep unmatched content untuk mempertahankan log mentah saat penguraian gagal. Anda juga dapat menggunakan beberapa konfigurasi Logtail untuk menangani format secara terpisah.

  3. Perbedaan escaping antara kode dan konsol: Ekspresi reguler yang disalin dari kode mungkin berisi karakter escape tambahan, seperti \\S+. Di konsol Layanan Log, gunakan satu backslash saja, seperti \S+.

Mengkueri log dari file tertentu

Layanan Log secara otomatis menambahkan bidang metadata __tag__:__path__ ke setiap entri log, yang berisi path lengkap file sumber. Gunakan bidang ini untuk memfilter log dari file tertentu seperti /var/log/app/error.log: * AND __tag__:__path__: /var/log/app/error.log.

Tidak dapat mengkueri data historis setelah modifikasi indeks

Perubahan indeks hanya berlaku untuk data yang baru dimasukkan. Untuk mengkueri data historis yang sudah ada dengan konfigurasi indeks baru, jalankan tugas reindex.

Menangani log JSON dengan array

Plugin penguraian JSON tidak dapat langsung membagi array JSON menjadi entri log terpisah.

Solusi:

Layanan Log menyediakan plugin pembongkaran bidang JSON untuk membongkar atau membagi bidang array JSON.

Cara kerja: Dengan menentukan kedalaman pembongkaran, plugin melakukan iterasi melalui bidang array dan menghasilkan entri log baru untuk setiap elemen dalam array. Plugin menyalin bidang lain (anggota non-array) dari log asli ke setiap entri log baru.

Contoh perbandingan:

Catatan
  • Operasi ini meningkatkan jumlah entri log. Satu log yang berisi array N elemen menjadi N entri log. Pertimbangkan hal ini saat merencanakan biaya penyimpanan dan pengindeksan log Anda.

  • Kedalaman pembongkaran: Tingkat sejauh mana objek JSON dibongkar. Nilai 0 (default) membongkar objek sepenuhnya, 1 hanya membongkar level saat ini, dan seterusnya.

Log mentah

Kedalaman pembongkaran: 0 (awalan ditambahkan)

Kedalaman pembongkaran: 1 (awalan ditambahkan)

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

Mengurai log dengan teks dan JSON tersemat

Rangkai beberapa plugin pemrosesan, di mana output satu plugin menjadi input untuk plugin berikutnya.

Kasus penggunaan:

Asumsikan log aplikasi Anda memiliki format berikut, yang mencakup timestamp, tingkat log, dan pesan JSON tersemat.

2025-11-12 10:30:15 INFO Request details: {"trace_id": "xyz-123", "user_id": 500, "action": "login"}

Strategi penguraian: Tambahkan dua plugin berikut secara berurutan. Tentukan bidang sumber yang benar untuk plugin kedua. Pendekatan perangkaian ini berlaku untuk log format campuran apa pun.

  1. Gunakan plugin penguraian ekspresi reguler untuk mengekstrak bidang teks awal dan menangkap string JSON tersemat dalam bidang terpisah. Hasilnya sebagai berikut:

    {
         "log_time": "2025-11-12 10:30:15",
         "log_level": "INFO",
         "json_message": "{\"trace_id\": \"xyz-123\", \"user_id\": 500, \"action\": \"login\"}"
    }
  2. Tambahkan plugin penguraian JSON, dan atur json_message sebagai bidang sumbernya untuk mengurai konten JSON menjadi pasangan kunci-nilai. Hasilnya sebagai berikut:

    {
         "log_time": "2025-11-12 10:30:15",
         "log_level": "INFO",
         "trace_id": "xyz-123",
         "user_id": 500,
         "action": "login"
    }

Dokumen terkait