Topik ini menjelaskan berbagai skenario distribusi data ke beberapa Logstore tujuan beserta langkah-langkah yang diperlukan, mencakup distribusi dinamis, distribusi cross-account, distribusi cross-account dinamis, dan distribusi dinamis dalam skenario kompleks.
Informasi latar belakang
Fitur transformasi data Simple Log Service mendukung pendistribusian hasil transformasi ke beberapa Logstore tujuan. Saat menyimpan hasil transformasi, Anda dapat mengatur informasi AccessKey untuk akun berbeda guna mendistribusikan hasil tersebut ke Logstore milik akun-akun tersebut. Anda juga dapat menggunakan fungsi e_output atau e_coutput untuk memperoleh Proyek dan Logstore tujuan secara dinamis serta mendistribusikan hasil ke Logstore yang berbeda.
-
Anda dapat mendistribusikan hasil transformasi ke Logstore dari maksimal 20 akun.
-
Jika Anda menggunakan fungsi e_output, log yang dikirim ke LogStore tertentu tidak akan diproses oleh aturan transformasi selanjutnya. Untuk menerapkan aturan transformasi selanjutnya pada log setelah dikirim ke LogStore tertentu, gunakan fungsi e_coutput. Untuk informasi lebih lanjut, lihat e_outputLogStoreut. Topik ini menggunakan fungsi e_output sebagai contoh.
Skenario 1: Distribusi cross-account
Misalnya, semua access log untuk sebuah website disimpan dalam satu Logstore. Anda ingin mendistribusikan dan menyimpan log dengan status berbeda ke Logstore di bawah akun yang berbeda.
Untuk memenuhi kebutuhan ini, Anda dapat menggunakan fitur transformasi data Simple Log Service.
-
Log mentah
http_host: example.com http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https http_host: example.org http_status: 301 request_method: POST request_uri: /data/data.php scheme: http http_host: example.net http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https http_host: aliyundoc.com http_status: 504 request_method: GET request_uri: /data/index.html scheme: https -
Persyaratan distribusi
-
Simpan log dengan http_status bernilai 2XX di Logstore0 target penyimpanan target0. Atur topik log menjadi success_event.
-
Distribusikan log dengan http_status bernilai 3XX ke Logstore1 target penyimpanan target1. Atur topik log menjadi redirection_event.
-
Distribusikan log dengan http_status bernilai 4XX ke Logstore2 target penyimpanan target2. Atur topik log menjadi unauthorized_event.
-
Distribusikan log dengan http_status bernilai 5XX ke Logstore3 target penyimpanan target3. Atur topik log menjadi internal_server_error_event.
target0 berada di bawah Akun A. target1, target2, dan target3 berada di bawah Akun B.
-
-
Aturan transformasi
e_switch(e_match("status", r"2\d+"), e_set("__topic__", "success_event"), e_match("status", r"3\d+"), e_compose(e_set("__topic__", "redirection_event"), e_output("target1")), e_match("status", r"4\d+"), e_compose(e_set("__topic__", "unauthorized_event"), e_output("target2")), e_match("status", r"5\d+"), e_compose(e_set("__topic__", "internal_server_error_event`"), e_output("target3")) ) -
Target penyimpanan
Di panel Create Data Transformation Job, Anda dapat mengonfigurasi target penyimpanan. Untuk informasi lebih lanjut, lihat Create a data transformation job.

Label
Storage Target
Destination Project and Logstore
AccessKey
1
target0
Project0, LogStore0
Informasi AccessKey untuk Akun A
2
target1
Project1, Logstore1
Informasi AccessKey untuk Akun B
3
target2
Project2, Logstore2
Informasi AccessKey untuk Akun B
4
target3
Project3, Logstore3
Informasi AccessKey untuk Akun B
-
Hasil transformasi
## Log dengan http_status 2XX didistribusikan ke logstore0 Akun A. __topic__: success_event http_host: example.com http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https ## Log dengan http_status 3XX didistribusikan ke Logstore1 Akun B. __topic__: redirection_event http_host: example.org http_status: 301 request_method: POST request_uri: /data/data.php scheme: http ## Log dengan http_status 4XX didistribusikan ke Logstore2 Akun B. __topic__: unauthorized_event http_host: example.net http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https ## Log dengan http_status 5XX didistribusikan ke Logstore3 Akun B. __topic__: internal_server_error_event http_host: aliyundoc.com http_status: 504 request_method: GET request_uri: /data/index.html scheme: https
Skenario 2: Distribusi dinamis sederhana
Misalnya, semua access log untuk sebuah website disimpan dalam satu Logstore. Anda ingin mendistribusikan dan menyimpan log tersebut ke Logstore yang berbeda berdasarkan bidang project dan LogStore.
Untuk memenuhi kebutuhan ini, Anda dapat menggunakan fitur transformasi data Simple Log Service.
-
Log mentah
__tag__:type: dynamic_dispatch host: example.aliyundoc.com project: Project1 logstore: Logstore1 http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https __tag__:type: dynamic_dispatch host: demo.aliyundoc.com project: Project1 logstore: Logstore2 http_status: 301 request_method: POST request_uri: /data/data.php scheme: http __tag__:type: dynamic_dispatch host: learn.aliyundoc.com project: Project2 logstore: Logstore1 http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https __tag__:type: dynamic_dispatch host: guide.aliyundoc.com project: Project2 logstore: Logstore2 http_status: 504 request_method: GET request_uri: /data/index.html scheme: https -
Persyaratan distribusi
-
Distribusikan log secara dinamis berdasarkan nilai bidang project dan LogStore.
-
Tambahkan bidang __tag:__type ke log dengan nilai dynamic_dispatch.
-
-
Aturan transformasi
e_output(project=v("project"), logstore=v("logstore"), tags={"type": "dynamic_dispatch"})Fungsi e_output mengekstraksi nilai bidang project dan LogStore secara dinamis untuk mendistribusikan log.
-
Target penyimpanan
Di panel Create Data Transformation Job, Anda dapat mengatur target penyimpanan default. Target ini digunakan untuk menyimpan log lain yang tidak di-drop selama transformasi.
CatatanDalam skenario ini, Proyek dan Logstore tujuan untuk distribusi dinamis ditentukan oleh konfigurasi dalam fungsi e_output. Hal ini tidak terkait dengan Proyek dan Logstore tujuan yang dikonfigurasi untuk target penyimpanan default (berlabel 1) di panel Create Data Transformation Job.

-
Hasil transformasi
## Didistribusikan ke Logstore1 di Project1. __tag__:type: dynamic_dispatch host: example.aliyundoc.com project: Project1 logstore: Logstore1 http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https ## Didistribusikan ke Logstore2 di Project1. __tag__:type: dynamic_dispatch host: demo.aliyundoc.com project: Project1 logstore: Logstore2 http_status: 301 request_method: POST request_uri: /data/data.php scheme: http ## Didistribusikan ke Logstore1 di Project2. __tag__:type: dynamic_dispatch host: learn.aliyundoc.com project: Project2 logstore: Logstore1 http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https ## Didistribusikan ke Logstore2 di Project2. __tag__:type: dynamic_dispatch host: guide.aliyundoc.com project: Project2 logstore: Logstore2 http_status: 504 request_method: GET request_uri: /data/index.html scheme: https
Skenario 3: Distribusi cross-account dinamis
Misalnya, semua access log untuk sebuah website disimpan dalam satu Logstore. Anda ingin mendistribusikan log secara dinamis ke Logstore di bawah akun yang berbeda berdasarkan bidang project dan LogStore.
Untuk memenuhi kebutuhan ini, Anda dapat menggunakan fitur transformasi data Simple Log Service.
-
Log mentah
host: example.aliyundoc.com project: Project1 logstore: Logstore1 http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https host: demo.aliyundoc.com project: Project1 logstore: Logstore2 http_status: 301 request_method: POST request_uri: /data/data.php scheme: http host: learn.aliyundoc.com project: Project2 logstore: Logstore1 http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https host: guide.aliyundoc.com project: Project2 logstore: Logstore2 http_status: 504 request_method: GET request_uri: /data/index.html scheme: https -
Persyaratan distribusi
Distribusikan log secara dinamis berdasarkan nilai bidang project dan LogStore. Proyek tujuan berada di bawah akun yang berbeda. Project1, yang berisi dua Logstore (LogStore1 dan LogStore2), berada di bawah Akun A. Project2, yang juga berisi dua Logstore (LogStore1 dan LogStore2), berada di bawah Akun B.
-
Aturan transformasi
e_switch(e_match(v("project"), "Project1"), e_output(name="target1", project=v("project"), logstore=v("logstore")), e_match(v("project"), "Project2"), e_output(name="target2", project=v("project"), logstore=v("logstore"))) -
Target penyimpanan
Di panel Create Data Transformation Job, Anda dapat mengonfigurasi target penyimpanan. Untuk informasi lebih lanjut, lihat Create a data transformation job.
CatatanDalam skenario ini, Proyek dan Logstore tujuan ditentukan oleh konfigurasi dalam fungsi e_output. Hal ini tidak terkait dengan Proyek dan Logstore tujuan yang dikonfigurasi untuk target penyimpanan default (berlabel 1) di panel Create Data Transformation Job.

Label
Storage Target
Destination Project and Logstore
AccessKey
1
target0
Project0, Logstore0
Tidak berlaku
2
target1
Pilih apa saja. Tujuan ditentukan oleh fungsi e_output.
Informasi AccessKey untuk Akun A
3
target2
Pilih apa saja. Tujuan ditentukan oleh fungsi e_output.
Informasi AccessKey untuk Akun B
-
Hasil transformasi
## Didistribusikan ke Logstore1 di Project1 Akun A. host: example.aliyundoc.com project: Project1 logstore: Logstore1 http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https ## Didistribusikan ke Logstore2 di Project1 Akun A. host: demo.aliyundoc.com project: Project1 logstore: Logstore2 http_status: 301 request_method: POST request_uri: /data/data.php scheme: http ## Didistribusikan ke Logstore1 di Project2 Akun B. host: learn.aliyundoc.com project: Project2 logstore: Logstore1 http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https ## Didistribusikan ke Logstore2 di Project2 Akun B. host: guide.aliyundoc.com project: Project2 logstore: Logstore2 http_status: 504 request_method: GET request_uri: /data/index.html scheme: https
Skenario 4: Distribusi dinamis dalam skenario kompleks
Misalnya, sebuah perusahaan mengiklankan sebuah game dan menyimpan semua informasi permintaan API untuk game tersebut dalam satu Logstore. Perusahaan tersebut ingin mengurai header permintaan user-agent, mendistribusikan dan menyimpan permintaan dari perangkat berbeda (iOS, Android, dan Windows), serta menganalisis metode untuk memperoleh tingkat konversi iklan.
Untuk memenuhi kebutuhan ini, Anda dapat menggunakan fitur transformasi data dan kueri serta analisis Simple Log Service.
-
Log mentah
__source__:127.0.0.0 __tag__:__receive_time__: 1589541467 ip:10.0.0.0 request_method: GET user_agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 -
Persyaratan distribusi
-
Distribusikan dan simpan informasi permintaan dari pengguna Windows di Logstore1 target penyimpanan target1.
-
Distribusikan dan simpan informasi permintaan dari pengguna iOS di Logstore2 target penyimpanan target2.
-
Distribusikan dan simpan informasi permintaan dari pengguna Android di Logstore3 target penyimpanan target3.
-
-
Aturan transformasi
Dalam contoh ini, Anda dapat menggunakan fungsi ua_parse_os untuk mengurai bidang user_agent. Anda dapat menggunakan fungsi dct_get untuk mengambil informasi sistem operasi dari header permintaan. Kemudian, Anda dapat menggunakan fungsi e_set untuk menambahkan bidang os yang berisi informasi sistem operasi. Terakhir, Anda dapat menggunakan fungsi e_output dan fungsi kondisional untuk distribusi dinamis.
e_set("os", dct_get(ua_parse_os(v("user_agent")),"family")) e_if(e_search("os==Windows"),e_output(name="target1")) e_if(e_search("os=iOS"),e_output(name="target2")) e_if(e_search("os==Android"),e_output(name="target3")) -
Target penyimpanan
Di panel Create Data Transformation Job, Anda dapat mengonfigurasi target penyimpanan. Untuk informasi lebih lanjut, lihat Create a data transformation job.

Label
Storage Target
Destination Project and Logstore
1
target0
Project0 dan LogStore0
2
target1
Project1, Logstore1
3
target2
Project2, Logstore2
4
target3
Project3, Logstore3
-
Kueri dan analisis
Lakukan operasi kueri dan analisis di Logstore tujuan untuk memperoleh tingkat konversi iklan. Hasil kueri berikut menunjukkan bahwa tingkat konversi iklan untuk pengguna Android lebih tinggi. Untuk informasi lebih lanjut, lihat Quick start for query and analysis.
-
Di halaman kueri dan analisis Logstore2, Anda dapat memasukkan pernyataan kueri berikut untuk melihat rasio permintaan GET dan POST dari pengguna iOS.
* | SELECT Request_method, COUNT(*) as number GROUP BY Request_method
-
Di halaman kueri dan analisis Logstore3, Anda dapat memasukkan pernyataan kueri berikut untuk melihat rasio permintaan GET dan POST dari pengguna Android.
* | SELECT Request_method, COUNT(*) as number GROUP BY Request_method
-