Sumber data LogHub (SLS) menyediakan sinkronisasi data dua arah antara Simple Log Service (SLS) dan sumber data lainnya di DataWorks.
Fitur
Simple Log Service (SLS) mendukung skenario sinkronisasi data berikut:
-
Sinkronisasi data antara LogHub dan sumber data seperti MaxCompute di wilayah berbeda.
-
Sinkronisasi data antara LogHub dan sumber data seperti MaxCompute di akun Alibaba Cloud berbeda.
-
Sinkronisasi data antara LogHub dan sumber data seperti MaxCompute dalam akun Alibaba Cloud yang sama.
-
Sinkronisasi data antara LogHub dan sumber data seperti MaxCompute antara akun public cloud dan akun China Finance Cloud.
Batasan
Ketika Data Integration melakukan penulisan offline ke LogHub (SLS), duplikasi data dapat terjadi jika tugas dijalankan ulang setelah failover karena LogHub (SLS) tidak idempoten.
Tipe bidang yang didukung
Data Integration mendukung tipe bidang LogHub (SLS) berikut untuk pembacaan dan penulisan.
|
Field type |
Offline read (LogHub (SLS) Reader) |
Offline write (LogHub (SLS) Writer) |
Real-time read |
|
STRING |
Supported |
Supported |
Supported |
Detail:
-
Saat menulis data ke LogHub (SLS) dalam mode offline
Semua tipe data dikonversi ke STRING sebelum ditulis ke LogHub (SLS). Tabel berikut mencantumkan konversi tipe data tersebut.
Supported Data Integration internal type
Data type when written to LogHub (SLS)
LONG
STRING
DOUBLE
STRING
STRING
STRING
DATE
STRING
BOOLEAN
STRING
BYTES
STRING
-
Saat membaca data dari LogHub (SLS) dalam mode real-time
Bidang metadata berikut secara otomatis disertakan.
LogHub (SLS) real-time synchronization field
Data type
Description
__time__
STRING
Bidang reservasi SLS: __time__ menentukan waktu log saat data ditulis, dalam format stempel waktu UNIX (satuan: detik).
__source__
STRING
Bidang reservasi SLS: __source__ menentukan perangkat tempat log dikumpulkan.
__topic__
STRING
Bidang reservasi SLS: __topic__ menentukan nama topik.
__tag__:__receive_time__
STRING
Waktu saat log tiba di server. Setelah fitur pencatatan IP publik diaktifkan, server menambahkan bidang ini ke log mentah saat menerimanya. Nilainya berupa stempel waktu UNIX dalam satuan detik.
__tag__:__client_ip__
STRING
Alamat IP publik perangkat tempat log dikumpulkan. Setelah fitur pencatatan IP publik diaktifkan, server menambahkan bidang ini ke log mentah saat menerimanya.
__tag__:__path__
STRING
Jalur file log yang dikumpulkan oleh Logtail. Logtail secara otomatis menambahkan bidang ini ke log.
__tag__:__hostname__
STRING
Hostname mesin tempat Logtail mengumpulkan data. Logtail secara otomatis menambahkan bidang ini ke log.
Buat sumber data
Konfigurasikan sumber data
Sebelum mengembangkan tugas sinkronisasi data, buat sumber data di DataWorks. Untuk prosedurnya, lihat Create a data source. Untuk deskripsi detail parameter konfigurasi, lihat tooltip setiap parameter pada halaman konfigurasi.
Buat sumber data lintas akun
Contoh berikut menunjukkan cara Akun B mengonfigurasi tugas sinkronisasi di Data Integration untuk menyinkronkan data LogHub dari Akun A ke MaxCompute milik Akun B. Catatan untuk skenario lintas akun:
-
Gunakan ID AccessKey dan Rahasia AccessKey Akun A untuk membuat sumber data LogHub.
Dalam kasus ini, Akun B dapat menyinkronkan data dari semua proyek SLS di bawah Akun A.
-
Gunakan ID AccessKey dan Rahasia AccessKey Pengguna RAM A1 di bawah Akun A untuk membuat sumber data LogHub.
-
Akun A memberikan izin SLS umum kepada Pengguna RAM A1:
AliyunLogFullAccessdanAliyunLogReadOnlyAccess. Untuk informasi lebih lanjut, lihat Grant permissions to a RAM user.CatatanSetelah Anda menyambungkan kebijakan sistem
AliyunLogFullAccessdanAliyunLogReadOnlyAccesske pengguna RAM, pengguna RAM tersebut dapat mengakses semua resource SLS di bawah akun Alibaba Cloud. -
Akun A memberikan izin kustom kepada Pengguna RAM A1 pada SLS.
Masuk ke halaman dengan Akun A, lalu klik Create Permission Policy.
Untuk informasi lebih lanjut tentang otorisasi, lihat Access control overview dan RAM custom authorization examples.
Dengan kebijakan berikut, Akun B dapat menggunakan Pengguna RAM A1 untuk menyinkronkan data hanya dari proyek SLS project_name1 dan project_name2.
{ "Version": "1", "Statement": [ { "Action": [ "log:Get*", "log:List*", "log:CreateConsumerGroup", "log:UpdateConsumerGroup", "log:DeleteConsumerGroup", "log:ListConsumerGroup", "log:ConsumerGroupUpdateCheckPoint", "log:ConsumerGroupHeartBeat", "log:GetConsumerGroupCheckPoint" ], "Resource": [ "acs:log:*:*:project/project_name1", "acs:log:*:*:project/project_name1/*", "acs:log:*:*:project/project_name2", "acs:log:*:*:project/project_name2/*" ], "Effect": "Allow" } ] }
-
Pengembangan tugas sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Saat LogHub digunakan sebagai sumber, Anda dapat memfilter data di LogHub dengan menggunakan sintaks kueri LogHub atau pernyataan SPL (SLS Processing Language, sintaks yang digunakan oleh SLS untuk memproses log) selama konfigurasi tugas. Untuk informasi lebih lanjut tentang sintaks tersebut, lihat Appendix 1: Script demo and parameter description.
Panduan konfigurasi tugas sinkronisasi offline tabel tunggal
-
Untuk prosedurnya, lihat Codeless UI configuration dan Script mode configuration.
CatatanSaat Anda mengonfigurasi node sinkronisasi dalam mode antarmuka tanpa kode, format parameter harus konsisten dengan format konfigurasi parameter di Appendix 1: Script demos and parameter description.
-
Untuk parameter lengkap dan demo skrip dalam mode skrip, lihat Appendix 1: Script demos and parameter description di bawah.
Panduan konfigurasi tugas sinkronisasi real-time tabel tunggal
Untuk prosedurnya, lihat Single-table real-time synchronization task configuration.
Panduan konfigurasi tugas sinkronisasi real-time basis data penuh dan tugas sinkronisasi tingkat basis data penuh lainnya
Untuk prosedurnya, lihat Configure real-time full-database synchronization tasks.
FAQ
Untuk pertanyaan umum lainnya, lihat Data Integration FAQ.
Lampiran 1: Demo skrip dan deskripsi parameter
Konfigurasikan tugas sinkronisasi batch menggunakan editor kode
Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Script mode configuration. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Demo skrip Reader
Demo baca dari Logstore
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"LogHub",// Nama plugin.
"parameter":{
"datasource":"",// Sumber data.
"column":[// Kolom.
"col0",
"col1",
"col2",
"col3",
"col4",
"__category__",
"__source__",
"__topic__", // Topik log.
"__machineUUID__", // Pengidentifikasi unik mesin koleksi.
"__tag__:__hostname__", // Hostname.
"__tag__:__path__", // Jalur.
"__time__" // Waktu event.
],
"beginDateTime":"",// Waktu mulai konsumsi data.
"batchSize":"",// Jumlah entri data yang diambil dari SLS dalam satu kueri.
"endDateTime":"",// Waktu akhir konsumsi data.
"fieldDelimiter":",",// Pemisah kolom.
"logstore":""// Nama Logstore tujuan.
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error.
},
"speed":{
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku dan bandwidth tidak dibatasi. Jika throttle diatur ke true, bandwidth dibatasi.
"concurrent":1 // Jumlah thread konkuren.
"mbps":"12",// Laju pembatasan. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Demo baca dari Logstore setelah pemrosesan data SPL
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"LogHub",// Nama plugin.
"parameter":{
"datasource":"",// Sumber data.
"column":[// Kolom.
"col100",
"col1"
],
"beginDateTime":"",// Waktu mulai konsumsi data.
"batchSize":"",// Jumlah entri data yang diambil dari SLS dalam satu kueri.
"endDateTime":"",// Waktu akhir konsumsi data.
"fieldDelimiter":",",// Pemisah kolom.
"logstore":"",// Nama Logstore tujuan.
"query":"* | where regexp_like(col0, '[0-9]+') | project col100=col0, col1 " // SPL
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error.
},
"speed":{
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku dan bandwidth tidak dibatasi. Jika throttle diatur ke true, bandwidth dibatasi.
"concurrent":1 // Jumlah thread konkuren.
"mbps":"12",// Laju pembatasan. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Demo baca dari Logstore setelah memperluas bidang dengan SPL
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"LogHub",// Nama plugin.
"parameter":{
"datasource":"",// Sumber data.
"column":[// Kolom.
"col0",
"col1",
"col2",
"col3",
"col4",
"__category__",
"__source__",
"__topic__", // Topik log.
"__machineUUID__", // Pengidentifikasi unik mesin koleksi.
"__tag__:__hostname__", // Hostname.
"__tag__:__path__", // Jalur.
"__time__", // Waktu event.
"col100",
"col101"
],
"beginDateTime":"",// Waktu mulai konsumsi data.
"batchSize":"",// Jumlah entri data yang diambil dari SLS dalam satu kueri.
"endDateTime":"",// Waktu akhir konsumsi data.
"fieldDelimiter":",",// Pemisah kolom.
"logstore":"",// Nama Logstore tujuan.
"query":"* | where regexp_like(col0, '[0-9]+') | extend col100=cast(col2 as BIGINT), extend col101=date_parse(col3, '%Y-%m-%d %H:%i') ",// SPL
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error.
},
"speed":{
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku dan bandwidth tidak dibatasi. Jika throttle diatur ke true, bandwidth dibatasi.
"concurrent":1 // Jumlah thread konkuren.
"mbps":"12",// Laju pembatasan. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Parameter skrip Reader
|
Parameter |
Description |
Required |
Default value |
|
endPoint |
Titik akhir SLS adalah URL untuk mengakses proyek dan data log-nya. Titik akhir ini ditentukan oleh wilayah Alibaba Cloud tempat proyek berada. Untuk titik akhir setiap wilayah, lihat Endpoints. |
Yes |
None |
|
accessId |
ID AccessKey untuk mengakses SLS. |
Yes |
None |
|
accessKey |
Rahasia AccessKey untuk mengakses SLS. |
Yes |
N/A |
|
project |
Nama proyek SLS. Proyek adalah unit manajemen sumber daya di SLS untuk mengisolasi dan mengontrol sumber daya. |
Yes |
N/A |
|
logstore |
Nama Logstore. Logstore adalah unit di SLS untuk mengumpulkan, menyimpan, dan mengkueri data log. |
Yes |
N/A |
|
batchSize |
Jumlah catatan data yang diambil dari SLS per kueri. |
No |
128 |
|
column |
Nama kolom dalam setiap catatan data. Bidang metadata SLS seperti topik log, UUID mesin koleksi, hostname, jalur, dan waktu log juga dapat dikonfigurasi sebagai kolom sinkronisasi. Catatan
Nama kolom bersifat case-sensitive. Untuk informasi lebih lanjut, lihat deskripsi nilai yang dapat dikonfigurasi di Appendix 3: Configurable values for column di bawah. |
Yes |
N/A |
|
beginDateTime |
Waktu mulai konsumsi data, yaitu waktu saat data log tiba di LogHub (SLS). Parameter ini menentukan batas kiri (inklusif) rentang waktu. Nilainya berupa string waktu dalam format yyyyMMddHHmmss (misalnya, 20180111013000) dan dapat digunakan dengan parameter penjadwalan DataWorks. Sebagai contoh, di Scheduling Settings di sisi kanan halaman pengeditan node, konfigurasikan Catatan
|
Yes |
N/A |
|
endDateTime |
Waktu akhir konsumsi data, yang menentukan batas kanan (eksklusif) rentang waktu. Nilainya berupa string waktu dalam format yyyyMMddHHmmss (misalnya, 20180111013010) dan dapat digunakan dengan parameter penjadwalan DataWorks. Sebagai contoh, di Scheduling Settings di sisi kanan halaman pengeditan node, konfigurasikan endDateTime=${yyyymmdd} di bidang Parameter. Kemudian, atur Log End Time menjadi ${endDateTime}000000, yang menunjukkan bahwa waktu akhir log adalah pukul 00:00:00 hari setelah tanggal bisnis. Untuk informasi lebih lanjut, lihat Scheduling parameters. Penting
|
Yes |
N/A |
|
query |
Memfilter data di LogHub dengan menggunakan sintaks kueri LogHub atau pernyataan SPL (SLS Processing Language adalah sintaks yang digunakan oleh SLS untuk memproses log). |
Yes |
N/A |
Jika data hilang saat Anda membaca dari LogHub untuk sinkronisasi, periksa di konsol LogHub apakah bidang metadata receive_time data tersebut berada dalam rentang waktu yang dikonfigurasi untuk tugas tersebut.
Demo skrip Writer
{
"type": "job",
"version": "2.0",// Nomor versi.
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "LogHub",// Nama plugin.
"parameter": {
"datasource": "",// Sumber data.
"column": [// Kolom.
"col0",
"col1",
"col2",
"col3",
"col4",
"col5"
],
"topic": "",// Topik yang dipilih.
"batchSize": "1024",// Jumlah catatan yang dikirim sekaligus.
"logstore": ""// Nama Logstore LogService tujuan.
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": ""// Jumlah catatan error.
},
"speed": {
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku dan pembatasan kecepatan dinonaktifkan. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
"concurrent":3, // Jumlah maksimum thread konkuren.
"mbps":"12"// Laju pembatasan. 1 mbps = 1 MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parameter skrip Writer
LogHub (SLS) Writer menerima data dari reader melalui framework Data Integration, mengonversi semua tipe data ke STRING, dan mendorong data ke LogHub (SLS) secara batch menggunakan LogService Java SDK ketika batchSize yang ditentukan tercapai.
|
Parameter |
Description |
Required |
Default value |
|
endpoint |
Titik akhir SLS adalah URL untuk mengakses proyek dan data log-nya. Titik akhir ini ditentukan oleh wilayah Alibaba Cloud tempat proyek berada. Untuk titik akhir layanan setiap wilayah, lihat Endpoints. |
Yes |
None |
|
accessKeyId |
AccessKeyId yang digunakan untuk mengakses Simple Log Service. |
Yes |
None |
|
accessKeySecret |
AccessKeySecret yang digunakan untuk mengakses Simple Log Service. |
Yes |
None |
|
project |
Nama proyek SLS. |
Yes |
None |
|
logstore |
Nama Logstore. Logstore adalah unit untuk mengumpulkan, menyimpan, dan mengkueri data log di SLS. |
Yes |
None |
|
topic |
Nama topik untuk tujuan SLS. |
No |
Empty string |
|
batchSize |
Jumlah catatan data yang disinkronkan per batch. Nilai default adalah 1.024, dan nilai maksimum adalah 4.096. Catatan
Setiap batch tidak boleh melebihi 5 MB. Sesuaikan jumlah catatan per batch berdasarkan ukuran catatan individual. |
No |
1.024 |
|
column |
Nama kolom dalam setiap catatan data. |
Yes |
None |
Lampiran 2: Pemfilteran sintaks SPL LogHub
Saat LogHub menjadi sumber data, Anda dapat memfilter data dengan menggunakan sintaks kueri LogHub atau pernyataan SPL (SLS Processing Language) selama konfigurasi tugas. Sintaks tersebut dijelaskan sebagai berikut:
Untuk informasi lebih lanjut tentang SPL, lihat SPL syntax.
|
Scenario |
SQL statement |
SPL statement |
|
Data filtering |
|
|
|
Pemrosesan dan pemilihan bidang |
Pilih bidang tertentu dan ubah namanya:
|
|
|
Transformasi data (panggil fungsi SQL) |
Konversi tipe data, urai stempel waktu, dan lainnya:
|
Konversi tipe data, urai stempel waktu, dan lainnya:
|
|
Ekstraksi bidang |
Ekstraksi regex:
Ekstraksi JSON:
|
|
Lampiran 3: Konfigurasi kolom
Logika pembacaan semua bidang hanya dipicu ketika column berisi satu elemen yang berupa * atau "*". Jika tidak, setiap elemen column diproses dalam urutan pencocokan normal. Sebagai contoh, jika konfigurasinya adalah ["*", "__time__"], * tidak memicu logika pembacaan semua bidang. Sebaliknya, elemen tersebut dicocokkan sebagai nama bidang biasa, yang biasanya menghasilkan null.
Urutan pencocokan normal adalah: Bidang konten log biasa → Pemetaan bidang meta bawaan Reader → Konstanta dalam tanda petik tunggal → __tag__:<tagKey> → null. Jika bidang konten log biasa memiliki nama yang sama dengan bidang meta atau kunci LogTag, bidang konten log biasa memiliki prioritas lebih tinggi.
Tabel berikut mencantumkan bidang yang umum digunakan dan direkomendasikan untuk konfigurasi oleh pengguna dalam pengaturan column LogHub Reader, berdasarkan definisi bidang reservasi SLS. Apakah suatu bidang memiliki nilai tergantung pada konten Log aktual, metadata LogGroup, dan LogTag yang diambil.
|
Configuration method |
Behavior |
|
Nama bidang biasa, seperti |
Membaca dari bidang konten (contents) setiap entri log berdasarkan kunci. Nama bidang bersifat case-sensitive. |
|
|
Membaca |
|
|
Membaca bidang |
|
|
Membaca bidang |
|
|
Membaca bidang |
|
|
Membaca bidang |
|
|
Membaca bidang |
|
|
Membaca bidang |
|
|
Membaca bidang |
|
|
Membaca bidang |
|
|
Membaca LogTag lain yang ditentukan, seperti |
|
|
Jika bidang ini ada sebagai bidang konten log, bidang tersebut dapat dibaca sebagai nama bidang biasa. |
|
|
Menghasilkan string konstan (konten setelah menghapus tanda petik tunggal luar). |
|
|
Hanya berlaku ketika |
|
Bidang yang tidak cocok |
Menghasilkan |
Contoh konfigurasi:
"column": [
"content",
"__time__",
"__source__",
"__tag__:__receive_time__",
"'constant_value'"
]