Mengirim volume besar data log melalui jaringan meningkatkan latensi dan biaya. Simple Log Service mendukung kompresi lz4 untuk operasi API tertentu, sehingga mengurangi lalu lintas jaringan dan meningkatkan throughput tanpa kehilangan data.
Kompres data permintaan
Operasi API berikut menerima data terkompresi lz4 dalam badan permintaan HTTP:
PutLogs (PutLogStoreLogs)
PutWebtracking
Untuk mengirim data terkompresi:
Tambahkan
x-log-compresstype: lz4ke header permintaan HTTP.Kompres badan permintaan HTTP menggunakan lz4.
Atur
x-log-bodyrawsizedalam header permintaan ke ukuran badan sebelum dikompresi.Atur
Content-Lengthdalam header permintaan ke ukuran badan setelah dikompresi.
Menerima data terkompresi
Operasi API PullLogs dapat mengembalikan data terkompresi lz4.
Untuk menerima data terkompresi:
Atur
Accept-Encoding: lz4dalam header permintaan. Server akan mengembalikan data terkompresi lz4.Baca
x-log-bodyrawsizedari header respons untuk mendapatkan ukuran badan sebelum dikompresi. Berikan nilai ini ke fungsi dekompresi Anda.
Contoh
-
Log mentah
Contoh berikut menggunakan file log-sample.json sebagai input sampel. Ganti file ini dengan data log aktual Anda saat memanggil API.
{ "__tags__": {}, "__topic__": "", "__source__": "47.100.XX.XX", "__logs__": [ { "__time__": "03/22 08:51:01", "content": "*************** RSVP Agent started ***************", "method": "main", "level": "INFO" }, { "__time__": "03/22 08:51:01", "content": "Specified configuration file: /u/user10/rsvpd1.conf", "method": "locate_configFile", "level": "INFO" }, { "__time__": "03/22 08:51:01", "content": "Using log level 511", "method": "main", "level": "INFO" }, { "__time__": "03/22 08:51:01", "content": "Get TCP images rc - EDC8112I Operation not supported on socket", "method": "settcpimage", "level": "INFO" }, { "__time__": "03/22 08:51:01", "content": "Associate with TCP/IP image name = TCPCS", "method": "settcpimage", "level": "INFO" }, { "__time__": "03/22 08:51:02", "content": "registering process with the system", "method": "reg_process", "level": "INFO" }, { "__time__": "03/22 08:51:02", "content": "attempt OS/390 registration", "method": "reg_process", "level": "INFO" }, { "__time__": "03/22 08:51:02", "content": "return from registration rc=0", "method": "reg_process", "level": "INFO" } ] } -
Program uji
Kode Python berikut mengompres file sampel dan mencetak rasio kompresi:
from lz4 import block with open('log-sample.json', 'rb') as f: data = f.read() compressed = block.compress(data, store_size=False) # Kompres print(f'out/in: {len(compressed)}/{len(data)} Bytes') print(f'Rasio kompresi: {len(compressed)/len(data):.2%}') -
Hasil kompresi
Untuk file log-sample.json, rasio kompresinya adalah 39,30%. Hasil aktual bervariasi tergantung konten—data dengan lebih banyak pengulangan akan terkompresi lebih efisien.
out/in: 542/1379 Bytes Rasio kompresi: 39,30%