All Products
Search
Document Center

Simple Log Service:Fungsi ekstraksi nilai

Last Updated:Aug 27, 2026

Topik ini menjelaskan sintaksis fungsi ekstraksi nilai bidang, termasuk parameter dan contohnya.

Daftar fungsi

Type

Function

Description

Regular expression extraction

e_regex

Ekstrak nilai dari suatu bidang menggunakan regular expression dan tetapkan ke bidang lain.

Fungsi ini dapat dikombinasikan dengan fungsi lain. Untuk contoh terkait, lihat Parse Java error logs.

JSON extraction

e_json

Memproses objek JSON dalam bidang tertentu. Operasi mencakup memperluas objek, mengekstrak data dengan JMESPath, atau mengekstrak dan memperluas.

Fungsi ini dapat dikombinasikan dengan fungsi lain. Untuk contoh terkait, lihat Transform complex JSON data.

Delimiter-based extraction

e_csv, e_psv, e_tsv

Mengekstrak nilai untuk beberapa bidang dari bidang sumber menggunakan delimiter dan nama bidang yang telah ditentukan.

  • e_csv: Delimiter default adalah koma (,).

  • e_psv: Delimiter default adalah bar vertikal (|).

  • e_tsv: Delimiter default adalah karakter tab (\t).

Fungsi-fungsi ini dapat dikombinasikan dengan fungsi lain. Untuk contoh terkait, lihat Parse CSV-formatted logs.

Key-value extraction

e_kv

Mengekstrak pasangan kunci-nilai dari satu atau beberapa bidang sumber menggunakan karakter quote tertentu.

Fungsi ini dapat dikombinasikan dengan fungsi lain. Untuk contoh terkait, lihat Extract dynamic key-value pairs from a string.

e_kv_delimit

Mengekstrak pasangan kunci-nilai dari bidang sumber menggunakan delimiter.

Syslog standard extraction

e_syslogrfc

Menghitung facility dan severity dari nilai priority berdasarkan protokol Syslog dan memetakannya ke level yang sesuai.

Fungsi ini dapat dikombinasikan dengan fungsi lain. Untuk contoh terkait, lihat Parse standard Syslog format data.

Rule-based extraction

e_anchor

Mengekstrak string menggunakan aturan yang didefinisikan dalam anchor_rules.

e_regex

Mengekstrak nilai dari suatu bidang berdasarkan ekspresi reguler dan menetapkannya ke bidang lain.

  • Sintaksis

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

    Parameter

    Type

    Required

    Description

    key

    Any

    Yes

    Bidang sumber. Jika bidang tidak ada, fungsi tidak melakukan apa pun. Untuk informasi tentang cara mengonfigurasi nama bidang khusus, lihat event types.

    regex

    String

    Yes

    Regular expression yang digunakan untuk mengekstrak nilai bidang. Mendukung grup capturing maupun non-capturing.

    Catatan

    Grup non-capturing, yang memerlukan awalan ?:, kadang-kadang digunakan untuk pengelompokan. Contohnya, \w+@\w+\.\w(?:\.\cn)?. Untuk informasi lebih lanjut, lihat non-capturing groups.

    fields_info

    String/List/Dict

    No

    Bidang target untuk nilai yang cocok. Parameter ini wajib jika Anda tidak menggunakan named capturing groups dalam regular expression.

    mode

    String

    No

    Mode overwrite untuk bidang. Nilai default adalah fill-auto. Untuk informasi lebih lanjut tentang nilai dan maknanya, lihat field extraction check and overwrite mode.

    pack_json

    String

    No

    Menyimpan semua hasil yang cocok dari regular expression ke bidang yang ditentukan oleh pack_json. Nilai default adalah None, yang menunjukkan bahwa penyimpanan dinonaktifkan.

  • Tanggapan

    Mengembalikan log yang telah diperbarui dengan bidang yang diekstrak beserta nilainya.

  • Contoh

    • Contoh 1: Ekstrak satu nilai

      • raw log

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

        # Ekstrak alamat IP pertama dari bidang msg. 
        e_regex("msg",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","ip")
      • hasil transformasi

        msg: 192.168.0.1 http://... 127.0.0.0
        ip: 192.168.0.1
    • Contoh 2: Ekstrak beberapa nilai

      • raw log

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

        # Ekstrak dua alamat IP dari bidang msg dan tetapkan ke server_ip dan client_ip.
        e_regex("msg",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",["server_ip","client_ip"])
      • hasil transformasi

        msg: 192.168.0.1 http://... 127.0.0.0
        server_ip: 192.168.0.1
        client_ip: 127.0.0.0
    • Contoh 3: Ekstrak nilai menggunakan capturing group

      • raw log

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

        # Gunakan regular expression untuk menangkap nilai version dan error dari bidang content.
        e_regex("content",r"start sys version: (\w+),\s*err: (\d+)",["version","error"])
      • hasil transformasi

        content: start sys version: deficience, err: 2
        error: 2
        version: deficience
    • Contoh 4: Ekstrak nilai menggunakan named capturing group

      • raw log

        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 transformasi

        content:  start sys version: deficience, err: 2
        error:  2
        version:  deficience
    • Contoh 5: Buat nama bidang dan nilai secara dinamis dari bidang dict

      • raw log

        dict: verify:123
      • aturan transformasi

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

        dict: verify:123
        k_verify: v_123
    • Contoh 6: Ekstrak dan simpan nilai ke bidang name

      • raw log

        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 transformasi

        msg:192.168.0.1 http://... 127.0.0.0
        name:{"ip": "192.168.0.1"}
    • Contoh 7: Buat bidang secara dinamis dari bidang dict dan simpan ke bidang name

      • raw log

        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 transformasi

        dict:x:123, y:456, z:789
        name:{"k_x": "v_123", "k_y": "v_456", "k_z": "v_789"}
    • Contoh 8: Ekstrak dan simpan nilai dari capturing group ke bidang name

      • raw log

        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 transformasi

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

    Anda dapat menggabungkan fungsi ini dengan fungsi lain. Untuk contoh terkait, lihat Parse Java error logs.

e_json

Menjalankan operasi JSON pada objek JSON dalam bidang tertentu. Operasi tersebut mencakup memperluas data JSON, mengekstrak data dengan ekspresi JMESPath, atau mengekstrak lalu memperluas subset JSON.

  • Sintaksis

    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 string target bukan objek JSON yang valid, fungsi e_json mengembalikan string asli tanpa menguraikannya.

  • Parameter

    Parameter

    Type

    Required

    Description

    key

    String

    Yes

    Nama bidang input. Jika bidang tidak ada, fungsi tidak melakukan apa pun. Untuk informasi tentang cara mengonfigurasi nama bidang khusus, lihat Event types.

    expand

    Boolean

    No

    Menentukan apakah akan memperluas bidang.

    • Jika parameter jmes tidak dikonfigurasi, nilai default adalah True, yang memperluas bidang.

    • Jika parameter jmes dikonfigurasi, nilai default adalah False, yang tidak memperluas bidang.

    depth

    Number

    No

    Kedalaman hingga fungsi memperluas bidang. Nilai valid: 1 hingga 2000. Nilai default adalah 100. Nilai 1 hanya memperluas level pertama.

    prefix

    String

    No

    Awalan yang ditambahkan ke setiap nama bidang yang diperluas.

    suffix

    String

    No

    Akhiran yang ditambahkan ke setiap nama bidang yang diperluas.

    fmt

    String

    No

    Metode pemformatan untuk nama bidang yang diperluas. Nilai valid:

    • simple (default): Menggunakan nama node saat ini sebagai nama bidang. Formatnya adalah {prefix}{current}{suffix}.

    • full: Menggabungkan path lengkap dari bidang sumber ke node saat ini sebagai nama bidang. Formatnya adalah {parent_list_str}{sep}{prefix}{current}{suffix}. Delimiter ditentukan oleh parameter sep. Delimiter default adalah ..

    • parent: Menggabungkan nama node saat ini dengan nama node induk langsungnya. Formatnya adalah {parent}{sep}{prefix}{current}{suffix}. Delimiter ditentukan oleh parameter sep. Delimiter default adalah ..

    • root: Menggabungkan nama node saat ini dengan nama node root. Formatnya adalah {parent_list[0]}{sep}{prefix}{current}{suffix}. Delimiter ditentukan oleh parameter sep. Delimiter default adalah ..

    sep

    String

    No

    Delimiter antara nama node induk dan anak. Parameter ini berlaku ketika fmt diatur ke full, parent, atau root. Nilai default adalah ..

    expand_array

    Boolean

    No

    Menentukan apakah akan memperluas array. Nilai default adalah True.

    fmt_array

    String

    No

    Metode pemformatan untuk perluasan array. Formatnya adalah {parent_rlist[0]}_{index}. Anda juga dapat membuat string format kustom dengan menggunakan hingga lima placeholder: parent_list, current, sep, prefix, dan suffix.

    include_node

    String/Number

    No

    Daftar putih node menentukan nama node yang disertakan untuk penyaringan. Secara default, hanya node yang namanya terdiri dari karakter Tionghoa, angka, huruf, dan _.- yang secara otomatis diperluas.

    exclude_node

    String

    No

    Ekspresi reguler yang mendefinisikan daftar hitam nama node untuk dikecualikan.

    include_path

    String

    No

    Ekspresi reguler yang mendefinisikan daftar putih path node untuk disertakan.

    exclude_path

    String

    No

    Ekspresi reguler yang mendefinisikan daftar hitam path node untuk dikecualikan.

    jmes

    String

    No

    Ekspresi JMESPath untuk mengekstrak data dari objek JSON.

    output

    String

    No

    Nama bidang output untuk nilai yang diekstrak menggunakan ekspresi JMESPath.

    jmes_ignore_none

    Boolean

    No

    Menentukan perilaku ketika ekspresi JMESPath tidak menemukan nilai. Jika True (default), ekstraksi diabaikan. Jika False, string kosong dikembalikan.

    mode

    String

    No

    Mode overwrite bidang. Nilai default adalah fill-auto. Untuk informasi lebih lanjut, lihat Field extraction check and overwrite modes.

    • Penyaringan perluasan JSON

      • Jika daftar putih node ditetapkan, hanya node dalam daftar putih yang disertakan dalam hasil. Contoh ekspresi reguler untuk daftar putih node: e_json("json_data_filed", ...., include_node=r'key\d+').

      • Jika daftar hitam node ditetapkan, node dalam daftar hitam dikecualikan dari hasil. Contoh ekspresi reguler untuk daftar hitam node: e_json("json_data_filed", ...., exclude_node=r'key\d+').

      • Untuk perluasan path node, ekspresi reguler include_path dan exclude_path dicocokkan dengan awal path. Path node menggunakan . sebagai delimiter.

    • Penyaringan JMESPath

      Gunakan JMESPath untuk memilih dan menghitung data.

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

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

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

      • Kembalikan string kosong jika path 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 penggunaannya.

      Raw log:

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

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

        Hasil transformasi:

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

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

        Hasil transformasi:

        data:{ "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
        k2-data#k3:200
        k4-k2#k5:300
  • Tanggapan

    Mengembalikan log dengan bidang baru yang ditambahkan.

  • Contoh

    • Contoh 1: Memperluas bidang

      • Raw log

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

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

        data: {"k1": 100, "k2": 200}
        k1: 100
        k2: 200
    • Contoh 2: Menambahkan awalan dan akhiran ke nama bidang

      • Raw log

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

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

        data: {"k1": 100, "k2": 200}
        data_k1_end: 100
        data_k2_end: 200
    • Contoh 3: Memperluas bidang menggunakan format berbeda

      • Raw log

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
      • fmt=full

        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
      • fmt=parent

        e_json("data", fmt='parent')
        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data.k1: 100
        k2.k3: 200
        k4.k5: 300
      • fmt=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: Mengekstrak data JSON dengan delimiter, awalan, dan akhiran tertentu

      • Raw log

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

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

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

      • Raw log

        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 transformasi

        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: Menggunakan ekspresi JMESPath untuk mengekstrak objek JSON

      • Raw log

        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 transformasi

        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"]
  • Bacaan lanjutan

    Untuk contoh menggabungkan fungsi ini dengan fungsi lain, lihat Complex JSON data transformation.

e_csv, e_psv, dan e_tsv

Fungsi-fungsi ini mengekstrak beberapa bidang dari bidang tertentu menggunakan delimiter kustom dan nama bidang yang telah ditentukan.

  • e_csv: Delimiter default adalah koma (,).

  • e_psv: Delimiter default adalah bar vertikal (|).

  • e_tsv: Delimiter default adalah karakter tab (\t).

  • Sintaksis

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

    Parameter

    Type

    Required

    Description

    input field name

    Any

    Yes

    Nama bidang input. Jika bidang yang ditentukan tidak ada, fungsi tidak melakukan apa pun. Untuk informasi tentang cara menentukan nama bidang khusus, lihat Event types.

    output field list

    Any

    Yes

    Nama bidang output yang menyimpan nilai yang diurai.

    Anda dapat memberikan nama sebagai daftar string, seperti ["error", "message", "result"].

    Jika nama bidang tidak mengandung koma, Anda juga dapat memberikan string tunggal dengan nama dipisahkan koma, seperti "error, message, result".

    Untuk informasi tentang cara menentukan nama bidang khusus, lihat Event types.

    sep

    String

    No

    Delimiter. Harus berupa satu karakter.

    quote

    String

    No

    Karakter yang digunakan untuk membungkus nilai. Gunakan ini ketika nilai mengandung delimiter.

    restrict

    Boolean

    No

    Menentukan apakah akan menggunakan mode terbatas. Nilai default adalah True, yang mengaktifkan mode terbatas. Parameter ini menentukan perilaku ketika jumlah nilai yang diurai tidak sesuai dengan jumlah bidang output:

    • Dalam mode terbatas (True), fungsi tidak melakukan apa pun.

    • Dalam mode tidak terbatas (False), fungsi menetapkan nilai ke bidang yang sesuai.

    mode

    String

    No

    Mode overwrite bidang. Nilai default adalah fill-auto. Untuk informasi lebih lanjut tentang nilai dan maknanya, lihat Field extraction check and overwrite modes.

  • Tanggapan

    Mengembalikan log dengan bidang baru yang ditambahkan.

  • Contoh

    Contoh berikut menggunakan e_csv. Fungsi e_psv dan e_tsv beroperasi serupa.

    • Raw log

      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=how-to-make-noodles&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=how-to-make-noodles&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36,-,-
        body_bytes_sent:  6404
      guid:  -
      host:  example.aliyundoc.com
      http_referer:  https://image.developer.aliyundoc.com/s?q=how-to-make-noodles&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
  • Informasi lebih lanjut

    Fungsi-fungsi ini dapat dikombinasikan dengan fungsi lain. Untuk contoh terkait, lihat Parse CSV-formatted logs.

e_kv

Mengekstrak pasangan kunci-nilai dari satu atau beberapa bidang input.

  • Sintaksis

    e_kv(field_or_list, sep="=", quote='"', escape=False, prefix="", suffix="", mode="fill-auto")
  • Parameter

    Parameter

    Type

    Required

    Description

    field_or_list

    String or list of strings

    Yes

    Nama satu atau beberapa bidang input. Untuk informasi tentang cara menentukan nama bidang khusus, lihat Event types.

    sep

    String

    No

    Separator kunci-nilai, yang dapat berupa ekspresi reguler. Nilai default adalah =.

    Catatan

    Anda dapat menggunakan grup non-capturing, tetapi tidak boleh menggunakan grup capturing. Untuk informasi lebih lanjut, lihat Grouping.

    quote

    String

    No

    Karakter yang digunakan untuk membungkus nilai. Nilai default adalah ".

    Catatan

    Nilai pasangan kunci-nilai dinamis yang diekstrak biasanya dibungkus tanda kutip, misalnya, a="abc" dan b="xyz". Jika nilai tidak dibungkus tanda kutip, sistem hanya mengekstrak nilai yang terdiri dari karakter berikut: karakter Tionghoa, huruf, angka, dan simbol _-.%~. Misalnya, dari a=ab12_-.%~|abc b=123, sistem mengekstrak a: ab12_-.%~ dan b: 123.

    escape

    Boolean

    No

    Mengontrol apakah akan menginterpretasikan karakter escape dalam nilai. Nilai default adalah False. Misalnya, dari input key="abc\"xyz", secara default, fungsi mengekstrak nilai abc\ untuk bidang key. Jika Anda mengatur escape=True, nilai yang diekstrak adalah abc"xyz.

    prefix

    String

    No

    Awalan yang ditambahkan ke nama bidang yang diekstrak.

    suffix

    String

    No

    Akhiran yang ditambahkan ke nama bidang yang diekstrak.

    mode

    String

    No

    Mode overwrite bidang. Nilai default adalah fill-auto. Untuk informasi lebih lanjut tentang mode yang tersedia, lihat Field extraction check and overwrite modes.

  • Tanggapan

    Menambahkan pasangan kunci-nilai yang diekstrak ke log sebagai bidang baru.

  • Contoh

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

      • Raw log

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

        Jika raw log adalah request_uri: a1=1&a2=&a3=3 dan nilai a2 kosong, fungsi e_kv() tidak dapat mengekstrak a2. Anda dapat menggunakan fungsi e_regex() untuk mengekstraknya, misalnya, 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 nama bidang.

      • Raw log

        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 interpretasikan karakter escape menggunakan parameter escape.

      • Raw log

        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
  • Bacaan lanjutan

    Untuk contoh menggabungkan fungsi ini dengan fungsi lain, lihat Extract dynamic key-value pairs from a string.

e_kv_delimit

Mengekstrak pasangan kunci-nilai dari bidang input menggunakan delimiter.

  • Sintaksis

    e_kv_delimit(field_or_list, pair_sep=r"\s", kv_sep="=", prefix="", suffix="", mode="fill-auto")
  • Parameter

    Parameter

    Type

    Required

    Description

    field_or_list

    string or list of strings

    Yes

    Nama satu atau beberapa bidang input. Untuk informasi tentang cara menentukan nama bidang khusus, lihat event type.

    pair_sep

    string

    No

    Ekspresi reguler yang memisahkan pasangan kunci-nilai. Nilai default adalah \s. Contoh lain termasuk \s\w dan abc\s.

    Catatan

    Untuk menggunakan string literal sebagai separator, kami sarankan terlebih dahulu menggantinya dengan delimiter karakter tunggal menggunakan fungsi str_replace atau regex_replace. Anda kemudian dapat menggunakan fungsi ini untuk mengurai bidang tersebut.

    kv_sep

    string

    No

    Ekspresi reguler yang memisahkan kunci dari nilainya. Nilai default adalah =. Ekspresi ini tidak terbatas pada satu karakter.

    Catatan

    Anda dapat menggunakan grup non-capturing, tetapi tidak boleh menggunakan grup capturing. Untuk informasi lebih lanjut, lihat Grouping.

    prefix

    string

    No

    Awalan yang ditambahkan ke nama bidang yang diekstrak.

    suffix

    string

    No

    Akhiran yang ditambahkan ke nama bidang yang diekstrak.

    mode

    string

    No

    Mode overwrite bidang. Nilai default adalah fill-auto. Untuk detail tentang nilai-nilai tersebut, lihat Field extraction check and overwrite modes.

  • Tanggapan

    Mengembalikan log dengan pasangan kunci-nilai yang diekstrak ditambahkan sebagai bidang baru.

  • Contoh

    • Contoh 1: Mengekstrak pasangan kunci-nilai menggunakan delimiter default =.

      • Raw log

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

        Jika raw log adalah request_uri: a1=1&a2=&a3=3, fungsi e_kv_delimit() tidak dapat mengekstrak a2 karena nilainya kosong. Untuk mengekstrak pasangan dengan nilai kosong, gunakan fungsi e_regex(). Misalnya: 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 delimiter &?.

      • Raw log

        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 sebagai separator kunci-nilai.

      • Raw log

        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

Menghitung facility dan severity dari nilai priority sesuai protokol syslog dan menambahkan label yang sesuai.

  • Sintaksis

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

    Parameter

    Type

    Required

    Description

    key

    Any

    Yes

    Nama bidang yang berisi nilai priority.

    rfc

    String

    Yes

    Protokol syslog yang digunakan. Nilai valid: SYSLOGRFC3164 dan SYSLOGRFC5424.

    fields_info

    Dict

    No

    Kamus yang memetakan nama bidang output default (kunci) ke nama kustom (nilai). Bidang berikut dapat diganti namanya: {"_severity_":"sev","_facility_":"fac","_severitylabel_":"sevlabel","_facilitylabel_":"faclabel"}

    mode

    String

    No

    Mode overwrite untuk bidang output. Nilai default adalah overwrite. Untuk informasi lebih lanjut, lihat Field extraction check and overwrite modes.

  • Tanggapan

    Mengembalikan log dengan bidang facility, severity, dan label baru.

  • Contoh

    • Contoh 1: Ekstrak informasi facility, severity, dan label menggunakan protokol SYSLOGRFC5424

      • raw log

        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_: twish
      • 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_: twish
        _facility_: 1
        _severity_: 5
        _severitylabel_: Notice: normal but significant condition
        _facilitylabel_: user-level messages
    • Contoh 2: Ekstrak informasi facility, severity, dan label menggunakan protokol SYSLOGRFC5424 dan ganti nama bidang output

      • raw log

        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_: twish
      • 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_: twish
        fac: 1
        sev: 5
        _severity_label_: Notice: normal but significant condition
        _facility_label_: user-level messages
  • Referensi

    Fungsi ini dapat dikombinasikan dengan fungsi lain. Untuk contoh terkait, lihat Parse standard Syslog format data.

e_anchor

Mengekstrak string dari bidang input menggunakan aturan yang Anda definisikan dalam parameter anchor_rules.

  • Sintaksis

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

    Parameter

    Type

    Required

    Description

    key

    Any

    Yes

    Nama bidang input.

    anchor_rules

    String

    Yes

    Menentukan pola untuk mengekstrak string, di mana tanda bintang (*) mewakili konten yang akan diekstrak. Contohnya: User = *; Severity = *;.

    Log yang ditampilkan di konsol berformat Key : Value dengan spasi default antara titik dua dan nilai. Saat menentukan anchor_rules, jangan sertakan spasi ini. Dalam entri log contoh, bidang content adalah bidang target yang akan diekstrak.

    _source_:  bin-hangzhou-oss
    _tag_:_object_:  test001/test001-or20190906155735.perf
    _tag_:_receive_time_:  1582768681
    _topic_:
    content:  "Download": 4001792
    Catatan

    Tanda bintang (*) tidak dapat digunakan sebagai awalan atau akhiran dalam nilai bidang input.

    fields

    Any

    Yes

    Nama bidang output untuk nilai yang diekstrak. Anda dapat menentukan nama sebagai daftar string, seperti ["user", "job", "result"]. Jika nama bidang tidak mengandung koma (,), Anda juga dapat menentukannya sebagai string tunggal dengan nama dipisahkan koma, seperti "user, job, result". Untuk detail tentang penentuan nama bidang khusus, yang dapat mengandung karakter khusus tetapi tidak tanda bintang (*), lihat event type.

    Anda dapat melewati nama bidang dengan menggunakan tanda bintang (*). Misalnya, jika Anda menentukan "user,*,result", hanya bidang user dan result yang dibuat. Untuk informasi lebih lanjut, lihat Contoh 10.

    restrict

    Boolean

    No

    Menentukan apakah akan menggunakan mode terbatas. Default adalah False (mode tidak terbatas). Parameter ini menentukan perilaku ketika jumlah nilai yang diekstrak tidak sesuai dengan jumlah bidang output:

    • Dalam mode terbatas (True), fungsi tidak melakukan apa pun.

    • Dalam mode tidak terbatas (False), fungsi menetapkan nilai ke bidang yang sesuai secara berurutan.

    mode

    String

    No

    Nilai default adalah overwrite. Lihat field extraction check and overwrite mode untuk informasi lebih lanjut.

  • Tanggapan

    Mengembalikan log asli dengan bidang yang diekstrak beserta nilainya ditambahkan.

  • Contoh

    • Contoh 1: Ekstrak beberapa nilai

      • Raw log

        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 array JSON

      • Raw log

        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 dari log yang mengandung karakter khusus

      • Raw log

        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 dari log yang mengandung karakter kontrol tak terlihat (\x09)

      • Raw log

        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 bidang content yang berisi nilai dengan karakter khusus. Nilai bidang tersebut adalah To...Subject, yang mengikuti MESSAGE:.

      • Raw log

        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 bidang content yang berisi nilai dengan karakter khusus tak terlihat \t.

      • Raw log

        content :   I'm tabbed in
      • Aturan transformasi

        e_anchor("content","\tI'm * in","word")
        # Anda juga dapat menyalin nilai persis dari bidang content untuk membuat pola.
        # Jangan salin spasi default setelah titik dua dalam nama bidang.
        e_anchor("content","    I'm * in","word")
      • Hasil

        content :   I'm tabbed in
        word : tabbed
    • Contoh 7: Ekstrak bidang content yang berisi nilai karakter khusus, yang ditampilkan sebagai \t.

      • Raw log

        content : \tI'm tabbed in
      • Aturan transformasi

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

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

      • Raw log

        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 tidak terbatas

      • Raw log

        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 satu nilai dan lewati yang lain

      • Raw log

        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