Topik ini menjelaskan sintaks, parameter, dan contoh fungsi pemrosesan event.
Fungsi
|
Category |
Function |
Description |
|
Event operations |
Membuang log berdasarkan suatu kondisi. Fungsi ini dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Replicate and distribute data. |
|
|
Menyimpan log berdasarkan suatu kondisi. Kedua fungsi e_keep dan e_drop membuang log. Fungsi e_keep membuang log jika kondisi tidak terpenuhi. Fungsi e_drop membuang log jika kondisi terpenuhi.
Fungsi ini dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Transform complex JSON data. |
||
|
Event splitting |
Memisahkan satu log menjadi beberapa log berdasarkan nilai field log. Fungsi ini juga mendukung ekstraksi field menggunakan JMESPath sebelum pemisahan. Fungsi ini dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Transform complex JSON data. |
|
|
Event output |
Mengeluarkan log ke Logstore tertentu. Anda dapat mengonfigurasi topik, sumber, tag, dan informasi hash shard untuk log output.
Fungsi ini dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Aggregate log data from different Logstores into one Logstore. |
|
|
Transforming events into time series data |
Mengonversi log ke format penyimpanan deret waktu (Metricstore). Catatan
Setelah Anda mengonversi data ke format deret waktu, pilih Metricstore sebagai database tujuan untuk menyimpan hasilnya. Berikut adalah contoh data deret waktu khas:
Untuk informasi selengkapnya, lihat Time series data (Metric). Fungsi ini dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Convert log fields in a Logstore to metric measures in a Metricstore. |
e_drop
Membuang log berdasarkan suatu kondisi.
-
Sintaks
e_drop(condition=True)Identifier tetap DROP didukung dan setara dengan e_drop().
-
Parameter
Parameter Name
Type
Required
Description
condition
Bool
No
Nilai default adalah True. Hasil fungsi kondisional biasanya diteruskan ke parameter ini.
-
Respons
Jika kondisi terpenuhi, fungsi membuang log dan mengembalikan None. Jika tidak, fungsi mengembalikan log asli.
-
Contoh
-
Contoh 1: Buang log jika nilai field __programe__ adalah access. Jika tidak, simpan log tersebut.
-
Raw Logs
__programe__: access age: 18 content: 123 name: maki __programe__: error age: 18 content: 123 name: maki -
Aturan transformasi
e_if(e_search("__programe__==access"), DROP) -
Hasil
Log dengan field __programe__ bernilai access dibuang. Log dengan field __programe__ bernilai error disimpan.
__programe__: error age: 18 content: 123 name: maki
-
-
Contoh 2: Kondisi bernilai True. Log dibuang.
-
Raw log
k1: v1 k2: v2 k3: k1 -
Aturan transformasi
e_drop(e_search("k1==v1")) -
Hasil
Log dibuang karena kondisi k1==v1 bernilai True.
-
-
Contoh 3: Kondisi bernilai False. Log disimpan.
-
Raw log
k1: v1 k2: v2 k3: k1 -
Aturan transformasi
e_drop(e_search("not k1==v1")) -
Hasil
k1: v1 k2: v2 k3: k1
-
-
Contoh 4: Tidak ada kondisi yang ditetapkan. Nilai default True digunakan, dan log dibuang.
-
Raw log
k1: v1 k2: v2 k3: k1 -
Aturan transformasi
e_drop() -
Hasil
Log dibuang.
-
-
-
Referensi
Fungsi ini dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Replicate and distribute data.
e_keep
Menyimpan log berdasarkan suatu kondisi.
-
Sintaks
e_keep(condition=True)Identifier tetap KEEP didukung dan setara dengan e_keep().
-
Parameter
Parameter Name
Type
Required
Description
condition
Bool
No
Nilai default adalah True. Hasil fungsi kondisional biasanya diteruskan ke parameter ini.
-
Respons
Jika kondisi terpenuhi, fungsi mengembalikan log asli. Jika tidak, fungsi membuang log.
-
Contoh
-
Contoh 1: Simpan log jika nilai field
__programe__adalah access. Jika tidak, buang log tersebut.-
Raw Logs
__programe__: access age: 18 content: 123 name: maki __programe__: error age: 18 content: 123 name: maki -
Aturan transformasi
e_keep(e_search("__programe__==access")) # Setara dengan e_if(e_search("not __programe__==access"), DROP) # Setara dengan e_if_else(e_search("__programe__==access"), KEEP, DROP) -
Hasil
Log dengan field __programe__ bernilai access disimpan.
__programe__: access age: 18 content: 123 name: maki
-
-
Contoh 2: Kondisi bernilai True. Log disimpan.
-
Raw log
k1: v1 k2: v2 k3: k1 -
Aturan transformasi
e_keep(e_search("k1==v1")) -
Hasil
k1: v1 k2: v2 k3: k1
-
-
Contoh 3: Kondisi bernilai False. Log dibuang.
-
Raw log
k1: v1 k2: v2 k3: k1 -
Aturan transformasi
e_keep(e_search("not k1==v1")) -
Hasil
Log dibuang.
-
-
Contoh 4: Kondisi bernilai False.
-
Raw log
k1: v1 k2: v2 k3: k1 -
Aturan transformasi
e_keep(False) -
Hasil
Log dibuang.
-
-
-
Referensi
Fungsi ini dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Transform complex JSON data.
e_split
Memisahkan satu log menjadi beberapa log berdasarkan nilai field log. Fungsi ini juga mendukung ekstraksi field menggunakan JMESPath sebelum pemisahan.
-
Sintaks
e_split(field_name, sep=',', quote='"', lstrip=True, jmes=None, output=None)Aturan pemisahan:
-
Jika Anda menentukan parameter jmes, nilai field log dikonversi ke daftar JSON, dan JMES digunakan untuk mengekstrak nilai untuk langkah berikutnya. Jika Anda tidak menentukan parameter jmes, nilai field langsung digunakan pada langkah berikutnya.
-
Jika nilai dari langkah sebelumnya berupa daftar atau string dalam format daftar JSON, log dipisahkan berdasarkan daftar tersebut. Jika tidak, nilai diurai sebagai file CSV menggunakan parameter sep, quote, dan lstrip, lalu log dipisahkan berdasarkan nilai yang diurai.
-
-
Parameter
Parameter Name
Type
Required
Description
field_name
String
Yes
Nama field yang akan dipisahkan. Untuk informasi tentang cara menetapkan nama field khusus, lihat Event types.
sep
String
No
Pemisah yang digunakan untuk memisahkan beberapa nilai.
quote
String
No
Karakter kutip yang digunakan untuk membungkus nilai.
lstrip
String
No
Menentukan apakah spasi di sebelah kiri nilai dihapus. Nilai default adalah True.
jmes
String
No
Mengonversi nilai field menjadi objek JSON, menggunakan JMES untuk mengekstrak nilai tertentu, lalu melakukan operasi pemisahan.
output
String
No
Menetapkan nama field baru. Secara default, nama field lama ditimpa.
-
Respons
Mengembalikan daftar log. Nilai field dalam log yang dikembalikan adalah nilai dari daftar sumber.
-
Contoh
-
Raw Logs
__topic__: age: 18 content: 123 name: maki __topic__: age: 18 content: 123 name: maki -
Aturan transformasi
e_set("__topic__", "V_SENT,V_RECV,A_SENT,A_RECV") e_split("__topic__") -
Hasil
__topic__: A_SENT age: 18 content: 123 name: maki __topic__: V_RECV age: 18 content: 123 name: maki ...
-
-
Referensi
Fungsi ini dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Transform complex JSON data.
Output Logstore
Mengeluarkan log ke Logstore tertentu. Anda dapat mengonfigurasi topik, sumber, dan tag untuk log output.
-
Sintaks
e_output(name=None, project=None, logstore=None, topic=None, source=None, tags=None, hash_key_field=None, hash_key=None) e_coutput(name=None, project=None, logstore=None, topic=None, source=None, tags=None, hash_key_field=None, hash_key=None)Dalam mode pratinjau, log tidak dikirim ke Logstore tujuan. Sebaliknya, log dikirim ke Logstore internal-etl-log. Logstore internal-etl-log adalah Logstore khusus yang secara otomatis dibuat di proyek saat ini ketika Anda menjalankan pratinjau tugas transformasi data untuk pertama kalinya. Anda tidak dapat mengubah konfigurasi atau menulis data lain ke Logstore ini. Logstore ini gratis.
-
Parameter
CatatanJika Anda menentukan parameter name, project, dan Logstore dalam fungsi e_output atau e_coutput serta mengonfigurasi proyek dan database tujuan di panel Create Data Transformation Job, pengaturan dalam fungsi e_output atau e_coutput akan diutamakan. Berikut penjelasannya:
-
Jika Anda hanya mengonfigurasi parameter name dalam fungsi e_output atau e_coutput, hasil transformasi didistribusikan dan disimpan di Logstore tujuan yang sesuai dengan nama yang ditentukan.
-
Jika Anda hanya mengonfigurasi parameter project dan Logstore dalam fungsi e_output, hasil transformasi didistribusikan dan disimpan di Logstore tujuan yang Anda tentukan dalam fungsi e_output.
Jika Anda menggunakan Pasangan Kunci Akses untuk otorisasi, Pasangan Kunci Akses akun login saat ini digunakan selama proses transformasi.
-
Jika Anda mengonfigurasi parameter name, project, dan Logstore dalam fungsi e_output, hasil transformasi didistribusikan dan disimpan di Logstore tujuan yang Anda tentukan dalam fungsi e_output.
Jika Anda menggunakan Pasangan Kunci Akses untuk otorisasi, Pasangan Kunci Akses yang ditentukan untuk nama tujuan digunakan selama proses transformasi.
Parameter Name
Type
Required
Description
name
String
No
Nama tujuan penyimpanan. Nilai default adalah None.
project
String
No
Mengeluarkan log ke proyek yang sudah ada.
Logstore
String
No
Mengeluarkan log ke Logstore yang sudah ada.
topic
String
No
Menetapkan topik baru untuk log.
source
String
No
Menetapkan sumber baru untuk log.
tags
Dict
No
Menetapkan tag baru untuk log. Masukkan tag dalam format dictionary.
CatatanAnda tidak perlu menambahkan awalan
__tag__:pada kata kunci.hash_key_field
String
No
Menentukan nama field dalam log. Tugas transformasi data mengeluarkan log ke shard tertentu dari tujuan penyimpanan berdasarkan nilai hash field ini.
CatatanJika field yang ditentukan tidak ada dalam log, sistem secara otomatis beralih ke mode load balancing dan menulis log secara acak ke shard tujuan penyimpanan.
hash_key
String
No
Menentukan nilai hash. Tugas transformasi data mengeluarkan log ke shard tertentu dari tujuan penyimpanan.
CatatanParameter hash_key_field memiliki prioritas lebih tinggi daripada parameter ini. Jika parameter hash_key_field sudah dikonfigurasi dalam sintaks transformasi, parameter ini tidak berlaku.
-
Menetapkan tujuan penyimpanan default
Saat menggunakan fungsi e_output atau e_coutput, Anda harus mengonfigurasi tujuan penyimpanan default di panel Create Data Transformation Job. Simple Log Service menggunakan tujuan penyimpanan dengan label '1' sebagai default. Misalnya, pada gambar di bawah, data yang cocok dengan aturan transformasi e_output dikirimkan ke Logstore tujuan bernama target_01, target_02, dan target_03. Data lain yang tidak dibuang selama transformasi disimpan di Logstore tujuan default (target_00).

-
Pengaturan parameter lanjutan
Saat menggunakan fungsi e_output atau e_coutput dan proyek atau Logstore tujuan belum ada, Anda dapat membuka panel Create Data Transformation Job. Di bagian Advanced Parameter Settings, tetapkan key ke config.sls_output.failure_strategy dan value ke {"drop_when_not_exists":"true"} untuk melewati log tersebut. Log yang dilewati akan dibuang dan dilaporkan sebagai log tingkat peringatan. Jika Anda tidak mengonfigurasi Advanced Parameter Settings, tugas transformasi data akan menunggu hingga proyek dan Logstore tujuan dibuat sebelum dieksekusi.
PeringatanSaat menggunakan Advanced Parameter Settings, log akan dibuang jika proyek atau Logstore tujuan tidak ada. Gunakan fitur ini dengan hati-hati.

-
Hasil
-
e_output: Mengeluarkan log ke Logstore yang ditentukan. Aturan transformasi berikutnya tidak dijalankan pada log ini.
-
e_coutput: Mengeluarkan log ke Logstore yang ditentukan. Aturan transformasi berikutnya tetap dijalankan pada log ini.
-
-
-
Contoh
-
Contoh 1: Jika nilai field k2 cocok dengan ekspresi reguler, keluarkan log ke target2 dan tetapkan topic ke topic1.
-
Raw log
__topic__: k1: v1 k2: v2 x1: v3 x5: v4 -
Aturan transformasi
Fungsi
e_drop()digunakan di sini untuk membuang data yang difilter oleh fungsie_if(). Jika tidak ditambahkan, data yang difilter akan dikirim ke tujuan penyimpanan default.e_if(e_match("k2", r"\w+"), e_output(name="target2", source="source1", topic="topic1")) e_drop() -
Hasil
__topic__: topic1 k1: v1 k2: v2 x1: v3 x5: v4
-
-
Contoh 2: Hitung hash berdasarkan nilai field db_version dalam log. Keluarkan log ke shard tertentu dari tujuan penyimpanan berdasarkan nilai hash ini.
-
Raw Logs
__topic__: db_name: db-01 db_version:5.6 __topic__: db_name: db-02 db_version:5.7 -
Aturan transformasi
e_output(name="target1", hash_key_field="db_version") -
Hasil
# Anggap tujuan penyimpanan target1 memiliki 2 shard. # Rentang Shard 0 adalah [00000000000000000000000000000000,80000000000000000000000000000000). # Rentang Shard 1 adalah [80000000000000000000000000000000,ffffffffffffffffffffffffffffffff). # Nilai hash untuk db_version 5.6 dan 5.7 masing-masing adalah 0ebe1a34e990772a2bad83ce076e0766 dan f1867131d82f2256b4521fe34aec2405. # Shard 0: __topic__: db_name: db-01 db_version:5.6 # Shard 1: __topic__: db_name: db-02 db_version:5.7
-
-
Contoh 3: Tentukan langsung nilai hash untuk mengeluarkan log ke shard tertentu dari tujuan penyimpanan.
-
Raw Logs
__topic__: db_name: db-01 db_version:5.6 __topic__: db_name: db-02 db_version:5.7 -
Aturan transformasi
e_output(name="target1", hash_key="00000000000000000000000000000000") -
Hasil
# Anggap tujuan penyimpanan memiliki 2 shard. # Rentang Shard 0 adalah [00000000000000000000000000000000,80000000000000000000000000000000). # Rentang Shard 1 adalah [80000000000000000000000000000000,ffffffffffffffffffffffffffffffff). # Shard 0: __topic__: db_name: db-01 db_version:5.6 __topic__: db_name: db-02 db_version:5.7 # Shard 1: None
-
-
-
Referensi
Fungsi ini dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Aggregate log data from different Logstores into one Logstore.
e_to_metric
Mengonversi log ke format penyimpanan deret waktu.
-
Sintaks
e_to_metric(names=None, labels=None, time_field='__time__', time_precision='s', ignore_none_names=True, ignore_none_labels=True) -
Parameter
Parameter Name
Type
Required
Description
names
String, StringList, atau Tuple List
Yes
Nama metrik untuk data deret waktu. Dapat berupa string tunggal, daftar string, atau daftar tuple. Nilainya adalah nama field log yang sesuai.
-
String: Mengonversi field log menjadi nama metrik untuk data deret waktu. Berisi satu string, seperti rt. Catatan data deret waktu yang berisi
__name__:rtdikembalikan. -
StringList: Mengonversi field log menjadi nama metrik untuk data deret waktu. Berisi beberapa string, seperti ["rt", "qps"]. Dua catatan data deret waktu dikembalikan, masing-masing berisi
__name__:rtdan__name__:qps. -
Tuple List: Mengonversi beberapa field log menjadi nama metrik untuk data deret waktu dan mengganti namanya. Berisi beberapa tuple, seperti [("rt","max_rt"),("qps", "total_qps")]. Elemen pertama tuple adalah field log asli, dan yang kedua adalah field nama metrik untuk data deret waktu yang ditransformasi. Dua catatan data deret waktu dikembalikan, masing-masing berisi
__name__:max_rtdan__name__:total_qps.
labels
String, StringList, atau Tuple List
No
Field label untuk data deret waktu. Dapat berupa string tunggal, daftar string, atau daftar tuple. Nilainya adalah nama field log yang sesuai.
CatatanDalam deskripsi berikut, host dan app adalah nama field log, sedangkan hostvalue dan appvalue adalah nilai field log.
-
String: Mengonversi field log menjadi label untuk data deret waktu. Berisi satu string, seperti host. Catatan data deret waktu yang berisi
__label__:host#$#hostvaluedikembalikan. -
StringList: Mengonversi field log menjadi label untuk data deret waktu. Berisi beberapa string, seperti ["host", "app"]. Dua catatan data deret waktu dikembalikan, masing-masing berisi
__label__:host#$#hostvaluedan__label__:app#$#appvalue. -
Tuple List: Mengonversi beberapa field log menjadi label untuk data deret waktu dan mengganti namanya. Berisi beberapa tuple, seperti [("host","hostname"),("app", "appname")]. Elemen pertama tuple adalah field log asli, dan yang kedua adalah field label untuk data deret waktu yang ditransformasi. Dua catatan data deret waktu dikembalikan, masing-masing berisi
__label__:hostname#$#hostvaluedan__label__:appname#$#appvalue.
time_field
String
No
Field waktu untuk data deret waktu. Secara default, field
__time__dalam log digunakan sebagai field waktu untuk data deret waktu.time_precision
Int
No
Unit waktu untuk field timestamp data dalam log mentah dapat berupa detik, milidetik, mikrodetik, atau nanodetik. Nilai default adalah detik. Misalnya,
time_field="ms"menentukan bahwa unit waktu data log mentah adalah milidetik.ignore_none_names
Boolean
No
Menentukan apakah konversi ke data deret waktu diabaikan jika field log tidak ada.
-
True (default): Mengabaikan konversi. Data tidak dikonversi ke data deret waktu.
-
False: Tidak mengabaikan konversi. Kesalahan dilaporkan jika field tidak ada.
ignore_none_labels
Boolean
No
Menentukan apakah konversi ke data deret waktu diabaikan jika field log tidak ada.
-
True (default): Mengabaikan konversi. Data tidak dikonversi ke data deret waktu.
-
False: Tidak mengabaikan konversi. Kesalahan dilaporkan jika field tidak ada.
-
-
Respons
Mengembalikan data deret waktu.
-
Contoh
-
Contoh 1: Konversi log yang berisi field rt ke format data deret waktu.
-
Raw log
__time__: 1614739608 rt: 123 -
Aturan transformasi
e_to_metric(names="rt") -
Hasil
__labels__: __name__:rt __time_nano__:1614739608000000000 __value__:123.0
-
-
Contoh 2: Konversi log yang berisi field rt ke format data deret waktu, dan gunakan field host sebagai label baru.
-
Raw log
__time__: 1614739608 rt: 123 host: myhost -
Aturan transformasi
e_to_metric(names="rt", labels="host") -
Hasil
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608000000000 __value__:123.0
-
-
Contoh 3: Konversi log yang berisi field rt dan qps ke format data deret waktu, dan gunakan field host sebagai label baru.
-
Raw log
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Aturan transformasi
e_to_metric(names=["rt","qps"], labels="host") -
Hasil
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608000000000 __value__:123.0 __labels__:host#$#myhost __name__:qps __time_nano__:1614739608000000000 __value__:10.0
-
-
Contoh 4: Konversi log yang berisi field rt dan qps ke format data deret waktu, ganti nama field menjadi max_rt dan total_qps, dan gunakan field host sebagai label baru.
-
Raw log
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Aturan transformasi
e_to_metric(names=[("rt","max_rt"),("qps","total_qps")], labels="host") -
Hasil
__labels__:host#$#myhost __name__:max_rt __time_nano__:1614739608000000000 __value__:123.0 __labels__:host#$#myhost __name__:total_qps __time_nano__:1614739608000000000 __value__:10.0
-
-
Contoh 5: Konversi log yang berisi field rt dan qps ke format data deret waktu, ganti nama field menjadi max_rt dan total_qps, dan ganti nama field host menjadi hostname untuk digunakan sebagai label baru.
-
Raw log
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Aturan transformasi
e_to_metric(names=[("rt","max_rt"),("qps","total_qps")], labels=[("host","hostname")]) -
Hasil
__labels__:hostname#$#myhost __name__:max_rt __time_nano__:1614739608000000000 __value__:123.0 __labels__:hostname#$#myhost __name__:total_qps __time_nano__:1614739608000000000 __value__:10.0
-
-
Contoh 6: Konversi log yang berisi field remote_user1 dan request_length ke format data deret waktu, ganti nama field menjadi remote_user2 dan request_length1, dan gunakan field status1 sebagai label baru.
-
Raw log
__time__:1652943594 remote_user:89 request_length:4264 request_method:GET status:200 -
Aturan transformasi
# Field remote_user1 dan status1 tidak ada, sehingga diabaikan dan tidak dikonversi. e_to_metric( names=[("remote_user1", "remote_user2"), ("request_length", "request_length1")], labels="status1", ignore_none_names=True, ignore_none_labels=True, ) -
Hasil
__labels__: __name__:request_length1 __time_nano__:1652943594000000000 __value__:4264.0
-
-
Contoh 7: Konversi log yang berisi field remote_user ke format data deret waktu, gunakan field status sebagai label baru, dan tentukan unit waktu data log sumber sebagai milidetik.
-
Raw log
__time__:1652943594 remote_user:89 request_length:4264 request_method:GET status:200 -
Aturan transformasi
e_to_metric( names="remote_user", labels="status", time_precision="ms", ignore_none_names=True, ignore_none_labels=True, ) -
Hasil
__labels__:status#$#200 __name__:remote_user __time_nano__:1652943594000000 __value__:89.0
-
-
Contoh 8: Konversi log yang berisi field remote_user ke format data deret waktu, gunakan field status sebagai label baru, gunakan field time sebagai field waktu untuk data deret waktu, dan tentukan unit waktu data log sumber sebagai nanodetik.
-
Raw log
time:1652943594 remote_user:89 request_length:4264 request_method:GET status:200 -
Aturan transformasi
e_to_metric( names="remote_user", labels="status", time_field="time", time_precision="ns", ignore_none_names=True, ignore_none_labels=True, ) -
Hasil
__labels__:status#$#200 __name__:remote_user __time_nano__:1652943594 __value__:89.0
-
-
-
Referensi
Fungsi ini dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Convert log fields in a Logstore to metric measures in a Metricstore.