Bahasa domain-spesifik (DSL) berbasis Python untuk Simple Log Service menyediakan lebih dari 200 fungsi bawaan yang dapat digunakan untuk mentransformasi data secara efisien. Topik ini menjelaskan mode bahasa, kategori fungsi, dan implementasi DSL untuk Simple Log Service.
Mode bahasa
DSL untuk Simple Log Service kompatibel dengan Python. Dalam mode standar, DSL dianggap sebagai subset dari Python. Selain struktur data dasar dan ekspresi, aturan sintaks lainnya didefinisikan menggunakan fungsi. Untuk menggunakan fungsi yang ditentukan pengguna (UDF), ajukan Tiket.
Kategori | Sintaks Python | Mode standar |
Struktur data | Angka, string, dan Boolean | Didukung. String yang dimulai atau diakhiri dengan |
Tuple, list, set, dan dictionary | Didukung. Struktur | |
Objek | Hanya struktur data tambahan bawaan seperti objek tabel dan datetime yang didukung. | |
Sintaks dasar | Operator seperti tanda plus (+), tanda minus (-), tanda perkalian (×), dan operator pembagian (/) | Hanya operator perbandingan seperti |
Komentar | Didukung. | |
Penugasan variabel | Tidak didukung. Anda harus memanggil fungsi untuk memberikan nilai ke variabel. | |
Evaluasi kondisi | Didukung. Fungsi: e_if, e_if_else, dan e_switch. | |
Perulangan | Didukung secara tidak langsung. Anda harus menggunakan fungsi bawaan bersarang untuk mengimplementasikan perulangan. Contoh fungsi berikut menunjukkan cara melintasi elemen-elemen dalam array: | |
Fungsi | Fungsi bawaan standar Python | Tidak didukung. Anda dapat menggunakan lebih dari 200 fungsi bawaan yang disediakan oleh DSL untuk Simple Log Service. |
Pemanggilan fungsi | Didukung. Pemanggilan fungsi yang menggunakan pemecahan parameter tidak didukung. | |
UDF, seperti def atau lambda | Tidak didukung. Anda dapat menggunakan lebih dari 200 fungsi pemrosesan global dan fungsi ekspresi yang disediakan oleh DSL untuk Simple Log Service. Anda juga dapat menggabungkan fungsi-fungsi ini sesuai dengan kebutuhan bisnis Anda. | |
Modul | Impor dan penggunaan pustaka standar Python | Tidak didukung. |
Pembuatan thread dan proses | Tidak didukung. | |
Impor pustaka pihak ketiga | Tidak didukung. | |
Koneksi jaringan eksternal atau panggilan perintah eksternal | Didukung. DSL untuk Simple Log Service menyediakan konektor sumber daya bawaan. |
Kategori fungsi
Dalam mode standar DSL untuk Simple Log Service, semua operasi dilakukan melalui pemanggilan fungsi. DSL menyediakan lebih dari 200 fungsi bawaan yang dikategorikan menjadi fungsi pemrosesan global dan fungsi ekspresi.
Fungsi Pemrosesan Global
Fungsi pemrosesan global digunakan untuk menerima, memproses, dan mengembalikan log. Hanya fungsi pemrosesan global yang dapat digunakan untuk membangun setiap langkah dalam aturan transformasi.
Fungsi Ekspresi
Fungsi ekspresi biasanya digunakan untuk menerima parameter tertentu dan mengembalikan nilai tertentu. Fungsi ekspresi dapat digabungkan dan dilewatkan ke fungsi pemrosesan global sebagai parameter untuk mendefinisikan logika yang lebih fleksibel.
Tabel berikut menjelaskan fungsi pemrosesan global dan fungsi ekspresi.
Kategori | Membangun Langkah | Menerima Log | Mengembalikan Hasil | Memodifikasi Log | Menggabungkan Fungsi |
Fungsi Pemrosesan Global | Didukung. | Log diterima secara otomatis. | Nol hingga beberapa log dikembalikan. | Didukung. Dalam kebanyakan kasus, log dapat dimodifikasi. | Didukung. |
Fungsi Ekspresi | Tidak didukung. | Didukung hanya oleh beberapa fungsi ekspresi. Sebagian besar fungsi ekspresi tidak memproses log secara langsung. | Struktur data spesifik dikembalikan. | Tidak didukung. | Didukung. |
Fungsi pemrosesan global
Fungsi pemrosesan global digunakan untuk menerima, memproses, dan mengembalikan log.
Hanya fungsi pemrosesan global yang dapat ditempatkan di baris pertama setiap langkah.
Sintaks berikut digunakan:
Global Processing Function 1(..Parameters....)
Global Processing Function 2(..Parameters....)
Global Processing Function 3(..Parameters....)
Global Processing Function 4(..Parameters....)Fungsi pemrosesan global dapat dikategorikan lebih lanjut menjadi fungsi kontrol aliran dan fungsi pemrosesan acara. Tabel berikut menjelaskan fungsi-fungsi tersebut.
Kategori | Deskripsi | Contoh |
Fungsi kontrol aliran | Fungsi-fungsi ini digunakan untuk mengelola proses, menerima log, dan memanggil fungsi lain untuk memproses log berdasarkan kondisi tertentu. |
|
Fungsi pemrosesan acara | Fungsi-fungsi ini digunakan untuk mentransformasi log. Nol hingga beberapa log dikembalikan. | Contoh:
|
Logika Transformasi:
Pemrosesan Dasar
Fitur transformasi data membaca data streaming dari Logstore sumber dan mengirimkan setiap log dalam struktur kamus ke fungsi tertentu. Kemudian, fitur ini menjalankan fungsi yang ditentukan dalam aturan transformasi secara berurutan untuk memproses acara dan menulis hasil transformasi ke Logstore tujuan yang ditentukan.
CatatanSemua field dan nilai log dikirim sebagai string. Misalnya, log mentah
{"__time__": "1234567", "__topic__": "", "k1": "test"}diproses oleh fungsie_set("f1", 200). Fungsi ini menambahkan fieldf1yang nilainya diatur ke 200 ke log mentah. Lalu, log mentah diubah menjadi{"__time__": "1234567", "__topic__": "", "k1": "test", "f1": "200"}. Dalam log ini, fieldf1dan nilai 200 adalah string.Fungsi pemrosesan acara yang ditentukan dalam aturan transformasi dipanggil secara berurutan. Setiap fungsi menerima dan memproses log, lalu mengembalikan log yang telah diproses.
Sebagai contoh, fungsi
e_set("type", "test")menambahkan fieldtypeyang nilainya diatur ke test ke log. Fungsi berikutnya menerima dan memproses log yang telah diproses.Evaluasi Kondisi
e_if: Anda dapat memanggil fungsi e_if untuk menambahkan ekspresi kondisional guna memproses log. Jika log tidak memenuhi kondisi yang ditentukan, operasi terkait dilewati. Fungsi e_if mengimplementasikan logika
if.Sebagai contoh, fungsi
e_if(e_match("status", "200"), e_regex("data", "ret: \d+", "result"))memeriksa apakah nilai fieldstatusadalah 200. Jika nilainya 200, fungsi mengekstrak fieldresultdari fielddatamenggunakan ekspresi reguler yang ditentukan. Jika tidak, tidak ada operasi yang dilakukan.e_if_else: Fungsi ini bekerja mirip dengan fungsiif_else.
Penghentian Pemrosesan
Langkah dalam aturan transformasi mungkin tidak mengembalikan log. Ini menunjukkan bahwa log terkait dihapus.
Sebagai contoh, fungsi
e_if(str_islower(v("result")), e_drop())digunakan untuk memeriksa apakah nilai fieldresultdalam log adalah string yang terdiri dari karakter huruf kecil saja. Jika kondisi dievaluasi benar, log dibuang dan langkah-langkah berikutnya tidak dilakukan pada log ini. Sistem secara otomatis memproses log berikutnya.Jika log ditulis ke Logstore tujuan, pemrosesan dihentikan. Misalnya, jika fungsi
e_outputdigunakan untuk menulis log ke Logstore tujuan dan menghapus log, langkah-langkah berikutnya tidak dilakukan pada log ini.CatatanFungsi
e_coutputmenyalin log keluaran dan langkah-langkah berikutnya dilakukan pada log ini.
Pemisahan Log untuk Pemrosesan Paralel
Langkah dalam aturan transformasi mungkin mengembalikan beberapa log. Ini menunjukkan bahwa log terkait dibagi.
Sebagai contoh, fungsi
e_split(data)membagi log menjadi dua log berdasarkan nilai fielddata. Jika nilai fielddatadalam log adalah"abc, xyz", log dibagi menjadi dua log. Dalam satu log, nilai fielddataadalah abc. Dalam log lainnya, nilai field data adalah xyz.Log yang dihasilkan setelah pemisahan diproses dalam langkah-langkah berikutnya.
Fungsi ekspresi
Selain fungsi pemrosesan global, DSL untuk Simple Log Service menyediakan 200 fungsi ekspresi yang digunakan untuk menerima parameter tertentu dan mengembalikan nilai tertentu. Anda dapat memanggil fungsi ekspresi atau kombinasi fungsi ekspresi dalam fungsi pemrosesan global. Sintaks berikut digunakan:
Global Processing Function 1(Expression Function 1(...), ...)
Global Processing Function 2(..., Expression Function 2(...), Expression Function 3(...), ...)Fungsi ekspresi dapat dikategorikan menjadi fungsi pemeriksaan acara, fungsi sumber daya, fungsi kontrol, dan fungsi ekspresi lainnya. Tabel berikut menjelaskan fungsi-fungsi tersebut.
Kategori | Deskripsi | Contoh |
Fungsi Pemeriksaan Acara | Fungsi-fungsi ini digunakan untuk menerima log, mengekstrak informasi tertentu, lalu mengembalikan informasi tanpa memodifikasi log. |
|
Fungsi Sumber Daya | Fungsi-fungsi ini digunakan untuk mengakses sumber daya lokal atau eksternal, menerima parameter tertentu, dan mengembalikan nilai tertentu. Tipe data nilai kembali termasuk kamus dan tabel. | res_oss_file, res_rds_mysql, dan res_log_logstore_pull. |
Fungsi Kontrol | Fungsi-fungsi ini digunakan untuk menerima parameter tertentu dan melakukan operasi logika pada ekspresi atau kontrol berbasis kondisi. Fungsi-fungsi ini juga digunakan untuk memanggil fungsi ekspresi lainnya untuk mengembalikan hasil. |
|
Fungsi Ekspresi Lainnya | Fungsi-fungsi ini digunakan untuk menerima parameter tertentu atau hasil fungsi lainnya dan mengembalikan nilai tertentu. | Fungsi string, fungsi tanggal dan waktu, dan fungsi konversi. |