All Products
Search
Document Center

Simple Log Service:Petunjuk transformasi data (versi baru)

Last Updated:Mar 21, 2026

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.

Penting
  • 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 test
    • Data masukan

      test1:123
      test2:456
      test3:789
    • Output

      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 test
    • Data masukan

      test1:123
      test2:456
      test3:789
    • Output

      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 content
    • Data masukan

      abcd@#%:123
      test:456
      abcd:789
    • Output

      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 content
    • Data masukan

      abcd@#%:123
      test:456
      abcd:789
    • Output

      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 name
    • Data masukan

      dict: x:123, y:456, z:789
    • Output

      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.

Penting
  • 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 names dan labels.

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 "|", "#", atau "$". Jika mengandung karakter tersebut, karakter tersebut diganti dengan garis bawah (_).

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, ["mem","mem:pct"] menghasilkan dua titik data bernama mem dan mem:pct.

Penting
  • Nama field masukan harus sesuai dengan ekspresi reguler [a-zA-Z_:][a-zA-Z0-9_:]*. Jika tidak, tidak ada titik data yang dihasilkan untuk field tersebut.

  • Nilai field masukan harus memenuhi salah satu persyaratan berikut. Jika tidak, tidak ada titik data yang dihasilkan untuk field tersebut:

    • Field bertipe numerik: TINYINT, SMALLINT, INTEGER, BIGINT, HUGEINT, REAL, atau DOUBLE.

    • Field bertipe teks VARCHAR, dan nilainya dapat dikonversi ke tipe DOUBLE yang valid.

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, ["host","ip"] menambahkan dua label deret waktu, host dan ip, dengan nilai field aslinya.

Penting
  • Nama field masukan harus sesuai dengan ekspresi reguler [a-zA-Z_][a-zA-Z0-9_]*. Jika tidak, label titik data yang dihasilkan tidak akan menyertakan field ini.

  • Nilai field masukan tidak boleh mengandung VERTICAL LINE (|). Jika mengandung, label titik data yang dihasilkan tidak akan menyertakan field ini.

  • Field masukan harus bertipe teks VARCHAR. Jika tidak, label yang sesuai tidak dihasilkan.

Untuk format data deret waktu, lihat Time series data (metric).

time_field

String

Tidak

Field waktu untuk data deret waktu. Secara default, field __time__ dari log digunakan sebagai field waktu untuk data deret waktu.

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: 123
    • Output

      __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: myhost
    • Output

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Contoh 3: Mengubah log yang berisi field rt dan qps ke 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: myhost
    • Output

      __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: myhost
    • Output

      __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 rt dan qps ke dalam format data deret waktu, menggunakan field host sebagai 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|myhost2
    • Output

      __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 rt dan qps ke dalam format data deret waktu. Field tersebut diganti namanya menjadi max_rt dan total_qps, serta menggunakan field host sebagai 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: myhost
    • Output

      __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 rt dan qps ke 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: myhost
    • Output

      __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:200
    • Output

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

Penting
  • 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 {"host":"http://www.xxx.com", "ip":"127.0.0.1"} dan Anda memasukkan ["host", "ip"], |host#$#http://www.xxx.com|ip#$#127.0.0.1 ditambahkan ke label asli. Jika label asli sudah berisi field host, nilainya akan ditimpa.

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 host#$#http://www.xxx.com|ip#$#127.0.0.1, memasukkan ["ip"] menentukan penghapusan label deret waktu dan memperbarui label asli menjadi host#$#http://www.xxx.com. Jika label asli tidak berisi field ip, tidak ada tindakan yang dilakukan.

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, {"host":"host_new", "ip":"ip_new"} mengganti nama "host" menjadi "host_new" dan "ip" menjadi "ip_new". Jika label asli tidak berisi field yang sesuai, tidak ada operasi yang dilakukan.

format

Bool

Tidak

Menentukan apakah pemformatan otomatis diaktifkan. Secara default, ini dinonaktifkan, dan data yang tidak valid dilewati selama transformasi.

Jika diaktifkan:

  • __labels__ diurutkan.

  • LabelKey dan LabelValue diformat.

    • LabelKey: Harus sesuai dengan ekspresi reguler "[a-zA-Z_][a-zA-Z0-9_]". Karakter yang tidak valid diganti dengan spasi (" ").

    • LabelValue: Tidak boleh mengandung karakter seperti "|", "#", atau "$". Jika mengandung, karakter tersebut diganti dengan garis bawah (_).

  • Label dalam __labels__ yang memiliki LabelValue berupa string kosong dihapus. Namun, entri data tetap dipertahankan.

  • Label duplikat dalam field __labels__ dihapus. Label dengan LabelValue yang secara leksikografis paling awal dipertahankan.

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__:123
    • Output

      __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__:123
    • Output

      __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__:123
    • Output

      __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 -format
    • Data masukan

      __labels__:host#$#myhost|qps#$#10|asda$cc#$#j|ob|schema#$#|#$#|#$#xxxx
      __name__:rt
      __time_nano__:1614739608
      __value__:123
    • Output

      __labels__:asda_cc#$#j|host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123