全部产品
Search
文档中心

Simple Log Service:Fungsi kontrol alur

更新时间:Jul 02, 2025

Topik ini menjelaskan sintaksis dan parameter dari fungsi kontrol alur serta memberikan contoh penggunaannya.

Fungsi

Fungsi

Deskripsi

e_compose

Menggabungkan beberapa operasi.

  • Fungsi ini biasanya digunakan dalam fungsi e_if, e_switch, atau e_if_else.

  • Fungsi ini melakukan operasi yang ditentukan pada log secara berurutan dan mengembalikan hasilnya.

  • Jika fungsi melakukan operasi yang menghapus log, fungsi tidak akan melakukan operasi lain pada log tersebut.

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

e_if

Menjalankan operasi jika kondisi tertentu terpenuhi. Anda dapat menentukan beberapa pasangan kondisi-operasi.

  • Jika kondisi terpenuhi, fungsi akan menjalankan operasi yang sesuai dengan kondisi tersebut. Jika kondisi tidak terpenuhi, fungsi tidak akan menjalankan operasi tersebut, tetapi mengevaluasi kondisi berikutnya.

  • Jika fungsi melakukan operasi yang menghapus log, fungsi tidak akan melakukan operasi lain pada log tersebut.

e_if(
    e_has("a"), e_output("target-a"), 
    e_has("b"), e_output("target-b"),
)

Contoh fungsi di atas setara dengan kode Python berikut:

if e_has("a"):
    e_output("target-a")
if e_has("b"):
    e_output("target-b")

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

e_if_else

Menjalankan operasi berdasarkan hasil evaluasi kondisi tertentu.

e_if_else(e_has("a"), e_output("target-a"), e_output("target-b"))

Contoh fungsi di atas setara dengan kode Python berikut:

if e_has("a"):
    e_output("target-a")
else:
    e_output("target-b")

e_switch

Menjalankan operasi jika kondisi tertentu terpenuhi. Anda dapat menentukan beberapa pasangan kondisi-operasi.

  • Jika kondisi terpenuhi, fungsi akan menjalankan operasi yang sesuai dengan kondisi tersebut dan mengembalikan hasilnya. Jika kondisi tidak terpenuhi, fungsi tidak akan menjalankan operasi tersebut, tetapi mengevaluasi kondisi berikutnya.

  • Jika tidak ada kondisi yang terpenuhi dan parameter default dikonfigurasi, fungsi akan menjalankan operasi yang ditentukan oleh parameter default dan mengembalikan hasilnya.

  • Jika fungsi melakukan operasi yang menghapus log, fungsi tidak akan melakukan operasi lain pada log tersebut.

e_switch(
    e_has("a"), e_output("target-a"), 
    e_has("b"), e_output("target-b"),
    default=e_output("target-default"), 
)

Contoh fungsi di atas setara dengan kode Python berikut:

if e_has("a"):
    e_output("target-a")
elif e_has("b"):
    e_output("target-b")
else:
    e_output("target-default")

Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Distribusikan data ke beberapa Logstore tujuan.

e_compose

Fungsi e_compose menggabungkan beberapa operasi.

  • Sintaksis

    e_compose(Operasi 1, Operasi 2, ...)
  • Parameter

    Parameter

    Tipe

    Diperlukan

    Deskripsi

    Operasi 1

    Fungsi pemrosesan global

    Ya

    Fungsi pemrosesan global atau kombinasi fungsi pemrosesan global.

    Operasi 2

    Fungsi pemrosesan global

    Tidak

    Fungsi pemrosesan global atau kombinasi fungsi pemrosesan global.

  • Respons

    Log tempat operasi yang ditentukan dilakukan dikembalikan.

  • Contoh

    Jika nilai bidang konten adalah 123, hapus bidang umur dan nama, lalu ubah nilai bidang konten menjadi ctx.

    • Log mentah

      konten: 123
      umur: 23
      nama: twiss
    • Aturan transformasi

      e_if(
          e_search("konten==123"),
          e_compose(e_drop_fields("umur|nama"), e_rename("konten", "ctx")),
      )
    • Hasil

      ctx: 123
  • Referensi

    Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Transformasikan Data JSON Kompleks.

e_if

Fungsi e_if menjalankan operasi jika kondisi tertentu terpenuhi.

  • Sintaksis

    e_if(Kondisi, Operasi)
    e_if(Kondisi 1, Operasi 1, Kondisi 2, Operasi 2, ...)
    Catatan

    Anda harus menentukan parameter Kondisi dan Operasi dalam pasangan.

  • Parameter

    Parameter

    Tipe

    Diperlukan

    Deskripsi

    Kondisi

    Sembarang

    Ya

    Ekspresi atau kombinasi ekspresi. Jika hasilnya bukan nilai Boolean, sistem akan mengevaluasi apakah kondisi benar atau salah.

    Operasi

    Fungsi pemrosesan global

    Ya

    Fungsi pemrosesan global atau kombinasi fungsi pemrosesan global.

  • Respons

    Log tempat operasi yang ditentukan dilakukan dikembalikan.

  • Contoh

    • Contoh 1: Cocokkan nilai bidang dengan nilai yang ditentukan dan jalankan operasi.

      Jika nilai bidang hasil adalah gagal atau kegagalan, atur bidang __topic__ menjadi login_failed_event.

      e_if(e_match("hasil", r"gagal|kegagalan"), e_set("__topic__", "login_failed_event"))
    • Contoh 2: Lakukan evaluasi berdasarkan nilai bidang dan jalankan operasi.

      Jika bidang request_body ada dan tidak kosong, panggil fungsi pemrosesan bidang e_json untuk memperluas nilai bidang request_body menjadi beberapa nilai.

      e_if(v("request_body"), e_json("request_body"))
    • Contoh 3: Lakukan evaluasi tingkat lanjut dan jalankan operasi.

      Jika nilai bidang valid adalah gagal dalam huruf kecil, buang log.

      e_if(op_eq(str_lower(v("valid")), "gagal"), DROP)
    • Contoh 4: Jalankan beberapa operasi secara berurutan berdasarkan kondisi yang ditentukan.

      e_if(True, e_set("__topic__", "default_login"), 
           e_match("valid", "gagal"), e_set("__topic__", "login_failed_event")
        )
  • Referensi

    Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Transformasikan Data JSON Kompleks.

e_if_else

Fungsi e_if_else menjalankan operasi berdasarkan hasil evaluasi kondisi tertentu.

  • Sintaksis

    e_if_else(Kondisi, Operasi 1 jika Kondisi bernilai benar, Operasi 2 jika Kondisi bernilai salah)
  • Parameter

    Parameter

    Tipe

    Diperlukan

    Deskripsi

    Kondisi

    Sembarang

    Ya

    Ekspresi atau kombinasi ekspresi. Jika hasilnya bukan nilai Boolean, sistem akan mengevaluasi apakah kondisi benar atau salah.

    Operasi 1 jika Kondisi bernilai benar

    Fungsi pemrosesan global

    Ya

    Fungsi pemrosesan global atau kombinasi fungsi pemrosesan global.

    Operasi 2 jika Kondisi bernilai salah

    Fungsi pemrosesan global

    Ya

    Fungsi pemrosesan global atau kombinasi fungsi pemrosesan global.

  • Respons

    Log tempat operasi dilakukan berdasarkan hasil evaluasi kondisi yang ditentukan dikembalikan.

  • Contoh

    Jika nilai bidang hasil adalah ok atau pass, atau jika nilai bidang status adalah 200, pertahankan log.

    • Log mentah

      hasil: ok
      status: 400
      hasil: Pass
      status: 200
      hasil: kegagalan
      status: 500
    • Aturan transformasi

      e_if_else(
          op_or(e_match("hasil", r"(?i)ok|pass"), e_search("status== 200")), KEEP, DROP
      )
    • Hasil: Dua log pertama dipertahankan. Log ketiga dibuang.

      hasil: ok
      status: 400
      hasil: Pass
      status: 200

e_switch

Fungsi e_switch menjalankan operasi jika kondisi tertentu terpenuhi.

  • Sintaksis

    e_switch(Kondisi 1, Operasi 1, ..., default=None)
    Catatan

    Anda harus menentukan parameter Kondisi dan Operasi dalam pasangan.

  • Parameter

    Parameter

    Tipe

    Diperlukan

    Deskripsi

    Kondisi

    Sembarang

    Ya

    Ekspresi atau kombinasi ekspresi. Jika hasilnya bukan nilai Boolean, sistem akan mengevaluasi apakah kondisi benar atau salah.

    Operasi

    Fungsi pemrosesan global

    Ya

    Fungsi pemrosesan global atau kombinasi fungsi pemrosesan global.

    default

    Fungsi pemrosesan global

    Tidak

    Fungsi pemrosesan global atau kombinasi fungsi pemrosesan global. Jika tidak ada kondisi yang terpenuhi, operasi yang ditentukan oleh parameter default dilakukan.

  • Respons

    Log tempat operasi yang ditentukan dilakukan dikembalikan.

  • Contoh

    • Jika nilai bidang konten adalah 123, atur bidang __topic__ menjadi Angka. Jika nilai bidang data adalah 123, atur bidang __topic__ menjadi PRO.

      • Log mentah

        __topic__:  
        umur: 18
        konten: 123
        nama: maki
        data: 342
        __topic__:  
        umur: 18
        konten: 23
        nama: maki
        data: 123
      • Aturan transformasi

        e_switch(
            e_search("konten==123"),
            e_set("__topic__", "Angka", mode="overwrite"),
            e_search("data==123"),
            e_set("__topic__", "PRO", mode="overwrite"),
        )
      • Hasil

        __topic__: Angka
        umur: 18
        konten: 123
        nama: maki
        data: 342
        __topic__: PRO
        umur: 18
        konten: 23
        nama: maki
        data: 123
    • Anda dapat menggabungkan fungsi e_switch dan e_output untuk mengirim log yang memenuhi kondisi tertentu ke Logstore yang berbeda. Jika Anda menentukan default=e_drop(), log yang tidak memenuhi kondisi tertentu akan dibuang dan tidak dikirim. Jika Anda tidak mengonfigurasi parameter default, log yang tidak memenuhi kondisi tertentu akan dikirim ke Logstore pertama yang Anda tentukan.

      • Log mentah

        __topic__: sas-log-dns
        tes: aliyun
        
        __topic__: aegis-log-network
        tes:ecs
        
        __topic__: local-dns
        tes:sls
        
        __topic__: aegis-log-login
        tes: sls
      • Aturan transformasi

        e_switch(e_match("__topic__","sas-log-dns"),e_output(name="target1"),
        e_match("__topic__","sas-log-process"),e_output(name="target2"),
        e_match("__topic__","local-dns"),e_output(name="target3"),
        e_match("__topic__","aegis-log-network"),e_output(name="target4"),
        e_match("__topic__","aegis-log-login"),e_output(name="target5"),
        default=e_drop())
  • Referensi

    Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Distribusikan Data ke Beberapa Logstore Tujuan.