Simple Log Service (SLS) menggunakan DSL berbasis Python dan menyediakan lebih dari 200 fungsi bawaan untuk menyederhanakan tugas transformasi data. Topik ini menjelaskan mode bahasa, kategori fungsi, dan prinsip eksekusi DSL.
Mode bahasa
SLS DSL kompatibel dengan Python. Dalam mode standar, SLS DSL merupakan subset dari Python. Selain struktur data dasar dan ekspresi, semua aturan sintaks lainnya diimplementasikan melalui fungsi.
Kategori | Sintaks Python | Mode standar |
Data structure | Number, string, dan Boolean | Didukung. String yang diawali atau diakhiri dengan |
Tuple, list, set, dan dictionary | Didukung. Struktur | |
Object | Hanya struktur data ekstensi bawaan seperti objek table dan datetime yang didukung. | |
Basic syntax | Operator seperti tanda plus (+), tanda minus (-), tanda perkalian (×), dan operator pembagian (/) | Hanya operator perbandingan, seperti |
Comments | Didukung. | |
Variable assignment | Tidak didukung. Anda harus memanggil fungsi untuk meneruskan nilai ke variabel. | |
Prerequisites | Didukung. Fungsi: e_if, e_if_else, dan e_switch. | |
Loops | Didukung secara tidak langsung. Anda harus menggunakan fungsi bawaan bersarang untuk mengimplementasikan loop. Contoh fungsi berikut menunjukkan cara melakukan traversal elemen dalam array: | |
Function | Standard built-in functions of Python | Tidak didukung. Sebagai gantinya, Anda dapat menggunakan lebih dari 200 fungsi bawaan yang disediakan oleh SLS DSL. |
Function calls | Didukung. Pemanggilan fungsi yang menggunakan parameter unpacking tidak didukung. | |
User-defined functions seperti def atau lambda | Tidak didukung. SLS DSL menyediakan lebih dari 200 fungsi pemrosesan global dan fungsi ekspresi. Anda dapat mengombinasikan fungsi-fungsi ini sesuai kebutuhan. | |
Module | Import dan penggunaan pustaka standar Python | Tidak didukung. |
Creation of threads and processes | Tidak didukung. | |
Import pustaka pihak ketiga | Tidak didukung. | |
External network connection atau external command call | Didukung. SLS DSL menyediakan konektor resource bawaan. |
Kategori fungsi
Dalam mode standar, SLS DSL melakukan semua operasi dengan memanggil 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 menyusun setiap langkah dalam aturan transformasi.
Fungsi ekspresi
Fungsi ekspresi umumnya digunakan untuk menerima parameter tertentu dan mengembalikan nilai tertentu. Fungsi ekspresi dapat dikombinasikan dan diteruskan ke fungsi pemrosesan global sebagai parameter untuk mendefinisikan logika yang lebih fleksibel.
Tabel berikut membandingkan kemampuan kedua jenis fungsi tersebut.
Jenis fungsi | Langkah keseluruhan | Menerima | Kembali | Memodifikasi log | Mengombinasikan fungsi |
Global processing functions | Support | Log diterima secara otomatis | Nol hingga beberapa log | Didukung dalam sebagian besar kasus | Didukung |
Expression functions | Not supported | Hanya didukung oleh beberapa fungsi ekspresi. Sebagian besar fungsi ekspresi tidak memproses log secara langsung. | Struktur data tertentu | Not supported | Didukung |
Fungsi pemrosesan global
Fungsi untuk menerima dan mengembalikan log.
Hanya fungsi pemrosesan global yang dapat ditempatkan di baris pertama setiap langkah.
Aturan transformasi dalam SLS DSL menggunakan sintaks berikut:
Global Processing Function 1(..Parameters....)
Global Processing Function 2(..Parameters....)
Global Processing Function 3(..Parameters....)
Global Processing Function 4(..Parameters....)Fungsi pemrosesan global terbagi menjadi dua kategori:
Kategori | Deskripsi | Contoh |
Flow control functions | Fungsi ini mengelola alur proses, menerima log, dan secara kondisional memanggil fungsi lain untuk memproses log. |
|
Event processing functions | Fungsi ini mentransformasi log dan mengembalikan nol hingga beberapa log. | Contoh:
|
Logika transformasi:
Pemrosesan dasar
Fitur transformasi data membaca data streaming dari Logstore sumber dan mengirimkan setiap log sebagai dictionary ke aturan transformasi. Sistem kemudian menjalankan fungsi yang ditentukan dalam aturan secara berurutan untuk memproses log dan menulis hasilnya ke Logstore tujuan.
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 fieldf1dengan nilai 200. Setelah diproses, log menjadi{"__time__": "1234567", "__topic__": "", "k1": "test", "f1": "200"}. Dalam log ini, baik fieldf1maupun nilai 200 berupa string.Fungsi pemrosesan event yang ditentukan dalam aturan transformasi dipanggil secara berurutan. Setiap fungsi menerima satu log, memprosesnya, lalu mengembalikan log yang telah diproses.
Misalnya, fungsi
e_set("type", "test")menambahkan fieldtypedengan nilai test ke log. Fungsi berikutnya menerima dan memproses log yang telah dimodifikasi tersebut.Evaluasi kondisi
e_if: Fungsi e_if memungkinkan Anda menambahkan ekspresi kondisional untuk memproses log. Jika log tidak memenuhi kondisi yang ditentukan, operasi terkait dilewati. Fungsi e_if mengimplementasikan logika
if.Misalnya, fungsi
e_if(e_match("status", "200"), e_regex("data", "ret: \d+", "result"))memeriksa apakah nilai fieldstatusadalah 200. Jika benar, fungsi mengekstraksi fieldresultdari fielddatamenggunakan ekspresi reguler yang ditentukan. Jika tidak, tidak ada operasi yang dilakukan.e_if_else: Fungsi ini bekerja mirip dengan operasiif_else.
Penghentian pemrosesan
Sebuah langkah dalam aturan transformasi mungkin tidak mengembalikan log apa pun, yang menunjukkan bahwa log tersebut telah dihapus.
Misalnya, fungsi
e_if(str_islower(v("result")), e_drop())memeriksa apakah nilai fieldresultberupa string huruf kecil. Jika benar, log dibuang dan langkah-langkah selanjutnya tidak dilakukan pada log ini. Sistem secara otomatis memproses log berikutnya.Menulis log ke Logstore tujuan akan menghentikan pemrosesan. Misalnya, jika fungsi
e_outputmenulis log ke Logstore tujuan dan menghapusnya, langkah-langkah selanjutnya tidak dilakukan pada log ini.CatatanFungsi
e_coutputmenyalin log output dan melanjutkan pemrosesan langkah-langkah selanjutnya.
Pemisahan log untuk pemrosesan paralel
Sebuah langkah dalam aturan transformasi mungkin mengembalikan beberapa log, yang menunjukkan bahwa log tersebut telah dipisah.
Misalnya, fungsi
e_split(data)memisahkan satu log menjadi dua log berdasarkan nilai fielddata. Jika nilai fielddataadalah"abc, xyz", log tersebut dipisah menjadi dua log. Pada satu log, nilai fielddataadalah abc. Pada log lainnya, nilainya adalah xyz.Log yang dihasilkan setelah pemisahan diproses dalam langkah-langkah selanjutnya.
Untuk informasi selengkapnya, lihat Global processing functions.
Fungsi ekspresi
Selain fungsi pemrosesan global, SLS DSL menyediakan 200 fungsi ekspresi yang menerima parameter tertentu dan mengembalikan nilai tertentu. Anda dapat memanggil fungsi ekspresi atau kombinasi fungsi ekspresi di dalam fungsi pemrosesan global. Sintaksnya sebagai berikut:
Global Processing Function 1(Expression Function 1(...), ...)
Global Processing Function 2(..., Expression Function 2(...), Expression Function 3(...), ...)Fungsi ekspresi terbagi menjadi empat kategori:
Kategori | Deskripsi | Contoh |
Event check functions | Fungsi ini menerima log, mengekstraksi atau mengambil informasi tertentu, dan mengembalikan informasi tersebut tanpa memodifikasi log. | Fungsi |
Resource functions | Fungsi ini menghubungkan ke resource on-premises atau eksternal, menggunakan pengaturan parameter tertentu, dan mengembalikan data seperti dictionary atau tabel. | Fungsi resource OSS, RDS, dan Logstore. |
Control functions | Fungsi ini melakukan operasi logika pada ekspresi. Fungsi ini menggunakan parameter tertentu, menerapkan kontrol kondisional, dan memanggil fungsi ekspresi lain untuk mengembalikan hasil. |
|
Other expression functions | Fungsi ini menerima nilai tetap atau hasil pemanggilan fungsi lain dan mengembalikan nilai tertentu. | Fungsi string, tanggal dan waktu, serta konversi tipe. |
Untuk informasi selengkapnya, lihat Expression functions.