全部产品
Search
文档中心

Simple Log Service:Fungsi ekstraksi nilai

更新时间:Jul 02, 2025

Topik ini menjelaskan sintaksis dan parameter fungsi ekstraksi nilai serta memberikan contoh penggunaannya.

Fungsi

Kategori

Fungsi

Deskripsi

Ekstraksi berdasarkan ekspresi reguler

e_regex

Mengekstrak nilai suatu bidang berdasarkan ekspresi reguler dan menetapkan nilai tersebut ke bidang lain.

Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Parsing log kesalahan Java.

Ekstraksi berdasarkan objek JSON

e_json

Menjalankan operasi pada objek JSON dalam bidang tertentu. Anda dapat mengonfigurasi parameter untuk memperluas data JSON, mengekstrak data JSON menggunakan ekspresi JMESPath, atau memperluas data JSON yang diekstrak.

Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Transformasi data JSON kompleks.

Ekstraksi menggunakan pemisah

e_csv, e_psv, dan e_tsv

Mengekstrak beberapa bidang dari bidang tertentu menggunakan pemisah tertentu dan nama bidang yang telah ditentukan.

  • e_csv: menggunakan koma (,) sebagai pemisah default.

  • e_psv: menggunakan garis vertikal (|) sebagai pemisah default.

  • e_tsv: menggunakan tab (\t) sebagai pemisah default.

Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Parsing log dalam format file CSV.

Ekstraksi pasangan kunci-nilai

e_kv

Mengekstrak pasangan kunci-nilai dari beberapa bidang input menggunakan tanda kutip tertentu.

Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Ekstraksi pasangan kunci-nilai dinamis dari string.

e_kv_delimit

Mengekstrak pasangan kunci-nilai dari bidang input menggunakan pemisah tertentu.

Ekstraksi berdasarkan protokol syslog

e_syslogrfc

Menghitung nilai bidang facility dan severity serta mengembalikan nilai bidang facilitylabel yang menunjukkan informasi level. Fungsi ini menghitung nilai berdasarkan nilai bidang priority dan protokol syslog yang ditentukan.

Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Parsing pesan Syslog dalam format standar.

Ekstraksi berdasarkan aturan tertentu

e_anchor

Mengekstrak string menggunakan aturan yang ditentukan oleh anchor_rules.

e_regex

Fungsi e_regex mengekstrak nilai dari suatu bidang berdasarkan ekspresi reguler dan menetapkannya ke bidang lain.

  • e_regex(key,Regular expression,fields_info,mode="fill-auto",pack_json=None)
  • Parameter

    Tipe

    Diperlukan

    Deskripsi

    key

    Sembarang

    Ya

    Nama bidang input. Jika bidang yang Anda tentukan tidak ada, tidak ada operasi yang dilakukan. Untuk informasi lebih lanjut tentang cara menentukan nama bidang khusus, lihat Jenis-jenis acara.

    Ekspresi reguler

    String

    Ya

    Ekspresi reguler yang digunakan untuk mengekstrak nilai bidang. Ekspresi reguler yang berisi grup penangkap dan grup non-penangkap didukung.

    Catatan

    Ekspresi reguler yang berisi grup non-penangkap digunakan dalam beberapa skenario. Grup non-penangkap menggunakan awalan yang terdiri dari tanda tanya dan titik dua (?:). Contoh: \w+@\w+\.\w(?:\.\cn)?. Untuk informasi lebih lanjut tentang grup non-penangkap, lihat Grup non-penangkap.

    fields_info

    String/ Daftar/ Dict

    Tidak

    Nama bidang tempat nilai yang diekstrak akan ditetapkan. Jika Anda tidak menentukan grup penangkap bernama dalam ekspresi reguler, Anda harus mengonfigurasi parameter ini.

    mode

    String

    Tidak

    Mode penimpaan bidang. Nilai default: fill-auto. Untuk informasi lebih lanjut tentang nilai lain dari parameter ini, lihat Mode pemeriksaan dan penimpaan ekstraksi bidang.

    pack_json

    String

    Tidak

    Bidang tempat bidang yang ditentukan oleh fields_info dikemas. Nilai default: None, yang menunjukkan bahwa tidak ada bidang yang dikemas.

  • Log yang berisi nilai bidang baru dikembalikan.

    • Contoh 1: Mengekstrak nilai yang cocok dengan ekspresi reguler tertentu dari bidang.

      • Log mentah:

        msg: 192.168.0.1 http://... 127.0.0.0
      • Aturan transformasi:

        # Mengekstrak alamat IP pertama dari bidang msg.
        e_regex("msg",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","ip")
      • Hasil:

        msg: 192.168.0.1 http://... 127.0.0.0
        ip: 192.168.0.1
    • Contoh 2: Mengekstrak beberapa nilai yang cocok dengan ekspresi reguler tertentu dari bidang.

      • Log mentah:

        msg: 192.168.0.1 http://... 127.0.0.0
      • Aturan transformasi:

        # Mengekstrak dua alamat IP dari bidang msg dan menetapkan satu alamat IP ke server_ip dan alamat IP lainnya ke client_ip.
        e_regex("msg",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",["server_ip","client_ip"])
      • Hasil:

        msg: 192.168.0.1 http://... 127.0.0.0
        server_ip: 192.168.0.1
        client_ip: 127.0.0.0
    • Contoh 3: Gunakan grup penangkap untuk mengekstrak beberapa nilai yang cocok dengan ekspresi reguler tertentu dari bidang.

      • Log mentah:

        content: start sys version: deficience, err: 2
      • Aturan transformasi:

        # Mengekstrak nilai untuk versi dan error dari bidang content dengan menyertakan grup penangkap dalam ekspresi reguler.
        e_regex("content",r"start sys version: (\w+),\s*err: (\d+)",["version","error"])
      • Hasil:

        content: start sys version: deficience, err: 2
        error: 2
        version: deficience
    • Contoh 4: Gunakan grup penangkap bernama untuk mengekstrak beberapa nilai dari bidang.

      • Log mentah:

        content:  start sys version: deficience, err: 2
      • Aturan transformasi:

        e_regex("content",r"start sys version: (?P<version>\w+),\s*err: (?P<error>\d+)")
      • Hasil:

        content:  start sys version: deficience, err: 2
        error:  2
        version:  deficience
    • Contoh 5: Gunakan grup penangkap dalam ekspresi reguler yang ditentukan untuk mengekstrak nilai bidang dict, secara dinamis menghasilkan nama bidang untuk nilai tersebut, dan memformat ulang nilai tersebut.

      • Log mentah:

        dict: verify:123
      • Aturan transformasi:

        e_regex("dict",r"(\w+):(\d+)",{r"k_\1": r"v_\2"})
      • Hasil:

        dict: verify:123
        k_verify: v_123
    • Contoh 6: Mengekstrak nilai yang cocok dengan ekspresi reguler tertentu dari bidang dan mengemas hasilnya ke dalam bidang name.

      • Log mentah:

        msg: 192.168.0.1 http://... 127.0.0.0
      • Aturan transformasi:

        e_regex("msg", r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", "ip", pack_json="name")
      • Hasil:

        msg:192.168.0.1 http://... 127.0.0.0
        name:{"ip": "192.168.0.1"}
    • Contoh 7: Gunakan ekspresi reguler yang ditentukan untuk mengekstrak nilai bidang dict, secara dinamis menghasilkan nama bidang untuk nilai tersebut, memformat ulang nilai tersebut, lalu mengemas hasilnya ke dalam bidang name.

      • Log mentah:

        dict: x:123, y:456, z:789
      • Aturan transformasi:

        e_regex("dict", r"(\w+):(\d+)", {r"k_\1": r"v_\2"}, pack_json="name")
      • Hasil:

        dict:x:123, y:456, z:789
        name:{"k_x": "v_123", "k_y": "v_456", "k_z": "v_789"}
    • Contoh 8: Gunakan grup penangkap untuk mengekstrak beberapa nilai yang cocok dengan ekspresi reguler tertentu dan mengemas hasilnya ke dalam bidang name.

      • Log mentah:

        content: start sys version: deficience, err: 2
      • Aturan transformasi:

        e_regex( "content", r"start sys version: (\w+),\s*err: (\d+)", ["version", "error"],pack_json="name")
      • Hasil:

        content:start sys version: deficience, err: 2
        name:{"version": "deficience", "error": "2"}
  • Referensi

    Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Parsing log kesalahan Java.

e_json

Fungsi e_json melakukan operasi pada objek JSON dalam bidang tertentu. Anda dapat mengonfigurasi parameter untuk memperluas data JSON, mengekstrak data JSON menggunakan ekspresi JMESPath, atau memperluas data JSON yang diekstrak.

  • e_json(key, expand=None, depth=100, prefix="__", suffix="__", fmt="simple", sep=".", 
         expand_array=True, fmt_array="{parent}_{index}", 
         include_node=r"[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\w\-\.]*",  
         exclude_node="", include_path="", exclude_path="",
         jmes="", output="", jmes_ignore_none=False, mode='fill-auto'
    )
    Catatan

    Jika Anda menggunakan fungsi e_json untuk mengurai string yang tidak sesuai dengan sintaksis JSON, fungsi tersebut tidak akan memproses string dan akan mengembalikan string aslinya.

  • Parameter

    Tipe

    Diperlukan

    Deskripsi

    key

    String

    Ya

    Nama bidang input. Jika bidang yang Anda tentukan tidak ada, tidak ada operasi yang dilakukan. Untuk informasi lebih lanjut tentang cara menentukan nama bidang khusus, lihat Jenis-jenis acara.

    expand

    Boolean

    Tidak

    Menentukan apakah akan memperluas bidang input.

    • Jika Anda tidak mengonfigurasi parameter jmes, nilai True digunakan secara default untuk parameter expand. Nilai True menunjukkan bahwa bidang input diperluas.

    • Jika Anda mengonfigurasi parameter jmes, nilai False digunakan secara default untuk parameter expand. Nilai False menunjukkan bahwa bidang input tidak diperluas.

    depth

    Nomor

    Tidak

    Kedalaman hingga mana fungsi memperluas bidang input. Nilai valid: 1 hingga 2000. Nilai default: 100. Nilai 1 menunjukkan bahwa hanya tingkat pertama dari bidang yang diperluas.

    prefix

    String

    Tidak

    Awalan yang ingin Anda tambahkan ke bidang yang diperluas.

    suffix

    String

    Tidak

    Akhiran yang ingin Anda tambahkan ke bidang yang diperluas.

    fmt

    String

    Tidak

    Metode pemformatan bidang yang diperluas. Nilai valid:

    • simple: Nama node saat ini digunakan sebagai nama bidang. Ini adalah nilai default. Formatnya adalah {prefix}{current}{suffix}.

    • full: Nama node saat ini dan semua nama node induk digabungkan dan digunakan sebagai nama bidang. Formatnya adalah {parent_list_str}{sep}{prefix}{current}{suffix}. Pemisah ditentukan oleh parameter sep. Pemisah default adalah titik (.).

    • parent: Nama node saat ini dan nama node induk terdekat digabungkan dan digunakan sebagai nama bidang. Formatnya adalah {parent}{sep}{prefix}{current}{suffix}. Pemisah ditentukan oleh parameter sep. Pemisah default adalah titik (.).

    • root: Nama node saat ini dan nama node root digabungkan dan digunakan sebagai nama bidang. Formatnya adalah {parent_list[0]}{sep}{prefix}{current}{suffix}. Pemisah ditentukan oleh parameter sep. Pemisah default adalah titik (.).

    sep

    String

    Tidak

    Pemisah yang digunakan untuk memisahkan node induk dan anak saat fungsi memformat data. Jika Anda mengatur parameter fmt ke full, parent, atau root, Anda harus mengonfigurasi parameter ini. Nilai default: ..

    expand_array

    Boolean

    Tidak

    Menentukan apakah akan memperluas bidang input menjadi array. Nilai default: True, yang menunjukkan bahwa bidang input diperluas menjadi array.

    fmt_array

    String

    Tidak

    Metode pemformatan yang digunakan untuk memperluas bidang input menjadi array. Formatnya adalah {parent_rlist[0]}_{index}. Anda juga dapat menggunakan hingga lima placeholder berikut untuk memperluas bidang input: parent_list, current, sep, prefix, dan suffix.

    include_node

    String/ Nomor

    Tidak

    Daftar putih nama node berdasarkan mana penyaringan dilakukan. Secara default, nama node yang berisi angka, huruf, garis bawah (_), titik (.), dan tanda hubung (-) secara otomatis diperluas.

    exclude_node

    String

    Tidak

    Daftar hitam nama node berdasarkan mana penyaringan dilakukan.

    include_path

    String

    Tidak

    Daftar putih jalur node berdasarkan mana penyaringan dilakukan.

    exclude_path

    String

    Tidak

    Daftar hitam jalur node berdasarkan mana penyaringan dilakukan.

    jmes

    String

    Tidak

    Ekspresi JMESPath yang digunakan untuk mengonversi nilai bidang menjadi objek JSON dan mengekstrak nilai tertentu.

    output

    String

    Tidak

    Nama bidang yang dikembalikan untuk nilai yang diekstrak menggunakan ekspresi JMESPath.

    jmes_ignore_none

    Boolean

    Tidak

    Menentukan apakah akan melewati bidang jika nilai bidang tidak dapat diekstrak menggunakan ekspresi JMESPath. Nilai default: True, yang menunjukkan bahwa bidang dilewati jika nilai bidang tidak dapat diekstrak menggunakan ekspresi JMESPath. Jika Anda menentukan False untuk parameter jmes_ignore_none, string kosong dikembalikan dalam situasi yang sama.

    mode

    String

    Tidak

    Mode penimpaan bidang. Nilai default: fill-auto. Untuk informasi lebih lanjut tentang nilai lain dari parameter ini, lihat Mode pemeriksaan dan penimpaan ekstraksi bidang.

    • Pengembangan dan Penyaringan Bidang JSON

      • Jika daftar putih nama node ditentukan, hanya nama node dalam daftar putih yang akan dikembalikan. Contoh: e_json("json_data_filed", ...., include_node=r'key\d+') menentukan daftar putih nama node menggunakan ekspresi reguler.

      • Jika daftar hitam nama node ditentukan, nama node dalam daftar hitam tidak akan dikembalikan. Contoh: e_json("json_data_filed", ...., exclude_node=r'key\d+') menentukan daftar hitam nama node menggunakan ekspresi reguler.

      • Ekspresi reguler include_path dan exclue_path digunakan untuk mencocokkan jalur node dari awal. Titik (.) digunakan sebagai pemisah jalur yang sesuai dengan ekspresi reguler.

    • Penyaringan Berbasis JMESPath

      Ekspresi JMESPath digunakan untuk memilih dan menghitung data.

      • Pilih daftar atribut elemen dari jalur JSON tertentu: e_json(..., jmes="cve.vendors[*].product",output="product").

      • Gabungkan atribut elemen dari jalur JSON tertentu menggunakan koma (,): e_json(..., jmes="join(',', cve.vendors[*].name)",output="vendors").

      • Hitung nilai maksimum setiap atribut untuk setiap elemen dalam jalur JSON tertentu: e_json(..., jmes="max(words[*].score)",output="hot_word").

      • Kembalikan string kosong jika jalur JSON tertentu tidak ada atau kosong: e_json(..., jmes="max(words[*].score)",output="hot_word", jmes_ignore_none=False).

    • parent_list dan parent_rlist

      Contoh berikut menunjukkan cara menggunakan parent_list dan parent_rlist:

      Log mentah:

      data: { "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
      • parent_list mengurutkan node induk dari kiri ke kanan.

        e_json("data", fmt='{parent_list[0]}-{parent_list[1]}#{current}')

        Hasil:

        data: { "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
        data-k2#k3:200
        data-k2#k5:300
      • parent_rlist mengurutkan node induk dari kanan ke kiri.

        e_json("data", fmt='{parent_rlist[0]}-{parent_rlist[1]}#{current}')

        Hasil:

        data: { "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
        k2-data#k3:200
        k4-k2#k5:300
  • Log yang berisi nilai bidang baru dikembalikan.

    • Contoh 1: Perluas bidang.

      • Log mentah:

        data: {"k1": 100, "k2": 200}
      • Aturan transformasi:

        e_json("data",depth=1)
      • Hasil:

        data: {"k1": 100, "k2": 200}
        k1: 100
        k2: 200
    • Contoh 2: Tambahkan awalan dan akhiran ke bidang yang diperluas.

      • Log mentah:

        data: {"k1": 100, "k2": 200}
      • Aturan transformasi:

        e_json("data", prefix="data_", suffix="_end")
      • Hasil:

        data: {"k1": 100, "k2": 200}
        data_k1_end: 100
        data_k2_end: 200
    • Contoh 3: Perluas bidang dalam format yang berbeda.

      • Log mentah:

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
      • Perluas bidang dalam format lengkap.

        e_json("data", fmt='full')
         data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
         data.k1: 100
         data.k2.k3: 200
         data.k2.k4.k5: 300
      • Perluas bidang dalam format induk.

        e_json("data", fmt='parent')
         data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
         data.k1: 100
         k2.k3: 200
         k4.k5: 3000
      • Perluas bidang dalam format root.

        e_json("data", fmt='root')
         data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
         data.k1: 100
         data.k3: 200
         data.k5: 300
    • Contoh 4: Konfigurasikan parameter sep, prefix, dan suffix untuk mengekstrak data JSON.

      • Log mentah:

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
      • Aturan transformasi:

        e_json("data", fmt='parent', sep="@", prefix="__", suffix="__")
      • Hasil:

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data@__k1__: 100
        k2@__k3__: 200
        k4@__k5__: 300
    • Contoh 5: Konfigurasikan parameter fmt_array untuk mengekstrak data JSON sebagai array.

      • Log mentah:

        people: [{"name": "xm", "sex": "boy"}, {"name": "xz", "sex": "boy"}, {"name": "xt", "sex": "girl"}]
      • Aturan transformasi:

        e_json("people", fmt='parent', fmt_array="{parent_rlist[0]}-{index}")
      • Hasil:

        people: [{"name": "xm", "sex": "boy"}, {"name": "xz", "sex": "boy"}, {"name": "xt", "sex": "girl"}]
        people-0.name: xm
        people-0.sex: boy
        people-1.name: xz
        people-1.sex: boy
        people-2.name: xt
        people-2.sex: girl
    • Contoh 6: Ekstrak objek JSON menggunakan ekspresi JMESPath.

      • Log mentah:

        data: { "people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"}],"foo": {"bar": "baz"}}
      • Aturan transformasi:

        e_json("data", jmes='foo', output='jmes_output0')
        e_json("data", jmes='foo.bar', output='jmes_output1')
        e_json("data", jmes='people[0].last', output='jmes_output2')
        e_json("data", jmes='people[*].first', output='jmes_output3')
      • Hasil:

        data: { "people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"}],"foo": {"bar": "baz"}}
        jmes_output0: {"bar": "baz"}
        jmes_output1: baz
        jmes_output2: d
        jmes_output3: ["james", "jacob"]
  • Referensi

    Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Transformasi data JSON kompleks.

e_csv, e_psv, dan e_tsv

Fungsi e_csv, e_psv, dan e_tsv mengekstrak beberapa bidang dari bidang input tertentu menggunakan pemisah tertentu dan nama bidang yang telah ditentukan.

  • e_csv: menggunakan koma (,) sebagai pemisah default.

  • e_psv: menggunakan garis vertikal (|) sebagai pemisah default.

  • e_tsv: menggunakan tab (\t) sebagai pemisah default.

  • e_csv(Nama bidang input, Daftar bidang output, sep=",", quote='"', restrict=True, mode="fill-auto")
    e_psv(Nama bidang input, Daftar bidang output, sep="|", quote='"', restrict=True, mode="fill-auto")
    e_tsv(Nama bidang input, Daftar bidang output, sep="\t", quote='"', restrict=True, mode="fill-auto")
  • Parameter

    Tipe

    Diperlukan

    Deskripsi

    Nama bidang input

    Sembarang

    Ya

    Nama bidang input. Jika bidang yang Anda tentukan tidak ada, tidak ada operasi yang dilakukan. Untuk informasi lebih lanjut tentang cara menentukan nama bidang khusus, lihat Jenis-jenis acara.

    Daftar bidang output

    Sembarang

    Ya

    Nama bidang yang dikembalikan setelah nilai bidang input dipisahkan menggunakan pemisah yang ditentukan.

    Nama bidang dapat berupa daftar string. Contoh: ["error", "message", "result"].

    Jika nama bidang tidak mengandung koma (,), Anda dapat menggunakan koma (,) sebagai pemisah untuk memisahkan string. Contoh: "error, message, result".

    Untuk informasi lebih lanjut tentang cara menentukan nama bidang khusus, lihat Jenis-jenis acara.

    sep

    String

    Tidak

    Pemisah yang digunakan untuk memisahkan nilai bidang input. Anda harus menentukan satu karakter sebagai pemisah.

    quote

    String

    Tidak

    Tanda kutip yang digunakan untuk mengapit nilai. Jika nilai mengandung pemisah, Anda harus mengonfigurasi parameter ini.

    restrict

    Boolean

    Tidak

    Menentukan apakah akan mengaktifkan mode terbatas. Nilai default: False, yang menunjukkan bahwa mode terbatas dinonaktifkan. Jika jumlah nilai yang dipisahkan dengan pemisah dalam nilai bidang input berbeda dari jumlah nama bidang output, operasi yang dilakukan oleh fungsi bervariasi berdasarkan mode.

    • Jika mode terbatas diaktifkan, fungsi tidak melakukan operasi.

    • Jika mode terbatas dinonaktifkan, fungsi mencocokkan bidang yang ditentukan dengan nilai dan menetapkan nilai tertentu ke bidang tersebut.

    mode

    String

    Tidak

    Mode penimpaan bidang. Nilai default: fill-auto. Untuk informasi lebih lanjut tentang nilai lain dari parameter ini, lihat Mode pemeriksaan dan penimpaan ekstraksi bidang.

  • Log yang berisi nilai bidang baru dikembalikan.

  • Dalam contoh ini, fungsi e_csv digunakan. Fungsi e_psv dan e_tsv bekerja dengan cara yang serupa dengan fungsi e_csv.

    • Log mentah:

      content: 192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aliyundoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aliyundoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36,-,-
    • Aturan transformasi:

      e_csv("content", "remote_addr, time_local,host,request,status,request_time,body_bytes_sent,upstream_addr,upstream_status, upstream_response_time,http_referer,http_x_forwarded_for,http_user_agent,session_id,guid")
    • Hasil:

      content:  192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aliyundoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aliyundoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36,-,-
        body_bytes_sent:  6404
      guid:  -
      host:  example.aliyundoc.com
      http_referer:  https://image.developer.aliyundoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei
      http_user_agent:  Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36
      http_x_forwarded_for:  -
      remote_addr:  192.168.0.100
      request:  GET /zf/11874.html HTTP/1.1
      request_time:  0.077
      session_id:  -
      status:  200
      time_local:  10/Jun/2019:11:32:16 +0800
      topic:  syslog-forwarder
      upstream_addr:  192.168.0.100:8001
      upstream_response_time:  0.060
      upstream_status:  200
  • Referensi

    Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Parse logs in a CSV-format log file.

e_kv

Fungsi e_kv mengekstrak pasangan kunci-nilai dari beberapa bidang input dengan menggunakan tanda kutip tertentu.

  • e_kv(Nama bidang input atau daftar bidang input, sep="=", quote='"', escape=False, prefix="", suffix="", mode="fill-auto")
  • Parameter

    Tipe

    Diperlukan

    Deskripsi

    Nama bidang input atau daftar bidang input

    String atau daftar string

    Ya

    Nama bidang input atau nama beberapa bidang input. Untuk informasi lebih lanjut tentang cara menentukan nama bidang khusus, lihat Tipe Event.

    sep

    String

    Tidak

    Pemisah yang digunakan untuk memisahkan kunci dan nilai kunci dalam ekspresi reguler. Nilai default: =. Anda dapat menentukan satu atau lebih karakter sebagai pemisah.

    Catatan

    Anda dapat menggunakan grup non-penangkap dalam ekspresi reguler, tetapi Anda tidak dapat menggunakan grup penangkap dalam ekspresi reguler. Untuk informasi lebih lanjut tentang pengelompokan, lihat Grup.

    quote

    String

    Tidak

    Kutipan yang digunakan untuk mengapit nilai. Nilai default: ".

    Catatan

    Kami merekomendasikan Anda mengonfigurasi parameter kutipan untuk mengapit nilai yang diekstraksi dari pasangan kunci-nilai dinamis. Contoh: a="abc" dan b="xyz". Jika Anda tidak mengonfigurasi parameter kutipan, nilai yang diekstraksi hanya dapat berisi karakter berikut: huruf, angka, garis bawah (_), tanda hubung (-), titik (.), tanda persen (%), dan tilde (~). Sebagai contoh, Anda dapat mengekstrak a: ab12_-.%~ dan b: 123 dari a=ab12_-.%~|abc b=123.

    escape

    Boolean

    Tidak

    Menentukan apakah akan mengekstrak karakter escape di nilai bidang input. Nilai default: False, yang menunjukkan bahwa karakter escape di nilai bidang input tidak diekstraksi. Sebagai contoh, nilai abc\ dari bidang key diekstraksi dari ekspresi key="abc\"xyz" secara default. Jika parameter escape disetel ke True, nilai yang diekstraksi adalah abc"xyz.

    prefix

    String

    Tidak

    Awalan yang ditambahkan ke bidang yang diekstraksi.

    suffix

    String

    Tidak

    Akhiran yang ditambahkan ke bidang yang diekstraksi.

    mode

    String

    Tidak

    Mode penimpaan bidang. Nilai default: fill-auto. Untuk informasi lebih lanjut tentang nilai lain dari parameter ini, lihat Pemeriksaan ekstraksi bidang dan mode penimpaan.

  • Log yang berisi nilai-nilai bidang baru dikembalikan.

    • Contoh 1: Ekstrak pasangan kunci-nilai menggunakan pemisah default =.

      • Log mentah:

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        Catatan

        Jika log mentah adalah request_uri: a1=1&a2=&a3=3 dan nilai a2 kosong, fungsi e_kv() tidak dapat mengekstrak nilai a2. Anda dapat menggunakan fungsi e_regex() untuk mengekstrak nilai a2. Contoh: e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"},mode="overwrite").

      • Aturan transformasi:

        e_kv("http_refer")
      • Hasil:

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        q: asd
        a: 1
        b: 2
    • Contoh 2: Tambahkan awalan dan akhiran ke bidang yang diekstraksi.

      • Log mentah:

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
      • Aturan transformasi:

        e_kv(
            "http_refer",
            sep="=",
            quote='"',
            escape=False,
            prefix="data_",
            suffix="_end",
            mode="fill-auto",
        )
      • Hasil:

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        data_q_end: asd
        data_a_end: 1
        data_b_end: 2
    • Contoh 3: Ekstrak pasangan kunci-nilai dari bidang content2 dan ekstrak karakter escape menggunakan parameter escape.

      • Log mentah:

        content2: k1:"v1\"abc", k2:"v2", k3: "v3"
      • Aturan transformasi:

        e_kv("content2", sep=":", escape=True)
      • Hasil:

        content2:  k1:"v1\"abc", k2:"v2", k3: "v3"
        k1: v1"abc
        k2: v2
        k3: v3
  • Referensi

    Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Ekstrak pasangan kunci-nilai dinamis dari string.

e_kv_delimit

Fungsi e_kv_delimit mengekstrak pasangan kunci-nilai dari bidang input dengan menggunakan pemisah yang ditentukan.

  • e_kv_delimit(Nama bidang input atau daftar bidang input, pair_sep=r"\s", kv_sep="=", prefix="", suffix="", mode="fill-auto")
  • Parameter

    Tipe

    Diperlukan

    Deskripsi

    Nama bidang input atau daftar bidang input

    String atau daftar string

    Ya

    Nama bidang input atau nama beberapa bidang input. Untuk informasi lebih lanjut tentang cara menentukan nama bidang khusus, lihat Tipe Event.

    pair_sep

    String

    Tidak

    Ekspresi reguler yang digunakan untuk memisahkan pasangan kunci-nilai. Nilai default: \s. Anda juga dapat menentukan \s\w atau abc\s.

    Catatan

    Jika Anda ingin menggunakan string untuk memisahkan pasangan kunci-nilai, kami sarankan Anda menggunakan str_replace atau regex_replace untuk mengonversi string menjadi karakter. Kemudian, Anda dapat menggunakan fungsi e_kv_delimit dengan menentukan karakter sebagai nilai parameter pair_sep untuk memisahkan pasangan kunci-nilai.

    kv_sep

    String

    Tidak

    Ekspresi reguler yang digunakan untuk memisahkan pasangan kunci-nilai. Nilai default: =. Ekspresi reguler dapat berisi satu atau lebih karakter.

    Catatan

    Anda dapat menggunakan grup non-penangkap dalam ekspresi reguler, tetapi Anda tidak dapat menggunakan grup penangkap dalam ekspresi reguler. Untuk informasi lebih lanjut tentang pengelompokan, lihat Grup.

    prefix

    String

    Tidak

    Awalan yang ditambahkan ke bidang yang diekstraksi.

    suffix

    String

    Tidak

    Akhiran yang ditambahkan ke bidang yang diekstraksi.

    mode

    String

    Tidak

    Mode penimpaan bidang. Nilai default: fill-auto. Untuk informasi lebih lanjut tentang nilai lain dari parameter ini, lihat Mode pemeriksaan dan penimpaan ekstraksi bidang.

  • Log yang berisi nilai bidang baru dikembalikan.

    • Contoh 1: Ekstrak pasangan kunci-nilai menggunakan pemisah default =.

      • Log mentah:

        data: i=c1 k1=v1 k2=v2 k3=v3
        Catatan

        Jika log mentah adalah request_uri: a1=1&a2=&a3=3 dan nilai a2 kosong, fungsi e_kv_delimit() tidak dapat mengekstrak nilai a2. Anda dapat menggunakan fungsi e_regex() untuk mengekstrak nilai a2. Contoh: e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"}, mode="overwrite").

      • Aturan transformasi:

        e_kv_delimit("data")
      • Hasil:

        data: i=c1 k1=v1 k2=v2 k3=v3
        i: c1
        k2: v2
        k1: v1
        k3: v3
    • Contoh 2: Ekstrak pasangan kunci-nilai menggunakan pemisah &?.

      • Log mentah:

        data: k1=v1&k2=v2?k3=v3
      • Aturan transformasi:

        e_kv_delimit("data",pair_sep=r"&?")
      • Hasil:

        data: k1=v1&k2=v2?k3=v3
        k2: v2
        k1: v1
        k3: v3
    • Contoh 3: Ekstrak pasangan kunci-nilai menggunakan ekspresi reguler.

      • Log mentah:

        data: k1=v1 k2:v2 k3=v3
      • Aturan transformasi:

        e_kv_delimit("data", kv_sep=r"(?:=|:)")
      • Hasil:

        data: k1=v1 k2:v2 k3=v3
        k2: v2
        k1: v1
        k3: v3

e_syslogrfc

Fungsi e_syslogrfc menghitung nilai dari bidang facility dan severity serta mengembalikan nilai dari bidang facilitylabel yang menunjukkan informasi tingkat. Fungsi ini menghitung nilai berdasarkan nilai dari bidang priority dan protokol syslog yang ditentukan.

  • e_syslogrfc(key, rfc, fields_info=None, mode='overwrite')
  • Parameter

    Tipe

    Diperlukan

    Deskripsi

    key

    Sembarang

    Ya

    Nama dari bidang input. Anda harus memasukkan bidang yang menunjukkan priority.

    rfc

    String

    Ya

    Protokol syslog yang digunakan. Protokol syslog didefinisikan dalam RFC. Nilai valid: SYSLOGRFC3164 dan SYSLOGRFC5424.

    fields_info

    Dict

    Tidak

    key menunjukkan nama dari bidang input, dan value menunjukkan nama dari bidang baru. Bidang berikut dapat diubah namanya. Nama baru dapat dimodifikasi. {"_severity_":"sev","_facility_":"fac","_severitylabel_":"sevlabel","_facilitylabel_":"faclabel"}

    mode

    String

    Tidak

    Mode penimpaan bidang. Nilai default: overwrite. Untuk informasi lebih lanjut tentang nilai lain dari parameter ini, lihat Pengecekan ekstraksi bidang dan mode penimpaan.

  • Log yang berisi bidang dan nilai baru dikembalikan.

    • Contoh 1: Ekstrak nilai dari bidang facility dan severity dan kembalikan informasi tingkat berdasarkan protokol syslog yang didefinisikan dalam RFC 5424.

      • Log mentah:

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twant
      • Aturan transformasi:

        e_syslogrfc("_priority_","SYSLOGRFC5424")
      • Hasil:

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twant
        _facility_: 1
        _severity_: 5
        _severitylabel_: Pemberitahuan: kondisi normal tetapi signifikan
        _facilitylabel_: pesan tingkat pengguna
    • Contoh 2: Ekstrak nilai dari bidang facility dan severity dan kembalikan informasi tingkat berdasarkan protokol syslog yang didefinisikan dalam RFC 5424. Kemudian, ubah nama bidang dengan mengonfigurasi parameter fields_info.

      • Log mentah:

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twant
      • Aturan transformasi:

        e_syslogrfc(
            "_priority_",
            "SYSLOGRFC5424",
            {
                "_facility_": "fac",
                "_severity_": "sev",
                "_facilitylabel_": "_facility_label_",
                "_severitylabel_": "_severity_label_",
            },
        )
      • Hasil:

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twant
        _facility_: 1
        _severity_: 5
        _severity_label_: Pemberitahuan: kondisi normal tetapi signifikan
        _facility_label_: pesan tingkat pengguna
  • Referensi

    Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Mengurai pesan Syslog dalam format standar.

e_anchor

Fungsi e_anchor mengekstrak string dengan menggunakan aturan yang ditentukan oleh anchor_rules.

  • e_anchor(key,anchor_rules,fields,restrict=False,mode="overwrite")
  • Parameter

    Tipe

    Diperlukan

    Deskripsi

    key

    Arbitrary

    Ya

    Nama dari field.

    anchor_rules

    String

    Ya

    Aturan yang digunakan untuk mengekstrak string. Contoh: User = *; Severity = *;,. Tanda bintang (*) menunjukkan konten yang ingin Anda ekstrak.

    Secara default, spasi ditentukan sebelum Value dalam log yang ditampilkan dalam format Key : Value di konsol Log Service. Saat mengonfigurasi parameter anchor_rules, hapus spasi default tersebut. e_anchor

    Catatan

    Saat menentukan field input, Anda tidak dapat menggunakan tanda bintang (*) sebagai awalan atau akhiran.

    fields

    Arbitrary

    Ya

    Nama dari field output yang nilainya diekstraksi dari nilai field input. Nama field dapat berupa daftar string. Contoh: ["user", "job", "result"]. Jika nama field tidak mengandung koma (,), Anda dapat menggunakan koma (,) untuk memisahkan string. Contoh: "user, job, result". Untuk informasi lebih lanjut tentang cara menentukan nama field khusus, lihat Tipe Event. Nama field khusus dapat mengandung karakter khusus kecuali tanda bintang (*).

    Anda dapat menggunakan tanda bintang (*) untuk melewati sebuah field. Sebagai contoh, hanya user dan result yang diekstraksi dari "user,*,result". Untuk informasi lebih lanjut, lihat Contoh 10.

    restrict

    Boolean

    Tidak

    Menentukan apakah akan mengaktifkan mode terbatas. Nilai default: False, yang menunjukkan bahwa mode terbatas dinonaktifkan. Jika jumlah nilai yang diekstraksi dari nilai field input berbeda dari jumlah nama field output, operasi yang dilakukan oleh fungsi bervariasi berdasarkan mode.

    • Jika mode terbatas diaktifkan, fungsi tidak melakukan operasi.

    • Jika mode terbatas dinonaktifkan, fungsi mencocokkan field yang ditentukan dengan nilai-nilai dan memberikan nilai tertentu kepada field-field tersebut.

    mode

    String

    Tidak

    Nilai default: overwrite. Untuk informasi lebih lanjut, lihat Mode pengecekan dan penimpaan ekstraksi field.

  • Data yang diekstraksi dikembalikan.

    • Contoh 1: Ekstrak nilai untuk field yang ditentukan dari sebuah log.

      • Log mentah:

        content : "Aug 2 04:06:08: host=192.168.0.10: local/ssl2 notice mcpd[3772]: User=jsmith@example.com: severity=warning: 01070638:5: Pool member 172.31.51.22:0 monitor status down."
      • Aturan transformasi:

        e_anchor("content","User=*: severity=*:",["user_field","severity_field"])
      • Hasil:

        content : "Aug 2 04:06:08: host=192.168.0.10: local/ssl2 notice mcpd[3772]: User=jsmith@example.com: severity=warning: 01070638:5: Pool member 172.31.51.22:0 monitor status down."
        user_field : jsmith@example.com
        severity_field : warning
    • Contoh 2: Ekstrak beberapa nilai dalam format array JSON.

      • Log mentah:

        content : '"information":{"name_list":["Twiss","Evan","Wind","like"],"university":["UCL","Stanford University","CMU"]},"other":"graduate"'
      • Aturan transformasi:

        e_anchor("content",'name_list":*,"university":*},', ["name_list","universities"])
      • Hasil:

        content : '"information":{"name_list":["Twiss","Evan","Wind","like"],"university":["UCL","Stanford University","CMU"]},"other":"graduate"'
        name_list : ["Twiss","Evan","Wind","like"]
        universities : ["UCL","Stanford University","CMU"]
    • Contoh 3: Ekstrak log yang mengandung karakter khusus.

      • Log mentah:

        content : (+2019) June 24 "I am iron man"
      • Aturan transformasi:

        e_anchor("content", "(+*) * \"*\"",["Year","Date","Msg"])
      • Hasil:

        content : (+2019) June 24 "I am iron man"
        Year : 2019
        Date : June 24
        Msg : I am iron man
    • Contoh 4: Ekstrak log yang mengandung karakter kontrol \x09.

      • Log mentah:

        content : \x09\x09\x09Chrome/55.0 Safari/537.36
      • Aturan transformasi:

        e_anchor("content", "\x09\x09\x09*/55.0 */537.36",["Google", "Apple"])
      • Hasil:

        content : \x09\x09\x09Chrome/55.0 Safari/537.36
        Google : Chrome
        Apple : Safari
    • Contoh 5: Ekstrak field content yang mengandung karakter khusus. To...Subject yang datang setelah MESSAGE: adalah konten sebenarnya dari field content.

      • Log mentah:

        content : 12:08:10,651 INFO sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE: 
        To: example@aliyun.com
        Subject: New line Breaks in Message
      • Aturan transformasi:

        e_anchor("content","* INFO *: \n    To: *\n    Subject: *",["time","message","email","subject"])
      • Hasil:

        content : 12:08:10,651 INFO sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE: 
        To: example@aliyun.com
        Subject: New line Breaks in Message
        
        time : 12:08:10,651
        message : sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE
        email : example@aliyun.com
        subject : New line Breaks in Message
    • Contoh 6: Ekstrak field content yang mengandung karakter khusus dan kembalikan nilai yang tidak menampilkan karakter kontrol\t.

      • Log mentah:

        content :   I'm tabbed in
      • Aturan transformasi:

        e_anchor("content","\tI'm * in","word")
        # Anda juga dapat menggunakan aturan transformasi berikut untuk menyalin nilai dari field content. Hapus spasi default dari nilai.
        e_anchor("content","    I'm * in","word")
      • Hasil:

        content :   I'm tabbed in
        word : tabbed
    • Contoh 7: Ekstrak field content yang mengandung karakter khusus dan kembalikan nilai yang menampilkan karakter kontrol \t.

      • Log mentah:

        content : \tI'm tabbed in
      • Aturan transformasi:

        e_anchor("content","\tI'm * in","word")
        # Anda juga dapat menggunakan aturan transformasi berikut:
        e_anchor("content","    I'm * in","word")
      • Hasil:

        content : \tI'm tabbed in
        word : tabbed
    • Contoh 8: Ekstrak log dalam mode terbatas.

      • Log mentah:

        content :  I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
      • Aturan transformasi:

        e_anchor("content","I * to * having",["v_word", "n_word","asd"],restrict=True)
      • Hasil:

        content : I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
    • Contoh 9: Ekstrak log dalam mode non-terbatas.

      • Log mentah:

        content :  I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
      • Aturan transformasi:

        e_anchor("content","love * fight with my * and",["test1","test2","test13"],restrict=False)
      • Hasil:

        content : I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
        test1 : having snowball
        test2 : friends
    • Contoh 10: Ekstrak nilai dari sebuah field dan tetapkan nilai yang diekstraksi ke field lain.

      • Log mentah:

        content: Could you compare the severity of natural disasters to man-made disasters
      • Aturan transformasi:

        e_anchor('content', 'compare the * of natural disasters to man-made *', 'n-word,*')
      • Hasil:

        content : Could you compare the severity of natural disasters to man-made disasters
        n-word : severity