Layanan Log (SLS) mendukung pengiriman data log ke MaxCompute (ODPS) untuk penyimpanan dan analisis. Buat pekerjaan pengiriman data MaxCompute (versi baru) untuk menyiapkan pipa data.
Prasyarat
-
Anda telah membuat proyek dan penyimpanan log di Layanan Log (SLS) serta mengonfigurasi pengumpulan data. Untuk informasi selengkapnya, lihat Kelola proyek, Buat penyimpanan log dasar, dan Ikhtisar pengumpulan data.
-
Anda telah membuat tabel partisi MaxCompute (ODPS) di wilayah yang sama dengan proyek Layanan Log (SLS). Untuk informasi selengkapnya, lihat Buat tabel.
Catatan penggunaan
-
Untuk informasi tentang wilayah yang mendukung pengiriman data ke MaxCompute (ODPS), lihat Wilayah yang didukung.
-
Jika nilai field bertipe
charatauvarcharmelebihi panjang yang ditentukan, bagian yang melebihi akan dipotong saat dikirim ke MaxCompute (ODPS).Misalnya, jika batas panjang adalah 3 dan nilai field adalah
012345, nilainya menjadi012setelah dikirim ke MaxCompute (ODPS). -
Jika nilai field bertipe
string,char, atauvarcharberupa string kosong, nilainya menjadi Null setelah dikirim ke MaxCompute (ODPS). -
Nilai field bertipe
datetimeharus dalam formatYYYY-MM-DD HH:mm:ss. Beberapa spasi diperbolehkan antaraDDdanHH. Format yang tidak valid tidak menyebabkan error pengiriman, tetapi nilainya menjadi Null setelah dikirim ke MaxCompute (ODPS). -
Jika nilai field bertipe
datedalam format yang tidak valid, pekerjaan pengiriman data tidak melaporkan error, tetapi nilainya menjadi Null setelah dikirim ke MaxCompute (ODPS). -
Untuk field desimal, jika nilainya melebihi skala yang ditentukan, sistem akan membulatkannya. Jika nilainya melebihi presisi yang ditentukan, sistem akan membuang seluruh log sebagai data rusak dan menambah jumlah error.
-
Secara default, sistem membuang data rusak selama pengiriman data.
-
Jika field yang ditentukan dalam konfigurasi pengiriman tidak ada dalam log, nilainya di MaxCompute (ODPS) menjadi nilai default atau Null.
-
Jika Anda menentukan nilai default saat membuat tabel MaxCompute (ODPS), field tersebut akan diberi nilai default.
-
Jika Anda tidak menentukan nilai default tetapi kolom memperbolehkan nilai Null, nilai field menjadi Null.
-
-
Karena keterbatasan MaxCompute (ODPS), konkurensi maksimum pengiriman data adalah 64 operasi tulis. Throughput maksimum untuk satu partisi adalah 10 MB/detik.
Prosedur
Masuk ke Konsol Simple Log Service.
-
Pada bagian Projects, klik proyek yang diinginkan.
-
Pada tab , klik ikon > di sebelah kiri penyimpanan log target, lalu pilih .
-
Arahkan pointer ke MaxCompute (ODPS) lalu klik ikon +.
-
Pada panel Data Shipping to MaxCompute, konfigurasikan parameter berikut lalu klik OK.
Setelah Anda membuat pekerjaan pengiriman data, data log biasanya diimpor ke MaxCompute (ODPS) dalam waktu satu jam setelah ditulis ke penyimpanan log. Anda kemudian dapat melakukan kueri terhadap data tersebut di MaxCompute (ODPS). Untuk informasi selengkapnya, lihat Bagaimana cara memeriksa integritas data setelah dikirim dari Layanan Log ke MaxCompute?
| log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1642942213 | | 24/Jan/2022:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2022_01_23_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+
Pemetaan model data
Untuk mengirimkan log dari Layanan Log (SLS) ke tabel MaxCompute (ODPS), Anda harus memetakan model data kedua layanan tersebut. Bagian berikut menjelaskan aturan pemetaan dan memberikan contohnya.
-
Tabel MaxCompute (ODPS) harus berisi minimal satu kolom data dan satu kolom kunci partisi.
-
Kami merekomendasikan Anda menggunakan field-field reservasi Layanan Log (SLS) berikut: __partition_time__, __source__, dan __topic__.
-
Tabel MaxCompute (ODPS) dapat memiliki maksimal 60.000 partisi. Jika batas ini terlampaui, data tidak dapat ditulis ke tabel tersebut.
-
Field reservasi sistem __extract_others__ sebelumnya bernama _extract_others_. Nama lama masih didukung demi kompatibilitas.
-
Nilai kolom kunci partisi MaxCompute (ODPS) tidak boleh berupa kata reservasi atau kata kunci MaxCompute (ODPS). Untuk informasi selengkapnya, lihat Kata reservasi dan kata kunci.
-
Partisi dalam tabel partisi MaxCompute (ODPS) tidak boleh kosong. Anda harus memetakan field tertentu, seperti field reservasi sistem atau field log, ke kolom kunci partisi. Nilai field yang dipetakan tidak boleh kosong atau null. Jika field log bertipe string, nilainya harus dapat dikonversi ke tipe data kolom kunci partisi. Jika konversi gagal dan menghasilkan kunci partisi kosong, sistem akan membuang log tersebut selama pengiriman.
-
Di Layanan Log (SLS), satu field log hanya dapat dipetakan ke satu kolom di tabel MaxCompute (ODPS), baik itu kolom data maupun kolom kunci partisi. Redundansi field tidak didukung.
Tabel berikut menunjukkan contoh hubungan pemetaan antara kolom MaxCompute (ODPS) dan field Layanan Log (SLS). Untuk informasi lebih lanjut tentang field reservasi Layanan Log (SLS), lihat Field reservasi.
|
Tipe kolom MaxCompute |
Nama kolom (MaxCompute) |
Tipe data (MaxCompute) |
Nama field log (Layanan Log) |
Tipe field (Layanan Log) |
Deskripsi |
|
Kolom data |
log_source |
string |
__source__ |
Bidang yang dicadangkan |
Sumber log. |
|
log_time |
bigint |
__time__ |
Bidang yang Dicadangkan |
Waktu log dalam format Unix timestamp. Ini sesuai dengan field waktu dalam model data. |
|
|
log_topic |
string |
__topic__ |
Bidang yang Dicadangkan |
Topik log. |
|
|
time |
string |
time |
Field log |
Field yang diurai dari konten log, sesuai dengan pasangan kunci-nilai dalam model data. Dalam banyak kasus, nilai field |
|
|
ip |
string |
ip |
Bidang log |
Field yang diurai dari konten log. |
|
|
thread |
string |
thread |
Bidang Log |
Field yang diurai dari konten log. |
|
|
log_extract_others |
string |
__extract_others__ |
Bidang yang Dicadangkan |
Sistem melakukan serialisasi field log lain yang tidak dipetakan ke objek JSON key-value flat. Objek JSON bersarang tidak didukung. |
|
|
Kolom kunci partisi |
log_partition_time |
string |
__partition_time__ |
Bidang yang Dicadangkan |
Layanan Log (SLS) menghitung nilai ini dari field __time__ log lalu menyelaraskannya. Granularitas partisi dapat dikonfigurasi. |
|
status |
string |
status |
Field log |
Field yang diurai dari konten log. Nilai field ini dapat dienumerasi untuk memastikan jumlah partisi tidak melebihi batas. |
Format partisi waktu
Pengiriman data MaxCompute (versi baru) mendukung dua format partisi waktu: StrfTimeFormat dan SimpleDateFormat. Format partisi waktu hanya berlaku ketika field di kolom kunci partisi MaxCompute diatur ke __partition_time__ atau __receive_time__.
StrfTimeFormat
strftime adalah fungsi pustaka standar UNIX C yang memformat tanggal dan waktu. Fungsi ini menggunakan kode format yang diawali karakter % untuk mengonversi partisi waktu menjadi string. Misalnya, %Y_%m_%d merepresentasikan tahun, bulan, dan hari.
Jika Anda membuat pekerjaan pengiriman data MaxCompute (ODPS) baru, Anda harus menggunakan StrfTimeFormat.
|
Format partisi waktu |
Contoh partisi tabel |
|
%Y_%m_%d_%H_%M_00 |
2024_12_27_20_30_00 |
|
%Y_%m_%d_%H_%M |
2024_12_27_20_30 |
|
%Y_%m_%d_%H |
2024_12_27_20 |
|
%Y_%m_%d |
2024_12_27 |
|
%Y_%m |
2024_12 |
|
%Y |
2024 |
|
%Y%m%d%H%M |
202412272030 |
|
%Y%m%d%H |
2024122720 |
|
%Y%m%d |
20241227 |
|
%Y%m |
202412 |
SimpleDateFormat
Format waktu dalam sintaks SimpleDateFormat Java, seperti yyyy-MM-dd HH:mm. Untuk informasi selengkapnya, lihat Class SimpleDateFormat.
SimpleDateFormat didukung demi kompatibilitas mundur saat migrasi dari versi lama. Untuk tugas MaxCompute baru, gunakan StrfTimeFormat.
Tugas migrasi lama mendukung format partisi berikut:
|
Format waktu partisi |
Contoh partisi tabel |
|
yyyy-MM-ddHH:mm |
2024-12-2720-30 |
|
yyyy_MM_dd_HH_mm |
2024_12_27_20_30 |
|
yyyy_MM_dd_HH |
2024_12_27_20 |
|
yyyy-MM-dd HH:mm |
2024-12-27 20:30 |
|
yyyyMMddHHmm |
202412272030 |
|
yyyyMMddHH |
2024122720 |
|
yyyyMMdd |
20241227 |
|
yyyy_MM-dd_HH_mm |
2024_12-27_20_30 |
|
yyyy-MM-dd |
2024-12-27 |
Informasi referensi
-
Field __partition_time__
Cara umum untuk memfilter data di MaxCompute adalah menggunakan waktu log sebagai kolom kunci partisi.
-
Format
Field __partition_time__ berasal dari field __time__ di Layanan Log (SLS). Field ini menghasilkan string waktu berdasarkan zona waktu dan format waktu partisi. Untuk menghindari melebihi batas partisi untuk satu tabel MaxCompute, nilai kunci partisi tanggal disejajarkan ke interval 1800 detik (setengah jam).
Misalnya, jika waktu log di Layanan Log adalah 27/Jan/2022 20:50:13 +0800, SLS menghitung field reservasi __time__ sebagai 1643287813 (Unix timestamp). Tabel berikut menunjukkan nilai kolom kunci partisi waktu untuk konfigurasi yang berbeda.
Format waktu partisi
__partition_time__
%Y_%m_%d_%H_%M_00
2022_01_27_20_30_00
%Y_%m_%d_%H_%M
2022_01_27_20_30
%Y%m%d
20220127
-
Penggunaan
Menggunakan __partition_time__ untuk memfilter data menghindari pemindaian seluruh tabel. Misalnya, untuk mengkueri data log tanggal 26 Desember 2024:
select * from {ODPS_TABLE_NAME} where log_partition_time >= "2024_12_26" and log_partition_time < "2024_12_27";
-
-
Field
__receive_time__Cara umum untuk memfilter data di MaxCompute adalah menggunakan waktu kedatangan log sebagai kolom kunci partisi.
-
Format
Format waktu partisi
__receive_time__
%Y_%m_%d_%H_%M_00
2022_01_27_20_30_00
%Y_%m_%d_%H_%M
2022_01_27_20_30
%Y%m%d
20220127
-
-
Field __extract_others__ dan __extract_others_all__
-
Field __extract_others__ berisi semua field yang tidak dipetakan dari field log, tidak termasuk __topic__, __tag__:*, dan __source__.
-
Field __extract_others_all__ berisi semua field yang tidak dipetakan dari field log, termasuk __topic__, __tag__:*, dan __source__.
-
Mode pengiriman
Pengiriman data MaxCompute (versi baru) mendukung dua mode pengiriman: pengiriman real-time dan pengiriman batch.
-
Real-time shipping: Langsung membaca data dari Logstore dan mengirimkannya ke MaxCompute.
-
Batch shipping: Membaca data dari Logstore yang tiba 5 hingga 10 menit lalu dan mengirimkannya ke MaxCompute.
Jika Anda mengatur Shipping mode ke Batch shipping, sejajarkan Start Time atau End Time di Start Time Range ke interval 5 menit. Misalnya,
2022-05-24 16:35:00adalah pengaturan yang valid, tetapi2022-05-24 16:36:00adalah pengaturan yang tidak valid.Pengiriman batch juga mendukung pengiriman field __receive_time__. Field __receive_time__ menunjukkan waktu saat log diterima oleh Layanan Log (SLS). Atur formatnya menggunakan format partisi waktu. Presisi maksimum adalah setengah jam. Untuk informasi selengkapnya tentang format partisi waktu, lihat Format partisi waktu.
Jika Anda ingin mengirimkan field ini, tambahkan ke MaxCompute partition key column.
untuk membukanya, seperti yang ditunjukkan pada gambar berikut: