Topik ini menjelaskan cara menggunakan petunjuk untuk versi baru transformasi data beserta contohnya.
pack-fields
Petunjuk ini mengemas beberapa field ke dalam field baru sebagai string serialisasi JSON. Petunjuk ini berguna dalam skenario yang memerlukan transmisi terstruktur, seperti pembuatan badan permintaan API.
Secara default, field yang bukan bertipe Varchar tidak diproses, termasuk field
__time__dan__time_ns_part__.Secara default, data sumber tidak disimpan.
Sintaks
| pack-fields -keep -ltrim -include=<include> -exclude=<exclude> as <output>Parameter
Parameter | Tipe | Wajib | Deskripsi |
output | String | Ya | Nama field output setelah pengemasan. Nilai field berada dalam format JSON. |
include | RegExp | Tidak | Konfigurasi daftar putih. Field yang sesuai dengan ekspresi reguler akan dikemas. Nilai default adalah ".*", yang cocok dengan semua field. Untuk informasi selengkapnya, lihat Regular expressions. |
exclude | RegExp | Tidak | Konfigurasi blacklist, yang memiliki prioritas lebih tinggi daripada daftar putih. Field yang sesuai dengan ekspresi reguler tidak akan dikemas. Nilai default kosong, yang berarti tidak ada pencocokan yang dilakukan. Untuk informasi selengkapnya, lihat Regular expressions. |
ltrim | String | Tidak | Menghapus awalan dari nama field output. |
keep | Bool | Tidak | Menentukan apakah data sumber disimpan setelah pengemasan. True: Menyimpan data sumber yang dikemas dalam output. False (default): Tidak menyimpan data sumber yang dikemas dalam output. |
Contoh
Contoh 1: Mengemas semua field log ke dalam field test. Secara default, field asli yang dikemas dihapus.
Pernyataan SPL
* | pack-fields -include='\w+' as testData masukan
test1:123 test2:456 test3:789Output
test:{"test1": "123", "test2": "456", "test3": "789"}
Contoh 2: Mengemas semua field log ke dalam field test tanpa menghapus field asli yang dikemas.
Pernyataan SPL
* | pack-fields -keep -include='\w+' as testData masukan
test1:123 test2:456 test3:789Output
test:{"test1": "123", "test2": "456", "test3": "789"} test1:123 test2:456 test3:789
Contoh 3: Mengemas field test dan abcd ke dalam field content serta menyimpan field aslinya.
Pernyataan SPL
* | pack-fields -keep -include='\w+' as contentData masukan
abcd@#%:123 test:456 abcd:789Output
abcd:789 abcd@#%:123 content:{"test": "456", "abcd": "789"} test:456
Contoh 4: Mengemas semua field kecuali field test dan abcd ke dalam field content serta menghapus field asli yang dikemas.
Pernyataan SPL
* | pack-fields -exclude='\w+' as contentData masukan
abcd@#%:123 test:456 abcd:789Output
abcd:789 content:{"abcd@#%": "123"} test:456
Contoh 5: Mengekstrak semua pasangan kunci-nilai yang sesuai dengan ekspresi reguler tertentu dari nilai field, lalu mengemasnya ke dalam field name.
Pernyataan SPL
* | parse-kv -prefix='k_' -regexp dict, '(\w+):(\w+)' | pack-fields -include='k_.*' -ltrim = 'k_' as nameData masukan
dict: x:123, y:456, z:789Output
dict:x:123, y:456, z:789 name:{"x": "123", "y": "456", "z": "789"}
log-to-metric
Petunjuk ini mengubah log menjadi format yang diperlukan untuk menyimpan data deret waktu.
Secara default, data log yang tidak memenuhi persyaratan untuk Metric diabaikan.
Unit waktu dari field timestamp dalam data log mentah dideteksi secara otomatis. Unit yang didukung meliputi detik, milidetik, mikrodetik, dan nanodetik.
Penulisan berbasis hash digunakan secara default.
Sintaks
| log-to-metric -wildcard -format -names=<names> -labels=<labels> -time_field=<time_field> -buckets=<buckets>Parameter
Parameter | Tipe | Wajib | Deskripsi |
wildcard | Bool | Tidak | Menentukan apakah pencocokan wildcard diaktifkan untuk nama field yang ditentukan oleh Secara default, pencocokan field eksak digunakan. Untuk mengaktifkan pencocokan wildcard, tambahkan parameter ini. |
format | Bool | Tidak | Menentukan apakah pemformatan otomatis diaktifkan. Secara default, ini dinonaktifkan, dan data label yang tidak valid dilewati selama transformasi. Jika diaktifkan, data label yang tidak valid diformat. Nilai label tidak boleh mengandung karakter seperti |
names | FieldList | Ya | Daftar field log yang digunakan untuk menghasilkan titik data metric yang sesuai. Jika field dalam data masukan sesuai dengan setidaknya satu nama field atau pola wildcard yang ditentukan, titik data metric dihasilkan untuk field tersebut. Nama metric adalah nama field, dan nilai metric adalah nilai field. Sebagai contoh, Penting
Untuk format data deret waktu, lihat Time series data (metric). |
labels | FieldList | Tidak | Daftar field log yang digunakan untuk membangun informasi label deret waktu yang sesuai. Jika field dalam data masukan sesuai dengan setidaknya satu nama field atau pola wildcard yang ditentukan, field tersebut ditambahkan ke label titik data. Nama label adalah nama field, dan nilai label adalah nilai field. Sebagai contoh, Penting
Untuk format data deret waktu, lihat Time series data (metric). |
time_field | String | Tidak | Field waktu untuk data deret waktu. Secara default, field Penting Field masukan harus berupa timestamp. Tipe data yang sesuai harus BIGINT atau VARCHAR. Jika field bertipe teks VARCHAR, nilainya harus dapat dikonversi ke tipe BIGINT yang valid. |
buckets | Integer | Tidak | Nilai default adalah 32. Atur parameter ini ke jumlah shard target. Parameter ini menyesuaikan rentang hash untuk mengoptimalkan kinerja penulisan operator log-to-metric. Parameter ini mengontrol jumlah bucket hash, yang memengaruhi distribusi data dan kinerja kueri di metricstore. |
Contoh
Contoh 1: Mengubah log yang berisi field rt ke dalam format data deret waktu.
Pernyataan SPL
* | log-to-metric -names='["rt"]'Data masukan
__time__: 1614739608 rt: 123Output
__labels__: __name__:rt __time_nano__:1614739608 __value__:123
Contoh 2: Mengubah log yang berisi field rt ke dalam format data deret waktu, serta menggunakan field host sebagai label baru.
Pernyataan SPL
* | log-to-metric -names='["rt"]' -labels='["host"]'Data masukan
__time__: 1614739608 rt: 123 host: myhostOutput
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123
Contoh 3: Mengubah log yang berisi field
rtdanqpske dalam format data deret waktu serta menggunakan field host sebagai label.Pernyataan SPL
* | log-to-metric -names='["rt", "qps"]' -labels='["host"]'Data masukan
__time__: 1614739608 rt: 123 qps: 10 host: myhostOutput
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost __name__:qps __time_nano__:1614739608 __value__:10
Contoh 4: Menggunakan pencocokan wildcard untuk mengubah log yang berisi field rt1 dan rt2 ke dalam format data deret waktu, serta menggunakan field host sebagai label baru.
Pernyataan SPL
* | log-to-metric -wildcard -names='["rt*"]' -labels='["host"]'Data masukan
__time__: 1614739608 rt1: 123 rt2: 10 host: myhostOutput
__labels__:host#$#myhost __name__:rt1 __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost __name__:rt2 __time_nano__:1614739608 __value__:10
Contoh 5: Mengubah log yang berisi field
rtdanqpske dalam format data deret waktu, menggunakan fieldhostsebagai label baru, serta memformat nilai label baru secara otomatis.Pernyataan SPL
* | log-to-metric -format -names='["rt", "qps"]' -labels='["host"]'Data masukan
__time__: 1614739608 rt: 123 qps: 10 host: myhost1|myhost2Output
__labels__:host#$#myhost1_myhost2 __name__:rt __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost1_myhost2 __name__:qps __time_nano__:1614739608 __value__:10
Contoh 6: Mengubah log yang berisi field
rtdanqpske dalam format data deret waktu. Field tersebut diganti namanya menjadimax_rtdantotal_qps, serta menggunakan fieldhostsebagai label baru.Pernyataan SPL
* | project-rename max_rt = rt, total_qps = qps| log-to-metric -names='["max_rt", "total_qps"]' -labels='["host"]'Data masukan
__time__: 1614739608 rt: 123 qps: 10 host: myhostOutput
__labels__:host#$#myhost __name__:max_rt __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost __name__:total_qps __time_nano__:1614739608 __value__:10
Contoh 7: Mengubah log yang berisi field
rtdanqpske dalam format data deret waktu. Field-field tersebut diganti namanya menjadi max_rt dan total_qps, sedangkan field host diganti namanya menjadi hostname untuk dijadikan label baru.Pernyataan SPL
* | project-rename max_rt = rt, total_qps = qps, hostname=host| log-to-metric -names='["max_rt", "total_qps"]' -labels='["hostname"]'Data masukan
__time__: 1614739608 rt: 123 qps: 10 host: myhostOutput
__labels__:hostname#$#myhost __name__:max_rt __time_nano__:1614739608 __value__:123 __labels__:hostname#$#myhost __name__:total_qps __time_nano__:1614739608 __value__:10
Contoh 8: Mengubah log yang berisi field remote_user ke dalam format data deret waktu. Gunakan field status sebagai label baru dan field time sebagai timestamp untuk data deret waktu.
Pernyataan SPL
* | log-to-metric -names='["remote_user"]' -labels='["status"]' -time_field='time'Data masukan
time:1652943594 remote_user:89 request_length:4264 request_method:GET status:200Output
__labels__:status#$#200 __name__:remote_user __time_nano__:1652943594 __value__:89
metric-to-metric
Petunjuk ini melakukan transformasi lebih lanjut pada data deret waktu yang sudah ada dengan menambahkan, memodifikasi, atau menghapus label.
Nama field masukan harus sesuai dengan ekspresi reguler
[a-zA-Z_][a-zA-Z0-9_]*. Jika tidak, label titik deret waktu yang dihasilkan tidak akan menyertakan field ini.Jika ketiga parameter opsi berisi field yang sama, prioritasnya adalah sebagai berikut: add_labels > del_labels > rename_labels.
Untuk informasi selengkapnya tentang format output data deret waktu, lihat Time series data (metric).
Sintaks
| metric-to-metric -format -add_labels=<add_labels> -del_labels=<del_labels> -rename_labels=<rename_labels> -buckets=<buckets>Parameter
Parameter | Tipe | Wajib | Deskripsi |
add_labels | Array | Tidak | Daftar field label yang akan ditambahkan. Ini digunakan untuk membangun informasi label deret waktu baru. Menambahkan data mentah ke label titik deret waktu. Hanya tipe VARCHAR yang didukung. Sebagai contoh, jika data mentah adalah |
del_labels | Array | Tidak | Daftar field label yang akan dihapus. Ini digunakan untuk membangun informasi label deret waktu baru. Jika nama field dalam masukan sesuai dengan nama field dalam label asli, field yang sesuai dihapus dari label asli. Sebagai contoh, jika nilai label asli adalah |
rename_labels | Map | Tidak | Daftar field label yang akan diganti namanya. Ini digunakan untuk membangun informasi label deret waktu baru. Memperbarui label titik deret waktu asli berdasarkan informasi map. Kunci adalah nama field asli, dan nilai adalah nama field baru. Sebagai contoh, |
format | Bool | Tidak | Menentukan apakah pemformatan otomatis diaktifkan. Secara default, ini dinonaktifkan, dan data yang tidak valid dilewati selama transformasi. Jika diaktifkan:
|
buckets | Integer | Tidak | Nilai default adalah 32. Atur parameter ini ke jumlah shard target. Parameter ini menyesuaikan rentang hash untuk mengoptimalkan kinerja penulisan operator metric-to-metric. Parameter ini mengontrol jumlah bucket hash, yang memengaruhi distribusi data dan kinerja kueri di metricstore. |
Contoh
Contoh 1: Menambahkan label.
Pernyataan SPL
* | extend qps = '10'|metric-to-metric -add_labels='["qps"]'Data masukan
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123Output
__labels__:host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123
Contoh 2: Menghapus label.
Pernyataan SPL
* | metric-to-metric -del_labels='["qps"]'Data masukan
__labels__:host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123Output
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123
Contoh 3: Mengganti nama label.
Pernyataan SPL
* | metric-to-metric -rename_labels='{"host":"etl_host"}'Data masukan
__labels__:host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123Output
__labels__:etl_host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123
Contoh 4: Memformat data yang tidak valid.
Pernyataan SPL
* | metric-to-metric -formatData masukan
__labels__:host#$#myhost|qps#$#10|asda$cc#$#j|ob|schema#$#|#$#|#$#xxxx __name__:rt __time_nano__:1614739608 __value__:123Output
__labels__:asda_cc#$#j|host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123