All Products
Search
Document Center

:Ikhtisar

Last Updated:Nov 09, 2025

LogHub Shipper untuk Tablestore (LogHub Shipper) membersihkan dan mengonversi data di Log Service, lalu menulis data tersebut ke tabel data di Tablestore. LogHub Shipper diterbitkan ke Alibaba Cloud Container Hub oleh Tablestore menggunakan metode gambar Docker dan berjalan pada instance Elastic Compute Service (ECS) berdasarkan Alibaba Cloud Container Service for Kubernetes (ACK).

Pengenalan

Log Service menyimpan data dalam format JSON dan menggunakan grup log sebagai unit dasar untuk operasi baca dan tulis data. Untuk informasi lebih lanjut tentang grup log, lihat Istilah. Oleh karena itu, Anda tidak dapat melakukan query dan menganalisis log di Log Service berdasarkan kondisi tertentu. Sebagai contoh, Anda tidak dapat melakukan query dan menganalisis data log aplikasi dalam 12 jam terakhir.

LogHub Shipper mengonversi data log di Log Service menjadi data terstruktur, lalu menulis data tersebut ke tabel data di Tablestore secara real-time. Ini memberikan layanan online yang akurat dan berperforma tinggi secara real-time.

Contoh data

Sebagai contoh, Log Service berisi data log dalam format berikut:

{"__time__":1453809242,"__topic__":"","__source__":"47.100.XX.XX","ip":"47.100.XX.XX","time":"26/Jan/2016:19:54:02 +0800","url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0U***45A&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1","status":"200","user-agent":"aliyun-sdk-java"}

LogHub Shipper menulis data tersebut ke tabel data Tablestore dengan kolom kunci utama ip dan time dalam format berikut.

iptimesourcestatususer-agenturl
47.100.XX.XX26/Jan/2016:19:54:02 +080047.100.XX.XX200aliyun-sdk-javaPOST /PutData…

Dengan cara ini, Anda dapat mengambil data historis dari alamat IP tertentu berdasarkan titik waktu tertentu di tabel data Tablestore dengan cara yang efisien dan akurat.

LogHub Shipper menyediakan aturan pemetaan data yang fleksibel. Anda dapat mengonfigurasi pemetaan antara bidang data log dan kolom atribut tabel data serta mengonversi data tersebut secara efisien.

Istilah

Istilah layanan terkait

Sebelum menggunakan LogHub Shipper, Anda perlu memahami istilah layanan terkait. Tabel berikut menjelaskan istilah tersebut.

LayananIstilah
Log Service
Tablestore
ECSBayar sesuai penggunaan dan Langganan
ACKNode, Aplikasi, Layanan, dan Kontainer

Saat Anda menentukan jumlah kontainer dalam satu LogHub Shipper, kami merekomendasikan agar Anda menentukan angka yang kurang dari atau sama dengan jumlah shard di Logstore yang sesuai.

Resource Access Management (RAM)Pengguna RAM

Kami merekomendasikan agar Anda memberi otorisasi kepada pengguna RAM dari LogHub Shipper hanya untuk membaca data dari Logstore dan menulis data ke Tablestore.

Tabel data

Tabel data menyimpan data log yang telah dibersihkan dan dikonversi.

Saat menggunakan tabel data, perhatikan hal-hal berikut:

  • Anda perlu membuat tabel data secara manual untuk menyimpan data log yang telah dibersihkan dan dikonversi. LogHub Shipper tidak secara otomatis membuat tabel data.
  • Jika Log Service dan Tablestore tersedia, latensi antara waktu log masuk ke Log Service dan waktu log ditulis ke Tablestore adalah ratusan milidetik.
  • Jika Tablestore tidak tersedia, LogHub Shipper akan menunggu hingga 500 milidetik dan mencoba lagi.
  • LogHub Shipper secara berkala mencatat checkpoint persisten.
  • Jika LogHub Shipper tidak tersedia karena masalah seperti peningkatan, LogHub Shipper akan melanjutkan konsumsi log dari checkpoint terakhir setelah pemulihan.
  • Kami merekomendasikan agar Anda memastikan bahwa log yang berbeda di Logstore yang sama ditulis ke baris yang berbeda di tabel data. Hal ini memastikan konsistensi akhir antara tabel data dan Logstore bahkan ketika LogHub Shipper mencoba kembali konsumsi data.
  • LogHub Shipper menulis data ke tabel data menggunakan operasi UpdateRow dari Tablestore. Oleh karena itu, beberapa LogHub Shipper dapat menulis data ke tabel data yang sama. Dalam kasus ini, kami merekomendasikan agar Anda memastikan bahwa LogHub Shipper menulis data ke kolom atribut yang berbeda.

Tabel status

LogHub Shipper menggunakan tabel status yang Anda buat di Tablestore untuk memberikan informasi terkait.

Saat menggunakan tabel status, perhatikan hal-hal berikut:

  • Beberapa LogHub Shipper dapat berbagi tabel status yang sama.
  • Saat tidak ada kesalahan, setiap kontainer LogHub Shipper menambahkan catatan ke tabel status setiap 5 menit.
  • Saat terjadi kesalahan tetapi Tablestore masih tersedia, kontainer LogHub Shipper segera menambahkan catatan ke tabel status.
  • Kami merekomendasikan agar Anda menentukan waktu hidup (TTL) level hari untuk tabel status. Dengan cara ini, tabel status hanya menyimpan data terbaru.

Tabel status berisi empat kolom kunci utama berikut:

  • project_logstore: Tipe String. Proyek dan Penyimpanan log dari Log Service yang dipisahkan oleh tanda vertikal (|).
  • shard: Tipe Integer. Nomor shard di Log Service.
  • target_table: Tipe String. Nama tabel data yang menyimpan data log yang telah dibersihkan dan dikonversi.
  • timestamp: Tipe Integer. Waktu saat kontainer LogHub Shipper menambahkan catatan ke tabel status. Nilainya adalah timestamp UNIX. Satuan: milidetik.

Kolom atribut berikut mencatat status impor data. Semua kolom atribut dari satu baris di tabel status bersifat opsional dan mungkin tidak ada.

  • shipper_id: Tipe String. ID kontainer LogHub Shipper. Ini adalah nama host kontainer.
  • error_code: Tipe String. Kode kesalahan yang ditentukan di Tablestore. Jika tidak ada kesalahan, kolom atribut ini tidak ada. Untuk informasi lebih lanjut, lihat Kode kesalahan.
  • error_message: Tipe String. Pesan kesalahan spesifik yang dikembalikan di Tablestore. Jika tidak ada kesalahan, kolom atribut ini tidak ada.
  • failed_sample: Tipe String. Log yang dilaporkan kesalahan. Nilainya adalah string JSON.
  • __time__: Tipe Integer. Nilai maksimum dari bidang __time__ data log yang ditulis oleh kontainer LogHub Shipper ke Tablestore setelah pembaruan terakhir tabel status oleh kontainer. Untuk informasi lebih lanjut, lihat Istilah.
  • row_count: Tipe Integer. Jumlah log yang ditulis oleh kontainer LogHub Shipper ke Tablestore setelah pembaruan terakhir tabel status oleh kontainer.
  • cu_count: Tipe Integer. Jumlah unit kapasitas (CU) yang dikonsumsi oleh kontainer LogHub Shipper setelah pembaruan terakhir tabel status oleh kontainer. Untuk informasi lebih lanjut, lihat Melalui baca/tulis.
  • skip_count: Tipe Integer. Jumlah log yang dibersihkan oleh kontainer LogHub Shipper setelah pembaruan terakhir tabel status oleh kontainer.
  • skip_sample: Tipe String. Salah satu log yang dibuang oleh kontainer LogHub Shipper setelah pembaruan terakhir tabel status oleh kontainer. Nilainya adalah string JSON. Log kontainer mencatat setiap log yang dibuang dan alasan pembuangan log tersebut.

Konfigurasi

Saat membuat LogHub Shipper, Anda perlu menentukan variabel lingkungan berikut untuk kontainer:

  • access_key_id dan access_key_secret: ID AccessKey dan Rahasia AccessKey dari akun Alibaba Cloud yang digunakan oleh LogHub Shipper.
  • loghub: konfigurasi Log Service yang diperlukan oleh LogHub Shipper. Nilainya adalah objek JSON yang terdiri dari parameter berikut:
    • endpoint
    • logstore
    • consumer_group
  • tablestore: konfigurasi Tablestore yang diperlukan oleh LogHub Shipper. Nilainya adalah objek JSON yang terdiri dari parameter berikut:
    • endpoint: titik akhir wilayah tempat instans Tablestore berada.
    • instance: nama instans Tablestore.
    • target_table: nama tabel data. Tabel data harus berada di instans yang ditentukan.
    • status_table: nama tabel status. Tabel status harus berada di instans yang ditentukan.
  • exclusive_columns: daftar hitam kolom atribut. Nilainya adalah array JSON yang terdiri dari string JSON.

    Jika Anda menentukan variabel lingkungan, LogHub Shipper tidak akan menulis bidang yang ditentukan ke tabel data sebagai kolom atribut. Sebagai contoh, tabel data berisi kunci utama A, variabel lingkungan exclusive_columns diatur ke ["B", "C"], dan sebuah log berisi tiga bidang: A, B, dan D. Lalu, satu baris ditulis ke tabel data. Baris tersebut berisi kunci utama A dan kolom atribut D. Bidang C tidak ada di log. Oleh karena itu, LogHub Shipper tidak menulis Kolom C ke tabel data. Bidang B ada di log, tetapi Kolom B ditentukan sebagai kolom eksklusif. Oleh karena itu, LogHub Shipper tidak menulis Kolom B ke tabel data.

  • transform: konversi sederhana. Nilainya adalah objek JSON. Kunci dalam variabel adalah nama kolom di tabel data. Kolom tersebut bisa berupa kolom kunci utama. Nilainya adalah ekspresi konversi sederhana yang ditentukan oleh LogHub Shipper berdasarkan aturan berikut:
    • Bidang log adalah ekspresi.
    • Integer tanpa tanda adalah ekspresi.
    • String dalam tanda kutip ganda adalah ekspresi. String dapat berisi karakter escape \" dan \\\\.
    • ( func arg... ) juga merupakan ekspresi. Nol atau beberapa spasi atau tab dapat ada sebelum dan sesudah tanda kurung. Setidaknya satu spasi ada antara func dan parameter yang mengikuti func, dan antara parameter yang berbeda. Setiap parameter harus berupa ekspresi. Sistem mendukung fungsi berikut:
      • ->int: mengonversi string menjadi integer. Fungsi ini memerlukan dua parameter. Parameter pertama adalah basis, yang dapat berupa 2 hingga 36. Parameter kedua adalah string yang ingin Anda konversi. Huruf dalam parameter kedua tidak peka huruf besar/kecil dan menunjukkan angka yang lebih besar dari angka desimal 10 hingga 35.
      • ->bool: mengonversi string menjadi nilai Boolean. Fungsi ini memerlukan satu parameter yang nilainya adalah string yang ingin Anda konversi. "true" sesuai dengan nilai true dan "false" sesuai dengan nilai false. String lain dianggap tidak valid.
      • crc32: menghitung CRC32 untuk string dan mengembalikan hasilnya sebagai nilai Integer. Fungsi ini memerlukan satu parameter yang nilainya adalah string yang ingin Anda hitung.

Jika log hilang atau terjadi kesalahan selama konversi, kolom yang sesuai dengan kunci dianggap sebagai kolom yang hilang. Jika terjadi kesalahan, log kontainer mencatat detail kesalahan.

Pembersihan data hanya mengikuti aturan berikut: Jika kolom kunci utama hilang, LogHub Shipper membersihkan log yang sesuai.