All Products
Search
Document Center

DataWorks:Sumber data LogHub (SLS)

Last Updated:Mar 07, 2026

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.

  1. 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.

  2. 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 AliyunLogFullAccess dan AliyunLogReadOnlyAccess. Untuk informasi selengkapnya, lihat Buat Pengguna RAM dan berikan izin.

      Catatan

      Setelah kebijakan sistem AliyunLogFullAccess dan AliyunLogReadOnlyAccess diberikan 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 RAM console > Permissions > Policies 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.

Catatan

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

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

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 beginDateTime=${yyyymmdd-1}. Lalu, Anda mengatur Log Start Time menjadi ${beginDateTime}000000. Ini berarti waktu mulai log adalah pukul 00:00:00 pada hari sebelum tanggal bisnis. Untuk informasi selengkapnya, lihat Format yang didukung untuk parameter penjadwalan.

Catatan
  • beginDateTime dan endDateTime harus digunakan bersamaan.

  • Jika perlu menyinkronkan semua data, Anda dapat mengatur beginDateTime ke waktu mulai data dan endDateTime ke hari ini. Namun, hal ini dapat mengonsumsi banyak sumber daya karena volume datanya besar. Anda harus menyesuaikan spesifikasi kelompok sumber daya accordingly.

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
  • Nilai endDatetime harus lebih awal dari (2038-01-19 11:14:07 +8:00). Jika tidak, Anda mungkin tidak dapat mengambil data.

  • endDateTime siklus sebelumnya harus sama dengan atau lebih lambat dari beginDateTime siklus berikutnya. Jika tidak, data dalam beberapa rentang mungkin gagal ditarik.

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

Catatan

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

Catatan

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.

Catatan

Untuk informasi selengkapnya tentang SPL, lihat Sintaks SPL.

Use case

SQL statement

SPL statement

Data filtering

SELECT * WHERE Type='write'
  • Filter berdasarkan kondisi.

    | where Type='write'
  • Pencarian fuzzy.

    | where Type like '%write%'
  • Ekspresi reguler.

    | where regexp_like(server_protocol, '\d+')
  • Lebih lanjut (ekspresi SQL).

    | where <sql-expr> 

Field processing and selection

Pilih bidang tertentu dan ubah namanya:

SELECT "__tag__:node" AS node, path
  • Pilih bidang tertentu dan ubah namanya.

    | project node="__tag__:node", path
  • Pilih bidang berdasarkan pola.

    | project -wildcard "__tag__:*"
  • Ubah nama beberapa bidang tanpa memengaruhi bidang lainnya.

    | project-rename node="__tag__:node"
  • Kecualikan bidang berdasarkan pola.

    | project-away -wildcard "__tag__:*"

Data normalization

(by calling SQL functions)

Konversi tipe data, parsing waktu, dll.:

SELECT 
  CAST(Status AS BIGINT) AS Status, 
  date_parse(Time, '%Y-%m-%d %H:%i') AS Time

Konversi tipe data, parsing waktu, dll.:

| extend Status=cast(Status as BIGINT), extend Time=date_parse(Time, '%Y-%m-%d %H:%i')

Field extraction

Ekstraksi menggunakan ekspresi reguler:

SELECT 
  CAST(Status AS BIGINT) AS Status, 
  date_parse(Time, '%Y-%m-%d %H:%i') AS Time

Ekstraksi dari JSON:

SELECT 
  CAST(Status AS BIGINT) AS Status, 
  date_parse(Time, '%Y-%m-%d %H:%i') AS Time
  • Ekstraksi dengan ekspresi reguler: satu kecocokan.

    | parse-regexp protocol, '(\w+)/(\d+)' as scheme, version
  • Ekstrak dari JSON: perluas semua.

    | parse-json -path='$.0' content
  • Ekstraksi dari CSV.

    | parse-csv -delim='^_^' content as ip, time, host