Topik ini menjelaskan berbagai skenario distribusi data ke beberapa Logstore—seperti distribusi dinamis, distribusi lintas akun, distribusi lintas akun dinamis, dan distribusi dinamis kompleks—serta langkah-langkah untuk masing-masing skenario.
Informasi latar belakang
Fitur transformasi data Log Service memungkinkan Anda mendistribusikan hasil ke beberapa Logstore. Anda dapat menggunakan Pasangan Kunci Akses (AccessKey pairs) untuk mengirim hasil ke Logstore di akun berbeda atau menggunakan fungsi e_output dan e_coutput untuk mengarahkan hasil secara dinamis ke Proyek dan Logstore tertentu.
-
Anda dapat mendistribusikan hasil ke Logstore lintas maksimal 20 akun.
-
Fungsi
e_outputmengirim log ke Logstore yang ditentukan dan menghentikan penerapan aturan transformasi berikutnya. Untuk melanjutkan penerapan aturan setelah mengirim log, gunakan fungsie_coutput. Untuk informasi selengkapnya, lihat fungsi e_output dan e_coutput. Topik ini menggunakan fungsie_outputsebagai contoh.
Skenario 1: Distribusi cross-account
Sebagai contoh, semua log akses untuk sebuah situs web disimpan dalam satu Logstore. Anda ingin mengarahkan log dengan status HTTP berbeda ke Logstore di akun yang berbeda.
Anda dapat mencapai hal ini dengan menggunakan fitur transformasi data 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
-
Log dengan http_status 2XX disimpan di Logstore0 pada target penyimpanan target0, dan topik-nya diatur ke success_event.
-
Log dengan http_status 3XX didistribusikan ke Logstore1 pada target penyimpanan target1, dan topiknya diatur ke redirection_event.
-
Log dengan http_status 4XX didistribusikan ke Logstore2 pada target penyimpanan target2, dan topiknya diatur ke unauthorized_event.
-
Log dengan http_status 5XX didistribusikan ke Logstore3 pada target penyimpanan target3, dengan topik diatur ke internal_server_error_event.
target0 berada di akun A, sedangkan target1, target2, dan target3 berada di 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
Pada panel Create Data Transformation Job, konfigurasikan target penyimpanan. Untuk informasi selengkapnya, lihat Buat pekerjaan transformasi data. Wilayah target untuk Target 2 (target1) adalah China (Beijing), dan titik akhirnya adalah
https://cn-beijing.log.aliyuncs.com. Wilayah target untuk Target 3 (target2) adalah China (Hangzhou) - Current Region, dan titik akhirnya adalahcn-hangzhou-intranet.log.aliyuncs.com.Label
Storage target
Destination Project and Logstore
AccessKey
1
target0
Project0, Logstore0
Pasangan AccessKey untuk Akun A
2
target1
Project1, Logstore1
Pasangan AccessKey untuk Akun B
3
target2
Project2, Logstore2
Pasangan AccessKey untuk Akun B
4
target3
Project3, Logstore3
Pasangan AccessKey untuk Akun B
-
Hasil transformasi
## Log dengan http_status 2xx didistribusikan ke Logstore0 milik 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 milik 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 milik 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 milik 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
Sebagai contoh, semua log akses untuk sebuah situs web disimpan dalam satu Logstore. Anda ingin mendistribusikan log tersebut ke Logstore berbeda berdasarkan bidang project dan LogStore.
Anda dapat mencapai hal ini dengan menggunakan fitur transformasi data 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
-
Log didistribusikan secara dinamis berdasarkan nilai bidang project dan Logstore.
-
Tambahkan bidang tag:type dengan nilai dynamic_dispatch ke log.
-
-
Aturan transformasi
e_output(project=v("project"), logstore=v("logstore"), tags={"type": "dynamic_dispatch"})Fungsi e_output mengekstraksi nilai bidang project dan bidang Logstore secara dinamis untuk mendistribusikan log.
-
Target penyimpanan
Pada halaman Create Data Transformation Job, Anda hanya perlu mengonfigurasi target penyimpanan default. Target ini digunakan untuk menyimpan log yang tidak di-drop selama proses transformasi.
CatatanPada skenario ini, Proyek dan Logstore tujuan untuk distribusi dinamis ditentukan oleh konfigurasi dalam fungsi
e_output. Tujuan ini tidak bergantung pada yang dikonfigurasi untuk target penyimpanan default (Label 1) pada halaman Create Data Transformation Job.Contoh konfigurasi target penyimpanan default (Label 1): Atur Target Name ke
target0, Destination Region ke China (Zhangjiakou), Destination Project keProject0, dan Destination Logstore keLogstore0. Untuk Authorization Method, pilih Default Role. -
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
Sebagai contoh, semua log akses untuk sebuah situs web disimpan dalam satu Logstore. Anda ingin mengarahkan log secara dinamis ke Logstore di akun berbeda berdasarkan bidang project dan logstore dalam log.
Anda dapat mencapai hal ini dengan menggunakan fitur transformasi data 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
Data didistribusikan secara dinamis ke Proyek di akun berbeda berdasarkan nilai bidang project dan LogStore dalam log. Misalnya, Project1 (berisi Logstore1 dan Logstore2) dimiliki oleh Akun A, sedangkan Project2 (berisi Logstore1 dan Logstore2) dimiliki oleh 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
Pada halaman Create Data Transformation Job, konfigurasikan target penyimpanan. Untuk informasi selengkapnya, lihat Buat pekerjaan transformasi data.
CatatanPada skenario ini, Proyek dan Logstore tujuan ditentukan oleh konfigurasi dalam fungsi
e_output. Tujuan ini tidak bergantung pada yang dikonfigurasi untuk target penyimpanan default (Label 1) pada halaman Create Data Transformation Job.Untuk Authorization Method setiap target penyimpanan, pilih AccessKey Pair, lalu masukkan AccessKey ID dan AccessKey Secret dari akun yang sesuai.
Label
Storage target
Destination Project and Logstore
AccessKey
1
target0
Project0, Logstore0
Tidak berlaku
2
target1
Bisa berupa nilai apa pun. Tujuan ditentukan oleh fungsi
e_output.Pasangan AccessKey untuk Akun A
3
target2
Bisa berupa nilai apa pun. Tujuan ditentukan oleh fungsi
e_output.Pasangan AccessKey untuk Akun B
-
Hasil transformasi
## Didistribusikan ke Logstore1 di Project1 milik 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 milik 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 milik 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 milik 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 kompleks
Sebagai contoh, sebuah perusahaan menjalankan iklan untuk sebuah game dan menyimpan semua log permintaan API game tersebut dalam satu Logstore. Perusahaan ingin mengurai header permintaan user_agent untuk mengarahkan permintaan dari perangkat berbeda (iOS, Android, dan Windows) ke Logstore terpisah, serta menganalisis bidang request_method untuk menghitung tingkat konversi iklan.
Anda dapat memenuhi persyaratan ini dengan menggunakan fitur transformasi data dan kueri analisis 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 log permintaan dari pengguna Windows ke Logstore1 pada target penyimpanan
target1. -
Distribusikan log permintaan dari pengguna iOS ke Logstore2 pada target penyimpanan
target2. -
Distribusikan log permintaan dari pengguna Android ke Logstore3 pada target penyimpanan
target3.
-
-
Aturan transformasi
Pada contoh ini, Anda dapat menggunakan fungsi ua_parse_os untuk mengurai bidang user_agent, fungsi dct_get untuk mengambil informasi sistem operasi dari header permintaan, dan fungsi e_set untuk menambahkan bidang baru bernama os dan mengatur nilainya ke informasi sistem operasi. Anda kemudian dapat menggunakan fungsi e_output dan fungsi kondisional untuk melakukan 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
Pada halaman Create Data Transformation Job, konfigurasikan target penyimpanan. Untuk informasi selengkapnya, lihat Buat pekerjaan transformasi data.
Untuk setiap target penyimpanan, konfigurasikan Target Name, Destination Project, dan Destination Logstore-nya. Anda juga harus memilih Destination Region (misalnya, China (Hangzhou)) dan Authorization Method (Default Role atau Custom Role). Jika Anda memilih Custom Role, Anda harus memberikan Role ARN.
Label
Storage target
Destination Project and Logstore
1
target0
Project0, Logstore0
2
target1
Project1, Logstore1
3
target2
Project2, Logstore2
4
target3
Project3, Logstore3
-
Kueri dan analisis
Jalankan kueri di Logstore tujuan untuk menentukan tingkat konversi iklan. Hasil berikut menunjukkan bahwa pengguna Android memiliki tingkat konversi lebih tinggi. Untuk informasi selengkapnya, lihat Panduan cepat kueri dan analisis.
-
Pada halaman Search & Analysis untuk Logstore2, jalankan kueri berikut untuk menghitung jumlah permintaan GET dan POST dari pengguna iOS.
* | SELECT Request_method, COUNT(*) as number GROUP BY Request_method
-
Pada halaman Search & Analysis untuk Logstore3, jalankan kueri berikut untuk menghitung jumlah permintaan GET dan POST dari pengguna Android.
* | SELECT Request_method, COUNT(*) as number GROUP BY Request_method
-