Fungsi pemrosesan event memungkinkan Anda membuang, menyimpan, memisahkan, dan mengeluarkan log selama transformasi data. Topik ini mencakup sintaks, parameter, dan contoh untuk setiap fungsi.
Fungsi
|
Kategori |
Fungsi |
Deskripsi |
|
Operasi event |
Membuang log berdasarkan suatu kondisi. Dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Replikasi dan distribusi data. |
|
|
Menyimpan log berdasarkan suatu kondisi. Baik e_keep maupun e_drop membuang log. e_keep membuang log ketika kondisi tidak terpenuhi, sedangkan e_drop membuang log ketika kondisi terpenuhi.
Dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Transformasi data JSON kompleks. |
||
|
Pemisahan event |
Memisahkan satu log menjadi beberapa log berdasarkan nilai field. Juga mendukung ekstraksi field dengan JMESPath sebelum pemisahan. Dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Transformasi data JSON kompleks. |
|
|
Output event |
Mengeluarkan log ke Logstore tertentu. Anda dapat mengonfigurasi topik, sumber, tag, dan hash shard untuk log output.
Dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Agregasi data log dari berbagai Logstore ke dalam satu Logstore. |
|
|
Mengubah event menjadi data deret waktu |
Mengonversi log ke format deret waktu (Metricstore). Catatan
Setelah memproses data ke format deret waktu, pilih Metricstore sebagai tujuan saat menyimpan hasil transformasi. Berikut adalah contoh data deret waktu khas:
Untuk informasi selengkapnya, lihat Data deret waktu (Metric). Dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Konversi field log di Logstore menjadi ukuran metrik di Metricstore. |
e_drop
Membuang log berdasarkan suatu kondisi.
-
Sintaks
e_drop(condition=True)Identifier tetap DROP didukung, yang setara dengan e_drop().
-
Parameter
Nama Parameter
Tipe
Wajib
Deskripsi
condition
Bool
Tidak
Default: True. Hasil fungsi kondisional biasanya diteruskan ke parameter ini.
-
Respons
Membuang log dan mengembalikan None jika kondisi terpenuhi. Mengembalikan log asli jika tidak.
-
Contoh
-
Contoh 1: Buang log jika nilai field __programe__ adalah access. Jika tidak, simpan log.
-
Log Mentah
__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.
-
Log mentah
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.
-
Log mentah
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.
-
Log mentah
k1: v1 k2: v2 k3: k1 -
Aturan transformasi
e_drop() -
Hasil
Log dibuang.
-
-
-
Referensi
Dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Replikasi dan distribusi data.
e_keep
Menyimpan log berdasarkan suatu kondisi.
-
Sintaks
e_keep(condition=True)Identifier tetap KEEP didukung, yang setara dengan e_keep().
-
Parameter
Nama Parameter
Type
Wajib
Deskripsi
condition
Bool
Tidak
Default: True. Hasil fungsi kondisional biasanya diteruskan ke parameter ini.
-
Respons
Mengembalikan log asli jika kondisi terpenuhi. Membuang log jika kondisi tidak terpenuhi.
-
Contoh
-
Contoh 1: Simpan log jika nilai field
__programe__adalah access. Jika tidak, buang log.-
Log Mentah
__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.
-
Log mentah
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.
-
Log mentah
k1: v1 k2: v2 k3: k1 -
Aturan transformasi
e_keep(e_search("not k1==v1")) -
Hasil
Log dibuang.
-
-
Contoh 4: Kondisi bernilai False. Log dibuang.
-
Log mentah
k1: v1 k2: v2 k3: k1 -
Aturan transformasi
e_keep(False) -
Hasil
Log dibuang.
-
-
-
Referensi
Dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Transformasi data JSON kompleks.
e_split
Memisahkan satu log menjadi beberapa log berdasarkan nilai field. Juga mendukung ekstraksi field dengan 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 menjadi daftar JSON, dan JMESPath digunakan untuk mengekstraksi 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 tersebut diurai sebagai file CSV menggunakan parameter sep, quote, dan lstrip. Log kemudian dipisahkan berdasarkan nilai yang telah diurai.
-
-
Parameter
Nama Parameter
Tipe
Wajib
Deskripsi
field_name
String
Ya
Nama field yang akan dipisahkan. Untuk informasi tentang cara menetapkan nama field khusus, lihat Jenis event.
sep
String
Tidak
Pemisah yang digunakan untuk memisahkan beberapa nilai.
quote
String
Tidak
Karakter tanda kutip yang digunakan untuk membungkus nilai.
lstrip
String
Tidak
Apakah spasi awal dari setiap nilai harus dihapus. Default: True.
jmes
String
Tidak
Mengonversi nilai field menjadi objek JSON, mengekstraksi nilai menggunakan ekspresi JMES, lalu memisahkan hasilnya.
output
String
Tidak
Nama field untuk hasil pemisahan. Secara default, nama field asli akan ditimpa.
-
Respons
Mengembalikan daftar log dengan nilai field yang diganti oleh nilai hasil pemisahan dari daftar sumber.
-
Contoh
-
Log Mentah
__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
Dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Transformasi data JSON kompleks.
Penyimpanan Log Output
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, yaitu Logstore khusus yang secara otomatis dibuat di proyek saat ini saat Anda pertama kali melakukan pratinjau pekerjaan transformasi data. Anda tidak dapat mengubah konfigurasi atau menulis data lain ke Logstore ini. Logstore ini gratis.
-
Parameter
CatatanJika Anda mengonfigurasi parameter name, project, dan logstore dalam fungsi e_output atau e_coutput serta juga mengonfigurasi Proyek tujuan dan Logstore tujuan di panel Create Data Transformation Job, parameter fungsi akan diutamakan. Rinciannya sebagai berikut:
-
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.
Nama Parameter
Tipe
Wajib
Deskripsi
name
String
Tidak
Nama tujuan penyimpanan. Default: None.
project
String
Tidak
Proyek tujuan. Harus sudah ada.
Logstore
String
Tidak
Logstore tujuan. Harus sudah ada.
topic
String
Tidak
Menetapkan topik baru untuk log.
source
String
Tidak
Menetapkan sumber baru untuk log.
tags
Dict
Tidak
Menetapkan tag baru untuk log. Masukkan tag dalam format dictionary.
CatatanAnda tidak perlu menambahkan awalan
__tag__:pada kata kunci.hash_key_field
String
Tidak
Nama field dalam log. Pekerjaan transformasi mengarahkan log ke shard tertentu berdasarkan nilai hash field ini.
CatatanJika field yang ditentukan tidak ada dalam log, sistem beralih ke mode load balancing dan menulis log secara acak ke shard.
hash_key
String
Tidak
Nilai hash. Pekerjaan transformasi mengarahkan log ke shard tertentu berdasarkan nilai ini.
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.
-
Tetapkan 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 berlabel 1 sebagai default. Misalnya, pekerjaan transformasi data mengirim data yang memenuhi kriteria fungsi e_output ke Logstore tujuan masing-masing target_01, target_02, dan target_03. Pekerjaan tersebut mengirim semua data lain yang tidak dibuang selama transformasi ke Logstore tujuan dari tujuan penyimpanan default (target0). Di area Tujuan Penyimpanan, konfigurasikan dua tujuan penyimpanan. Tujuan Penyimpanan 1: Tetapkan Nama Target ke
target0, Wilayah Target ke China (Hangzhou), Proyek Target keProject0, Logstore Tujuan keLogstore0, dan Metode Otorisasi ke peran default. Tujuan Penyimpanan 2: Tetapkan Nama Target ketarget1, Wilayah Target ke China (Hangzhou), Proyek Target keProject1, Logstore Tujuan keLogstore1, dan Metode Otorisasi ke peran default. -
Pengaturan parameter lanjutan
Saat menggunakan fungsi e_output atau e_coutput dan proyek tujuan atau Logstore belum ada, buka 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 melewatkan log. Log yang dilewati akan dibuang dan dilaporkan sebagai log tingkat peringatan. Jika Anda tidak mengonfigurasi Advanced Parameter Settings, pekerjaan 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 belum 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.
-
Log mentah
__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 Anda tidak menambahkan fungsi ini, data yang difilter akan dikirimkan 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.
-
Log Mentah
__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
# Asumsikan tujuan penyimpanan target1 memiliki dua shard. # Rentang shard 0 adalah [00000000000000000000000000000000,80000000000000000000000000000000). # Rentang shard 1 adalah [80000000000000000000000000000000,ffffffffffffffffffffffffffffffff). # Nilai hash untuk nilai 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.
-
Log Mentah
__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
# Asumsikan tujuan penyimpanan memiliki dua 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
Dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Agregasi data log dari berbagai Logstore ke dalam satu Logstore.
e_to_metric
Mengonversi log ke format deret waktu (Metricstore).
-
Sintaks
e_to_metric(names=None, labels=None, time_field='__time__', time_precision='s', ignore_none_names=True, ignore_none_labels=True) -
Parameter
Nama Parameter
Tipe
Wajib
Deskripsi
names
String, StringList, atau Tuple List
Ya
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
Tidak
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
Tidak
Field waktu untuk data deret waktu. Secara default, field
__time__dalam log digunakan.time_precision
Int
Tidak
Unit waktu field timestamp dalam log mentah. Nilai yang valid: seconds, milliseconds, microseconds, dan nanoseconds. Default: seconds. Misalnya,
time_field="ms"menentukan milidetik sebagai unit waktu.ignore_none_names
Boolean
Tidak
Apakah akan melewati konversi ketika field log yang ditentukan tidak ada.
-
True (default): Melewati konversi. Data tidak dikonversi menjadi data deret waktu.
-
False: Melaporkan error jika field tidak ada.
ignore_none_labels
Boolean
Tidak
Apakah akan melewati konversi label ketika field log yang ditentukan tidak ada.
-
True (default): Melewati konversi. Data tidak dikonversi menjadi data deret waktu.
-
False: Melaporkan error jika field tidak ada.
-
-
Respons
Mengembalikan data deret waktu.
-
Contoh
-
Contoh 1: Konversi log yang berisi field rt ke format data deret waktu.
-
Log mentah
__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.
-
Log mentah
__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.
-
Log mentah
__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.
-
Log mentah
__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.
-
Log mentah
__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.
-
Log mentah
__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 satuan waktu data log sumber sebagai milidetik.
-
Log mentah
__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 satuan waktu data log sumber sebagai nanodetik.
-
Log mentah
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
Dapat digunakan bersama fungsi lain. Untuk informasi selengkapnya, lihat Konversi field log di Logstore menjadi ukuran metrik di Metricstore.