全部产品
Search
文档中心

Simple Log Service:Mendistribusikan data ke beberapa Logstore tujuan

更新时间:Jun 26, 2025

Topik ini menjelaskan cara mendistribusikan data ke beberapa Logstore tujuan dalam berbagai skenario, termasuk distribusi dinamis, lintas akun, lintas akun dinamis, dan multi-sumber dinamis.

Informasi latar belakang

Fitur transformasi data dari Log Service memungkinkan Anda mendistribusikan hasil transformasi data ke beberapa Logstore tujuan. Saat menyimpan hasil transformasi data, Anda dapat mengonfigurasi pasangan AccessKey dari akun yang berbeda untuk mendistribusikan hasil tersebut ke Logstore-logstore milik akun-akun tersebut. Selain itu, Anda dapat menggunakan fungsi e_output atau e_coutput untuk menetapkan proyek dan Logstore tujuan secara dinamis.
Catatan
  • Dalam skenario distribusi lintas akun, Anda dapat mendistribusikan hasil transformasi data ke maksimal 20 Logstore yang dimiliki oleh akun berbeda.
  • Fungsi e_output digunakan untuk mengirim data log ke Logstore tertentu. Setelah data log dikirim, aturan transformasi selanjutnya tidak akan berlaku. Jika ingin menerapkan aturan transformasi lebih lanjut, gunakan fungsi e_coutput. Untuk informasi lebih lanjut, lihat e_output dan e_coutput. Fungsi e_output digunakan dalam contoh berikut untuk menjelaskan pendistribusian data log.

Skenario 1: distribusi lintas akun

Sebagai contoh, asumsikan semua entri log akses situs web disimpan dalam sebuah Logstore. Anda ingin mendistribusikan entri log tersebut ke Logstore-logstore dari akun berbeda berdasarkan nilai bidang http_status dalam entri log.

Gunakan fitur transformasi data untuk mendistribusikan entri log sesuai dengan persyaratan berikut:

  • Entri 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 entri log dengan nilai bidang http_status sebesar 2XX sebagai target0 di Logstore0 dan tetapkan topik entri log menjadi success_event.
    • Simpan entri log dengan nilai bidang http_status sebesar 3XX sebagai target1 di Logstore1 dan tetapkan topik entri log menjadi redirection_event.
    • Simpan entri log dengan nilai bidang http_status sebesar 4XX sebagai target2 di Logstore2 dan tetapkan topik entri log menjadi unauthorized_event.
    • Simpan entri log dengan nilai bidang http_status sebesar 5XX sebagai target3 di Logstore3 dan tetapkan topik entri log menjadi internal_server_error_event.

    Entri log yang disimpan sebagai target0 milik Akun A, sedangkan entri log yang disimpan sebagai target1, target2, dan target3 milik 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"))
        )
  • Tujuan penyimpanan
    Pada halaman Create Data Transformation Rule, konfigurasikan tujuan penyimpanan. Untuk detail parameter, lihat Buat Pekerjaan Transformasi Data.Data distribution
    LabelTujuan penyimpananProyek dan Logstore tujuanAccessKey
    1target0Project0 dan Logstore0Pasangan AccessKey dari Akun A
    2target1Project1 dan Logstore1Pasangan AccessKey dari Akun B
    3target2Project2 dan Logstore2Pasangan AccessKey dari Akun B
    4target3Project3 dan Logstore3Pasangan AccessKey dari Akun B
  • Hasil:
    ## Entri log yang memiliki nilai bidang http_status sebesar 2XX didistribusikan ke Logstore0 dari Akun A.
    
    __topic__:  success_event
    http_host:  example.com
    http_status:  200
    request_method:  GET
    request_uri:  /pic/icon.jpg
    scheme:  https
    
    ## Entri log yang memiliki nilai bidang http_status sebesar 3XX didistribusikan ke Logstore1 dari Akun B.
    
    __topic__:  redirection_event
    http_host:  example.org
    http_status:  301
    request_method:  POST
    request_uri:  /data/data.php
    scheme:  http
    
    ## Entri log yang memiliki nilai bidang http_status sebesar 4XX didistribusikan ke Logstore2 dari Akun B.
    
    __topic__: unauthorized_event
    http_host:  example.net
    http_status:  404
    request_method:  GET
    request_uri:  /category/abc/product_id
    scheme:  https
    
    ## Entri log yang memiliki nilai bidang http_status sebesar 5XX didistribusikan ke Logstore3 dari 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

Sebagai contoh, asumsikan semua entri log akses situs web disimpan dalam sebuah Logstore. Anda ingin mendistribusikan entri log tersebut ke Logstore-logstore berbeda berdasarkan bidang proyek dan logstore dalam entri log.

Gunakan fitur transformasi data untuk mendistribusikan entri log sesuai dengan persyaratan berikut:

  • Entri 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 entri log berdasarkan nilai-nilai dari bidang proyek dan logstore.
    • Tambahkan bidang __tag:__type ke setiap entri log dan tetapkan nilainya menjadi dynamic_dispatch.
  • Aturan transformasi:
    e_output(project=v("project"), logstore=v("logstore"), tags={"type": "dynamic_dispatch"})

    Fungsi e_output mengekstrak nilai-nilai dari bidang proyek dan logstore dari setiap entri log dan mendistribusikan entri log berdasarkan nilai-nilai tersebut.

  • Tujuan penyimpanan
    Pada halaman Create Data Transformation Rule, konfigurasikan tujuan penyimpanan.
    Catatan Proyek dan Logstore tujuan ditentukan berdasarkan pengaturan parameter proyek dan logstore dalam fungsi e_output. Proyek dan Logstore ini tidak terkait dengan konfigurasi tujuan penyimpanan default (berlabel 1) pada halaman Create Data Transformation Rule.
    Dynamic distribution
  • Hasil:
    ## Entri log yang didistribusikan ke Logstore1 dari 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
    
    ## Entri log yang didistribusikan ke Logstore2 dari 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
    
    ## Entri log yang didistribusikan ke Logstore1 dari 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
    
    ## Entri log yang didistribusikan ke Logstore2 dari 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 lintas akun dinamis

Sebagai contoh, asumsikan semua entri log akses situs web disimpan dalam sebuah Logstore. Anda ingin mendistribusikan entri log tersebut ke Logstore-logstore dari akun berbeda berdasarkan bidang proyek dan logstore dalam entri log.

Gunakan fitur transformasi data untuk mendistribusikan entri log sesuai dengan persyaratan berikut:

  • Entri 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 entri log ke proyek dan Logstore dari akun berbeda berdasarkan nilai-nilai dari bidang proyek dan logstore. Proyek tujuan mencakup Project1 dan Project2. Project1 mencakup dua Logstore bernama Logstore1 dan Logstore2 dan dimiliki oleh Akun A. Project2 mencakup dua Logstore bernama Logstore1 dan Logstore2 dan 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")))
  • Tujuan penyimpanan
    Pada halaman Create Data Transformation Rule, konfigurasikan tujuan penyimpanan. Untuk detail parameter, lihat Buat Pekerjaan Transformasi Data.
    Catatan Proyek dan Logstore tujuan ditentukan berdasarkan pengaturan parameter proyek dan logstore dalam fungsi e_output. Proyek dan Logstore ini tidak terkait dengan konfigurasi tujuan penyimpanan default (berlabel 1) pada halaman Create Data Transformation Rule.
    Dynamic cross-account distribution
    LabelTujuan penyimpananProyek dan Logstore tujuanAccessKey
    1target0Project0 dan Logstore0Tidak ada
    2target1Dipilih secara acak oleh fungsi e_outputPasangan AccessKey dari Akun A
    3target2Dipilih secara acak oleh fungsi e_outputPasangan AccessKey dari Akun B
  • Hasil:
    ## Entri log yang didistribusikan ke Logstore1 dari Project1 yang dimiliki oleh Akun A.
    
    host:  example.aliyundoc.com
    project: Project1
    logstore: Logstore1
    http_status:  200
    request_method:  GET
    request_uri:  /pic/icon.jpg
    scheme:  https
    
    ## Entri log yang didistribusikan ke Logstore2 dari Project1 yang dimiliki oleh Akun A.
    host:  demo.aliyundoc.com
    project: Project1
    logstore: Logstore2
    http_status:  301
    request_method:  POST
    request_uri:  /data/data.php
    scheme:  http
    
    ## Entri log yang didistribusikan ke Logstore1 dari Project2 yang dimiliki oleh Akun B.
    
    host:   learn.aliyundoc.com
    project: Project2
    logstore: Logstore1
    http_status:  404
    request_method:  GET
    request_uri:  /category/abc/product_id
    scheme:  https
    
    ## Entri log yang didistribusikan ke Logstore2 dari Project2 yang dimiliki oleh 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 multi-sumber

Sebagai contoh, asumsikan Anda mengiklankan sebuah game dan menyimpan entri log dari semua permintaan API game tersebut dalam sebuah Logstore. Anda ingin mengurai header permintaan user-agent dan mendistribusikan entri log dari permintaan platform iOS, Android, dan Windows berdasarkan header permintaan user-agent. Anda juga ingin menganalisis tingkat konversi iklan berdasarkan bidang request_method.

Gunakan fitur transformasi data dan kueri untuk mendistribusikan entri log sesuai dengan persyaratan berikut:

  • Entri 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
    • Simpan entri log dari permintaan pengguna Windows sebagai target1 di Logstore1.
    • Simpan entri log dari permintaan pengguna iOS sebagai target2 di Logstore2.
    • Simpan entri log dari permintaan pengguna Android sebagai target3 di Logstore3.
  • Aturan transformasi:

    Gunakan fungsi ua_parse_os untuk mengurai bidang user_agent dan fungsi dct_get untuk mengambil informasi sistem operasi dari header permintaan user-agent. Kemudian, gunakan fungsi e_set untuk menambahkan bidang os ke setiap entri log dan gunakan fungsi e_output dan e_if untuk mendistribusikan entri log. Nilai dari bidang os adalah informasi sistem operasi.

    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"))
  • Tujuan penyimpanan

    Pada halaman Create Data Transformation Rule, konfigurasikan tujuan penyimpanan. Untuk detail parameter, lihat Buat Pekerjaan Transformasi Data.

    Default storage target
    LabelTujuan penyimpananProyek dan Logstore tujuan
    1target0Project0 dan Logstore0
    2target1Project1 dan Logstore1
    3target2Project2 dan Logstore2
    4target3Project3 dan Logstore3
  • Kueri Log dan Analisis

    Anda dapat menanyakan data log di Logstore tujuan untuk mengambil tingkat konversi iklan. Hasil kueri berikut menunjukkan bahwa pengguna Android memiliki tingkat konversi iklan yang lebih tinggi. Untuk informasi lebih lanjut tentang cara menanyakan data log, lihat Panduan Kueri dan Analisis Log.

    • Pada halaman Pencarian & Analisis Logstore2, jalankan pernyataan kueri berikut untuk mengambil rasio permintaan GET dan POST dari pengguna iOS:
      * | SELECT Request_method, COUNT(*) as number GROUP BY Request_method
      Query and analysis result
    • Pada halaman Pencarian & Analisis Logstore3, jalankan pernyataan kueri berikut untuk mengambil rasio permintaan GET dan POST dari pengguna Android:
      * | SELECT Request_method, COUNT(*) as number GROUP BY Request_method
      Query and analysis result