Anda dapat menggunakan sumber data LogHub (SLS) di DataWorks untuk membaca dan menulis data ke Simple Log Service (SLS). Topik ini menjelaskan kemampuan sinkronisasi data yang didukung.
Fitur
Anda dapat menyinkronkan data antara LogHub dan sumber data lainnya, seperti MaxCompute, dalam skenario berikut:
Antar wilayah berbeda.
Antar akun Alibaba Cloud berbeda.
Dalam satu akun Alibaba Cloud yang sama.
Antara akun cloud publik dan akun cloud finansial.
Batasan
Ketika Data Integration menulis data ke LogHub (SLS) dalam tugas offline, data mungkin mengalami duplikasi jika tugas dijalankan ulang setelah failover. Hal ini terjadi karena operasi penulisan LogHub (SLS) tidak idempoten.
Tipe bidang yang didukung
Data Integration mendukung pembacaan dan penulisan ke bidang LogHub (SLS) dengan tipe berikut.
Field type | Offline read (LogHub (SLS) Reader) | Offline write (LogHub (SLS) Writer) | Real-time read |
STRING | Supported | Supported | Supported |
Detail:
Saat Anda melakukan penulisan offline ke LogHub (SLS)
Writer LogHub (SLS) mengonversi semua tipe data yang didukung menjadi STRING sebelum menulis data. Tabel berikut mencantumkan konversi tipe data tersebut.
Internal type
Data type in LogHub (SLS)
LONG
STRING
DOUBLE
STRING
STRING
STRING
DATE
STRING
BOOLEAN
STRING
BYTES
STRING
Saat Anda melakukan pembacaan real-time dari LogHub (SLS)
Bidang metadata berikut secara otomatis disertakan.
Field
Type
Description
__time__STRING
Bidang SLS yang dicadangkan yang menentukan waktu entri log sebagai Stempel waktu UNIX dalam satuan detik.
__source__STRING
Bidang SLS yang dicadangkan yang menentukan perangkat sumber log.
__topic__STRING
Bidang SLS yang dicadangkan yang menentukan nama Topic.
__tag__:__receive_time__STRING
Waktu penerimaan log oleh server, dinyatakan sebagai Stempel waktu UNIX dalam satuan detik. Bidang ini ditambahkan ke log asli ketika pencatatan Alamat IP publik diaktifkan.
__tag__:__client_ip__STRING
Alamat IP publik perangkat sumber. Bidang ini ditambahkan ke log asli ketika fitur pencatatan Alamat IP publik diaktifkan.
__tag__:__path__STRING
Jalur file log yang dikumpulkan oleh Logtail. Bidang ini secara otomatis ditambahkan oleh Logtail.
__tag__:__hostname__STRING
Hostname mesin tempat Logtail mengumpulkan data. Bidang ini secara otomatis ditambahkan oleh Logtail.
Buat sumber data
Konfigurasikan sumber data
Saat mengembangkan tugas sinkronisasi data, Anda perlu membuat sumber data yang sesuai di DataWorks. Untuk prosedurnya, lihat Manajemen Sumber Data. Penjelasan detail parameter konfigurasi tersedia dalam tooltip pada halaman konfigurasi.
Buat sumber data lintas akun
Bagian ini memberikan contoh cara mengonfigurasi sumber data cross-account. Dalam contoh ini, tugas Data Integration di akun Alibaba Cloud B menyinkronkan data LogHub dari akun A ke instans MaxCompute di akun B.
Buat sumber data LogHub menggunakan ID AccessKey dan Rahasia AccessKey akun A.
Setelah sumber data dibuat, akun B dapat menyinkronkan data dari semua proyek Simple Log Service di akun A.
Buat sumber data LogHub menggunakan ID AccessKey dan Rahasia AccessKey Pengguna RAM bernama A1 yang dimiliki akun A.
Akun A memberikan izin umum Pengguna RAM A1 untuk Simple Log Service (SLS), yaitu
AliyunLogFullAccessdanAliyunLogReadOnlyAccess. Untuk informasi selengkapnya, lihat Buat Pengguna RAM dan berikan izin.CatatanSetelah kebijakan sistem
AliyunLogFullAccessdanAliyunLogReadOnlyAccessdiberikan kepada akun RAM, akun tersebut dapat mengkueri semua log di Simple Log Service milik akun utama.Akun A memberikan izin khusus Pengguna RAM A1 untuk Simple Log Service.
Akun Utama A masuk ke lalu klik Create Permission Policy.
Untuk informasi lebih lanjut tentang otorisasi, lihat Introduction dan Overview.
Setelah memberikan izin dengan kebijakan berikut, akun B hanya dapat menggunakan Pengguna RAM A1 untuk menyinkronkan data dari proyek Simple Log Service bernama 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
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Saat LogHub digunakan sebagai sumber data untuk tugas sinkronisasi, Anda dapat memfilter data menggunakan sintaks kueri LogHub atau pernyataan SPL (SLS Processing Language adalah sintaks yang digunakan SLS untuk memproses log). Untuk deskripsi lengkap sintaks, lihat Lampiran II: Deskripsi Pemfilteran Sintaks SPL LogHub.
Sinkronisasi tabel tunggal offline
Untuk informasi selengkapnya, lihat Konfigurasi Antarmuka tanpa kode dan Konfigurasi editor kode.
CatatanSaat mengonfigurasi tugas sinkronisasi di Antarmuka tanpa kode, format parameter harus konsisten dengan format yang dijelaskan dalam Lampiran 1: Demo Skrip dan Deskripsi Parameter.
Untuk semua parameter konfigurasi editor kode dan demo skrip, lihat Lampiran 1: Demo Skrip dan Deskripsi Parameter.
Sinkronisasi tabel tunggal real-time
Untuk prosedurnya, lihat Konfigurasi tugas sinkronisasi real-time (Legacy) atau Konfigurasi tugas sinkronisasi real-time tabel tunggal.
Sinkronisasi seluruh database
Untuk prosedurnya, lihat Konfigurasikan tugas sinkronisasi real-time untuk seluruh database.
FAQ
Bidang yang berisi data di LogHub menjadi kosong setelah sinkronisasi.
Bidang yang dibaca dari pemetaan bidang LogHub tidak sesuai harapan.
Untuk informasi selengkapnya, lihat FAQ Data Integration.
Lampiran 1: Contoh skrip dan parameter
Konfigurasikan tugas sinkronisasi batch menggunakan editor kode
Jika ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai persyaratan format skrip terpadu. Untuk informasi selengkapnya, lihat Gunakan editor kode. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Contoh skrip Reader
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"LogHub",// Nama plug-in.
"parameter":{
"datasource":"",// Sumber data.
"column":[// Bidang.
"col0",
"col1",
"col2",
"col3",
"col4",
"C_Category",
"C_Source",
"C_Topic",
"C_MachineUUID", // Topic log.
"C_HostName", // Hostname.
"C_Path", // Jalur.
"C_LogTime" // Waktu event.
],
"beginDateTime":"",// Waktu mulai konsumsi data.
"batchSize":"",// Jumlah entri data yang dikueri dari Simple Log Service sekaligus.
"endDateTime":"",// Waktu berhenti konsumsi data.
"logstore":""// Nama Logstore tujuan.
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error yang diizinkan.
},
"speed":{
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, dan tidak ada batas laju. Jika throttle diatur ke true, batas laju diterapkan.
"concurrent":1, // Jumlah tugas konkuren.
"mbps":"12"// Batas laju dalam MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter Reader
Parameter | Description | Required | Default |
endPoint | Titik akhir Simple Log Service (SLS) adalah URL yang digunakan untuk mengakses proyek dan data log-nya. Titik akhir ditentukan oleh wilayah Alibaba Cloud tempat proyek berada dan nama proyek tersebut. Untuk daftar titik akhir layanan di setiap wilayah, lihat Service endpoints. | Yes | None |
accessId | ID AccessKey yang digunakan untuk mengakses Simple Log Service. Digunakan untuk mengidentifikasi pengguna. | Yes | None |
accessKey | Rahasia AccessKey yang digunakan untuk mengakses Simple Log Service. Digunakan untuk mengautentikasi pengguna. | Yes | None |
project | Nama proyek Simple Log Service sumber. Proyek merupakan unit manajemen sumber daya utama di Simple Log Service. | Yes | None |
logstore | Nama Logstore sumber. Logstore adalah unit untuk pengumpulan, penyimpanan, dan kueri data log di Simple Log Service. | Yes | None |
batchSize | Jumlah entri data yang dikueri dari Simple Log Service sekaligus. | No | 128 |
column | Nama kolom dalam setiap entri data. Anda dapat mengonfigurasi metadata dari Simple Log Service sebagai kolom untuk sinkronisasi. Simple Log Service mendukung metadata seperti Topic log, pengidentifikasi unik mesin, hostname, jalur, dan waktu log. Catatan Nama kolom bersifat case-sensitive. Untuk sintaks metadata, lihat Kelompok mesin Simple Log Service. | Yes | None |
beginDateTime | Waktu mulai konsumsi data, yaitu waktu kedatangan data log di LogHub (SLS). Parameter ini menentukan batas kiri rentang waktu (inklusif kiri, eksklusif kanan). Nilainya berupa string waktu dalam format yyyyMMddHHmmss (misalnya, 20180111013000) dan dapat digunakan bersama parameter penjadwalan DataWorks. Misalnya, di bagian Scheduling Configuration di sisi kanan halaman pengeditan node, Anda mengatur Parameters menjadi Catatan
| Yes | None |
endDateTime | Waktu berakhir konsumsi data. Waktu ini merupakan batas eksklusif rentang waktu. Berupa string waktu dalam format yyyyMMddHHmmss (misalnya, 20180111013010) dan dapat digunakan bersama parameter penjadwalan DataWorks. Misalnya, di bagian Scheduling Configuration di sisi kanan halaman pengeditan node, jika Anda mengatur endDateTime=${yyyymmdd} di Parameters lalu mengatur Log End Time menjadi ${endDateTime}000000, maka waktu berakhir log diatur ke pukul 00:00:00 pada hari setelah tanggal bisnis. Untuk informasi selengkapnya, lihat Format yang didukung untuk parameter penjadwalan. Penting
| Yes | None |
query | Kueri untuk memfilter data di LogHub. Anda dapat menggunakan sintaks kueri LogHub atau pernyataan SPL. SPL adalah bahasa yang digunakan SLS untuk memproses log. | Yes | None |
Jika data hilang setelah disinkronkan dari LogHub, periksa apakah bidang metadata receive_time di Konsol LogHub berada dalam rentang waktu yang ditentukan dalam konfigurasi tugas.
Contoh skrip Writer
{
"type": "job",
"version": "2.0",// Nomor versi.
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "LogHub",// Nama plug-in.
"parameter": {
"datasource": "",// Sumber data.
"column": [// Bidang.
"col0",
"col1",
"col2",
"col3",
"col4",
"col5"
],
"topic": "",// Topic yang dipilih.
"batchSize": "1024",// Jumlah catatan dalam satu batch.
"logstore": ""// Nama Logstore tujuan.
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": ""// Jumlah catatan error yang diizinkan.
},
"speed": {
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, dan tidak ada batas laju. Jika throttle diatur ke true, batas laju diterapkan.
"concurrent":3, // Jumlah tugas konkuren.
"mbps":"12"// Batas laju dalam MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Parameter Writer
Writer LogHub (SLS) menerima data dari reader melalui framework Data Integration dan mengonversi setiap bidang ke tipe STRING. Saat satu batch catatan mencapai batchSize yang ditentukan, writer mendorong seluruh batch tersebut ke LogHub (SLS) menggunakan LogService Java SDK.
Parameter | Description | Required | Default |
endpoint | Titik akhir Simple Log Service (SLS) adalah URL untuk mengakses proyek dan data log-nya. Ditentukan oleh wilayah tempat proyek berada dan nama proyek tersebut. Untuk daftar titik akhir layanan di setiap wilayah, lihat Service Endpoints. | Yes | None |
accessKeyId | AccessKeyId Simple Log Service (SLS). | Yes | None |
accessKeySecret | AccessKeySecret untuk mengakses Simple Log Service. | Yes | None |
project | Nama proyek Simple Log Service tujuan. | Yes | None |
logstore | Nama Logstore tujuan. Logstore adalah unit untuk pengumpulan, penyimpanan, dan kueri data log di Simple Log Service. | Yes | None |
topic | Nama topic Simple Log Service (SLS) target. | No | Empty string |
batchSize | Jumlah entri data per sinkronisasi dari LogHub (SLS) adalah 1.024 secara default, dengan maksimum 4.096. Catatan Ukuran data dalam satu batch tidak boleh melebihi 5 MB. Sesuaikan jumlah entri per batch berdasarkan ukuran satu entri data. | No | 1.024 |
column | Nama kolom dalam setiap entri data. | Yes | None |
Lampiran 2: Sintaks SPL untuk pemfilteran
Saat menggunakan LogHub sebagai sumber data, Anda dapat menggunakan sintaks kueri LogHub atau pernyataan SPL untuk memfilter data. SPL adalah bahasa yang digunakan SLS untuk memproses log. Bagian berikut menjelaskan sintaks tersebut.
Untuk informasi selengkapnya tentang SPL, lihat Sintaks SPL.
Use case | SQL statement | SPL statement |
Data filtering | |
|
Field processing and selection | Pilih bidang tertentu dan ubah namanya: |
|
Data normalization (by calling SQL functions) | Konversi tipe data, parsing waktu, dll.: | Konversi tipe data, parsing waktu, dll.: |
Field extraction | Ekstraksi menggunakan ekspresi reguler: Ekstraksi dari JSON: |
|