Plugin pemrosesan field menambahkan, menghapus, memodifikasi, mengemas, memperluas, dan mengekstraksi field.
Contoh pemrosesan field
Tabel ini menjelaskan struktur data dari log mentah yang disimpan di SLS serta membandingkan penggunaan plugin ekstraksi field dalam mode anchor dengan tidak menggunakan plugin sama sekali. Penggunaan plugin ekstraksi field menyusun data Anda sehingga menyederhanakan kueri berikutnya.
|
Log mentah
|
Tanpa plugin
|
Anchor mode
|
"time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}"
|
Content: "time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}"
|
Gunakan mode anchor untuk mengekstraksi nilai field, dan atur nama field menjadi time, val_key1, val_key2, val_key3, value_key4_inner1, dan value_key4_inner2. "time" : "2022.09.12 20:55:36"
"val_key1" : "xx"
"val_key2" : "false"
"val_key3" : "123.456"
"value_key4_inner1" : "1"
"value_key4_inner2" : "false"
|
Plugin pemrosesan field
SLS menyediakan jenis plugin pemrosesan field berikut. Pilih salah satu yang sesuai dengan kebutuhan Anda.
|
Nama plugin
|
Jenis
|
Deskripsi
|
|
Ekstrak field
|
Extended
|
Mendukung mode berikut:
-
Mode Regex: Mengekstraksi field menggunakan pencocokan ekspresi reguler.
-
Mode Anchor: Mengekstraksi field berdasarkan posisi atau penanda.
-
Mode CSV: Mengekstraksi field dalam format CSV.
-
Mode delimiter karakter tunggal: Mengekstraksi field menggunakan delimiter karakter tunggal.
-
Multi-character delimiter mode: Mengekstraksi bidang menggunakan pembatas multi-karakter.
-
Mode pasangan kunci-nilai: Mengekstraksi field dari format pasangan kunci-nilai.
-
Mode Grok: Mengekstraksi field terstruktur menggunakan sintaks Grok.
|
|
Tambahkan field
|
Extended
|
Menambahkan field baru ke log.
|
|
Hapus field
|
Extended
|
Menghapus field yang ditentukan.
|
|
Ubah nama field
|
Extended
|
Mengubah nama field.
|
|
Kemas field
|
Extended
|
Mengemas beberapa field menjadi satu objek JSON.
|
|
Perluas field JSON
|
Extended
|
Memperluas field string JSON menjadi field terpisah.
|
|
Petakan nilai field
|
Extended
|
Mengganti atau mengubah nilai field berdasarkan tabel pemetaan.
|
|
Ganti string
|
Extended
|
Menjalankan penggantian teks penuh, penggantian berbasis ekspresi reguler, atau penghapusan karakter escape pada log teks.
|
Titik masuk
Untuk menggunakan plugin Logtail dalam pemrosesan log, tambahkan plugin tersebut saat membuat atau mengubah konfigurasi Logtail. Untuk informasi selengkapnya, lihat Ikhtisar.
Batasan
-
Log teks dan output standar kontainer hanya mendukung konfigurasi berbasis formulir, sedangkan semua sumber input lainnya hanya mendukung konfigurasi berbasis JSON.
-
Batasan berikut berlaku saat mengekstraksi field dalam mode regex.
Engine ekspresi reguler Go, yang berbasis RE2, memiliki batasan berikut dibandingkan engine PCRE:
-
Perbedaan sintaks grup bernama
Go menggunakan sintaks (?P<name>...) alih-alih sintaks PCRE (?<name>...).
-
Pola ekspresi reguler yang tidak didukung
-
Assertion: (?=...), (?!...), (?<=...), dan (?<!...).
-
Ekspresi kondisional: (?(condition)true|false).
-
Pencocokan rekursif: (?R) dan (?0).
-
Referensi subrutin: (?&name) dan (?P>name).
-
Grup atomik: (?>...).
Saat melakukan debugging ekspresi reguler dengan alat seperti Regex101, hindari pola yang tidak didukung yang tercantum di atas karena plugin tidak dapat memproses log yang menggunakannya.
Plugin ekstraksi field
Mengekstraksi field log menggunakan mode regex, mode anchor, mode CSV, mode delimiter karakter tunggal, mode delimiter multi-karakter, mode pasangan kunci-nilai, atau mode Grok.
Mode Regex
Mengekstraksi field menggunakan ekspresi reguler.
Formulir
-
Parameter
Atur jenis prosesor ke Extract Field (Regex Mode). Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter
|
Deskripsi
|
|
Original Field
|
Nama field sumber.
|
|
Regular Expression
|
Ekspresi reguler. Anda harus menggunakan tanda kurung () untuk menentukan field yang akan diekstraksi.
|
|
New Field
|
Nama yang diberikan untuk konten yang diekstraksi. Anda dapat menambahkan beberapa nama field.
|
|
Report Original Field Missing Error
|
Pilih opsi ini untuk melaporkan error jika field sumber yang ditentukan tidak ditemukan dalam log mentah.
|
|
Report Regex Mismatch Error
|
Pilih opsi ini untuk melaporkan error jika nilai field sumber tidak cocok dengan ekspresi reguler.
|
|
Retain Original Field
|
Pilih opsi ini untuk mempertahankan field sumber dalam log yang telah diurai.
|
|
Retain Original Field If Parsing Fails
|
Pilih opsi ini untuk mempertahankan field sumber dalam log yang telah diurai jika penguraian gagal.
|
|
Full Regex Match
|
Pilih opsi ini untuk mengekstraksi nilai hanya jika ekspresi reguler menemukan kecocokan untuk semua field yang Anda definisikan di New Field.
|
-
Contoh konfigurasi
Gunakan mode regex untuk mengekstraksi nilai field content, dan atur nama field menjadi ip, time, method, url, request_time, request_length, status, length, ref_url, dan browser. Contoh konfigurasinya sebagai berikut:
-
Log mentah
"content" : "10.200.**.** - - [10/Aug/2022:14:57:51 +0800] \"POST /PutData?
Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature> HTTP/1.1\" 0.024 18204 200 37 \"-\" \"aliyun-sdk-java"
-
Konfigurasi plugin Logtail: Atur field sumber ke content, konfigurasikan ekspresi reguler, dan atur nama field hasil ke ip, time, method, url, request_time, request_length, status, length, ref_url, dan browser. Pilih opsi laporkan error jika field sumber tidak ditemukan dan laporkan error ketidakcocokan regex.
-
Hasil
"ip" : "10.200.**.**"
"time" : "10/Aug/2022:14:57:51"
"method" : "POST"
"url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>"
"request_time" : "0.024"
"request_length" : "18204"
"status" : "200"
"length" : "27"
"ref_url" : "-"
"browser" : "aliyun-sdk-java"
JSON
-
Parameter
Atur type ke processor_regex. Tabel berikut menjelaskan parameter untuk objek detail.
|
Parameter
|
Tipe
|
Wajib
|
Deskripsi
|
|
SourceKey
|
String
|
Ya
|
Nama field sumber.
|
|
Regex
|
String
|
Ya
|
Ekspresi reguler. Anda harus menggunakan tanda kurung () untuk menentukan field yang akan diekstraksi.
|
|
Keys
|
Array of strings
|
Ya
|
Nama yang diberikan untuk konten yang diekstraksi. Contoh: ["ip", "time", "method"].
|
|
NoKeyError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika field sumber tidak ditemukan dalam log mentah.
|
|
NoMatchError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika nilai field sumber tidak cocok dengan ekspresi reguler.
|
|
KeepSource
|
Boolean
|
Tidak
|
Menentukan apakah akan mempertahankan field sumber dalam log yang telah diurai.
|
|
FullMatch
|
Boolean
|
Tidak
|
Menentukan apakah pencocokan penuh diperlukan untuk ekstraksi.
-
true (nilai default): Nilai field diekstraksi hanya jika ekspresi reguler dalam parameter Regex menemukan kecocokan untuk semua field yang ditentukan dalam parameter Keys dalam nilai field sumber.
-
false: Nilai field diekstraksi meskipun hanya ditemukan kecocokan parsial.
|
|
KeepSourceIfParseError
|
Boolean
|
Tidak
|
Menentukan apakah akan mempertahankan field sumber dalam log yang telah diurai jika penguraian gagal.
|
-
Contoh konfigurasi
Contoh ini menunjukkan cara menggunakan mode regex untuk mengekstraksi nilai dari field content dan menetapkannya ke field hasil ip, time, method, url, request_time, request_length, status, length, ref_url, dan browser.
-
Log mentah
"content" : "10.200.**.** - - [10/Aug/2022:14:57:51 +0800] \"POST /PutData?
Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature> HTTP/1.1\" 0.024 18204 200 37 \"-\" \"aliyun-sdk-java"
-
Konfigurasi plugin Logtail
{
"type" : "processor_regex",
"detail" : {"SourceKey" : "content",
"Regex" : "([\\d\\.]+) \\S+ \\S+ \\[(\\S+) \\S+\\] \"(\\w+) ([^\\\"]*)\" ([\\d\\.]+) (\\d+) (\\d+) (\\d+|-) \"([^\\\"]*)\" \"([^\\\"]*)\" (\\d+)",
"Keys" : ["ip", "time", "method", "url", "request_time", "request_length", "status", "length", "ref_url", "browser"],
"NoKeyError" : true,
"NoMatchError" : true,
"KeepSource" : false
}
}
-
Hasil
"ip" : "10.200.**.**"
"time" : "10/Aug/2022:14:57:51"
"method" : "POST"
"url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>"
"request_time" : "0.024"
"request_length" : "18204"
"status" : "200"
"length" : "27"
"ref_url" : "-"
"browser" : "aliyun-sdk-java"
Mode Jangkar
Mengekstraksi field dengan menentukan kata kunci awal dan akhir. Jika field dalam format JSON, Anda juga dapat melakukan ekspansi JSON.
Konsol
-
Parameter
Atur jenis prosesor ke Extract Field (Anchor Mode). Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter
|
Deskripsi
|
|
Original Field
|
Nama field asal.
|
|
Anchor Parameters
|
Daftar konfigurasi anchor untuk ekstraksi field.
|
|
Start Keyword
|
Kata kunci yang menandai awal teks yang akan diekstraksi. Jika dibiarkan kosong, ekstraksi dimulai dari awal nilai field asal.
|
|
End Keyword
|
Kata kunci yang menandai akhir teks yang akan diekstraksi. Jika dibiarkan kosong, ekstraksi berlanjut hingga akhir nilai field asal.
|
|
New Field
|
Nama field yang menyimpan konten yang diekstraksi.
|
|
Field Type
|
Tipe data field. Nilai yang valid adalah string dan json.
|
|
JSON Expansion
|
Menentukan apakah akan melakukan ekspansi JSON.
|
|
Character to Concatenate Expanded Keys
|
Karakter yang digunakan untuk menggabungkan kunci selama ekspansi JSON. Nilai default adalah garis bawah (_).
|
|
Maximum Depth of JSON Expansion
|
Kedalaman rekursi maksimum untuk ekspansi JSON. Nilai default adalah 0, yang berarti tidak ada batasan.
|
|
Report Original Field Missing Error
|
Jika diaktifkan, melaporkan error jika field asal yang ditentukan tidak ditemukan dalam log mentah.
|
|
Report Keywords Missing Error
|
Jika diaktifkan, melaporkan error jika tidak ditemukan anchor yang cocok dalam log mentah.
|
|
Retain Original Field
|
Jika diaktifkan, mempertahankan field asal dalam log yang telah diurai.
|
-
Contoh konfigurasi
Contoh ini menunjukkan cara menggunakan mode anchor untuk mengekstraksi nilai dari field content dan membuat field hasil time, val_key1, val_key2, val_key3, value_key4_inner1, dan value_key4_inner2.
-
Log mentah
"content" : "time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}"
-
Konfigurasi plugin Logtail: Konfigurasikan dua aturan. Untuk aturan pertama, atur nama field sumber ke time, delimiter awal ke \t, nama field tujuan ke time, dan jenis tujuan ke string. Untuk aturan kedua, atur nama field sumber ke json, nama field tujuan ke val, jenis tujuan ke json, dan aktifkan ekspansi JSON.
-
Hasil
"time" : "2022.09.12 20:55:36"
"val_key1" : "xx"
"val_key2" : "false"
"val_key3" : "123.456"
"value_key4_inner1" : "1"
"value_key4_inner2" : "false"
JSON
-
Parameter
Atur type ke processor_anchor. Parameter detail dijelaskan dalam tabel berikut.
|
Parameter
|
Tipe
|
Wajib
|
Deskripsi
|
|
SourceKey
|
String
|
Ya
|
Nama field asal.
|
|
Anchors
|
Array of Anchor objects
|
Ya
|
Daftar parameter anchor.
|
|
Start
|
String
|
Ya
|
Kata kunci awal. Jika dibiarkan kosong, pencocokan dimulai dari awal string.
|
|
Stop
|
String
|
Ya
|
Kata kunci akhir. Jika dibiarkan kosong, pencocokan berlanjut hingga akhir string.
|
|
FieldName
|
String
|
Ya
|
Nama field untuk konten yang diekstraksi.
|
|
FieldType
|
String
|
Ya
|
Tipe data field. Nilai yang valid adalah string dan json.
|
|
ExpandJson
|
Boolean
|
Tidak
|
Menentukan apakah akan melakukan ekspansi JSON.
Hanya berlaku ketika FieldType adalah json.
|
|
ExpandConnector
|
String
|
Tidak
|
Karakter yang digunakan untuk menggabungkan kunci selama ekspansi JSON. Nilai default adalah garis bawah (_).
|
|
MaxExpandDepth
|
Int
|
Tidak
|
Kedalaman maksimum ekspansi JSON. Nilai default adalah 0, yang berarti tidak ada batasan.
|
|
NoAnchorError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika tidak ditemukan anchor yang cocok.
|
|
NoKeyError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika field asal yang ditentukan tidak ditemukan dalam log mentah.
|
|
KeepSource
|
Boolean
|
Tidak
|
Menentukan apakah akan mempertahankan field asal setelah penguraian.
|
-
Contoh konfigurasi
Gunakan mode anchor untuk mengekstraksi nilai field content, dan atur nama field menjadi time, val_key1, val_key2, val_key3, value_key4_inner1, dan value_key4_inner2. Berikut contoh konfigurasinya:
-
Log mentah
"content" : "time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}"
-
Konfigurasi plugin Logtail
{
"type" : "processor_anchor",
"detail" : {"SourceKey" : "content",
"Anchors" : [
{
"Start" : "time:",
"Stop" : "\t",
"FieldName" : "time",
"FieldType" : "string",
"ExpandJson" : false
},
{
"Start" : "json:",
"Stop" : "",
"FieldName" : "val",
"FieldType" : "json",
"ExpandJson" : true
}
]
}
}
-
Hasil
"time" : "2022.09.12 20:55:36"
"val_key1" : "xx"
"val_key2" : "false"
"val_key3" : "123.456"
"value_key4_inner1" : "1"
"value_key4_inner2" : "false"
Mode CSV
Gunakan mode CSV untuk mengurai log berformat CSV.
Mode delimiter karakter tunggal
Catatan
Mengekstraksi field menggunakan delimiter karakter tunggal. Mode ini mendukung penggunaan karakter kutipan untuk membungkus field yang mengandung delimiter.
Formulir
-
Parameter
Atur jenis prosesor ke Extract Field (Single-character Delimiter Mode). Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter
|
Deskripsi
|
|
Original Field
|
Nama field sumber.
|
|
Delimiter
|
Delimiter. Ini harus berupa satu karakter dan dapat diatur ke karakter non-printable, seperti \u0001.
|
|
New Field
|
Menentukan nama field yang akan dibuat untuk konten yang diekstraksi.
|
|
Use Quote
|
Menentukan apakah akan menggunakan karakter kutipan.
|
|
Quote
|
Karakter kutipan. Ini harus berupa satu karakter dan dapat berupa karakter non-printable, seperti \u0001.
|
|
Report Original Field Missing Error
|
Menentukan apakah akan melaporkan error jika field sumber yang ditentukan tidak ditemukan dalam log mentah.
|
|
Report Delimiter Mismatch Error
|
Menentukan apakah akan melaporkan error jika delimiter yang ditentukan tidak ditemukan dalam log mentah.
|
|
Retain Original Field
|
Menentukan apakah akan mempertahankan field sumber dalam log yang telah diurai.
|
-
Contoh
Gunakan tanda pipa (|) sebagai delimiter untuk mengekstraksi nilai field content, dan atur nama field menjadi ip, time, method, url, request_time, request_length, status, length, ref_url, dan browser. Berikut contoh konfigurasinya:
-
Log mentah
"content" : "10.**.**.**|10/Aug/2022:14:57:51 +0800|POST|PutData?
Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>|0.024|18204|200|37|-|
aliyun-sdk-java"
-
Konfigurasi plugin Logtail: delimiter diatur ke tanda pipa (|), dan field hasil mencakup ip, time, method, url, request_time, request_length, status, length, ref_url, dan browser.
-
Hasil
"ip" : "10.**.**.**"
"time" : "10/Aug/2022:14:57:51 +0800"
"method" : "POST"
"url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>"
"request_time" : "0.024"
"request_length" : "18204"
"status" : "200"
"length" : "27"
"ref_url" : "-"
"browser" : "aliyun-sdk-java"
JSON
-
Parameter
Atur type ke processor_split_char. Tabel berikut menjelaskan parameter detail.
|
Parameter
|
Tipe
|
Wajib
|
Deskripsi
|
|
SourceKey
|
String
|
Ya
|
Nama field sumber.
|
|
SplitSep
|
String
|
Ya
|
Delimiter harus berupa satu karakter dan dapat diatur ke karakter non-printable, seperti \u0001.
|
|
SplitKeys
|
String array
|
Ya
|
Array string yang menentukan nama untuk field baru. Contoh: ["ip", "time", "method"].
|
|
PreserveOthers
|
Boolean
|
Tidak
|
Menentukan apakah akan mempertahankan bagian berlebih ketika jumlah field yang akan dipisahkan lebih banyak daripada jumlah field dalam parameter SplitKeys.
|
|
QuoteFlag
|
Boolean
|
Tidak
|
Menentukan apakah akan menggunakan karakter kutipan.
|
|
Quote
|
String
|
Tidak
|
Karakter kutipan. Harus berupa satu karakter dan dapat berupa karakter non-printable, seperti \u0001.
Parameter ini hanya berlaku ketika QuoteFlag diatur ke true.
|
|
NoKeyError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika field sumber yang ditentukan tidak ditemukan dalam log mentah.
|
|
NoMatchError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika delimiter yang ditentukan tidak ditemukan dalam log mentah.
|
|
KeepSource
|
Boolean
|
Tidak
|
Menentukan apakah akan mempertahankan field sumber dalam log yang telah diurai.
|
-
Contoh
Gunakan delimiter tanda pipa (|) untuk mengekstraksi nilai field content, dan atur nama field menjadi ip, time, method, url, request_time, request_length, status, length, ref_url, dan browser. Berikut contoh konfigurasinya:
-
Log mentah
"content" : "10.**.**.**|10/Aug/2022:14:57:51 +0800|POST|PutData?
Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>|0.024|18204|200|37|-|
aliyun-sdk-java"
-
Konfigurasi plugin Logtail
{
"type" : "processor_split_char",
"detail" : {"SourceKey" : "content",
"SplitSep" : "|",
"SplitKeys" : ["ip", "time", "method", "url", "request_time", "request_length", "status", "length", "ref_url", "browser"]
}
}
-
Hasil
"ip" : "10.**.**.**"
"time" : "10/Aug/2022:14:57:51 +0800"
"method" : "POST"
"url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>"
"request_time" : "0.024"
"request_length" : "18204"
"status" : "200"
"length" : "27"
"ref_url" : "-"
"browser" : "aliyun-sdk-java"
Mode pembatas multi-karakter
Catatan
Anda dapat mengekstraksi field dengan separator multi-karakter. Mode ini tidak mendukung escaping separator dengan tanda kutip.
Konsol
-
Parameter
Atur jenis prosesor ke Extract Field (Multi-character Delimiter Mode). Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter
|
Deskripsi
|
|
Original Field
|
Nama field asal.
|
|
Delimiter String
|
Separator. Anda dapat menentukan karakter non-printable, seperti \u0001\u0002.
|
|
New Field
|
Nama field yang diekstraksi.
Penting
Jika jumlah field hasil lebih sedikit daripada jumlah field di New Field, field berlebih di New Field akan diabaikan.
|
|
Report Original Field Missing Error
|
Pilih opsi ini untuk melaporkan error jika field asal yang ditentukan tidak ditemukan dalam log.
|
|
Report Delimiter Mismatch Error
|
Pilih opsi ini untuk melaporkan error jika separator yang ditentukan tidak ditemukan dalam field asal.
|
|
Retain Original Field
|
Pilih opsi ini untuk mempertahankan field asal dalam log yang telah diurai.
|
|
Retain Excess Part
|
Pilih opsi ini untuk mempertahankan konten berlebih jika hasil pemisahan menghasilkan lebih banyak nilai daripada jumlah nama yang ditentukan di New Field.
|
|
Parse Excess Part
|
Pilih opsi ini untuk mengurai konten berlebih menjadi field baru jika hasil pemisahan menghasilkan lebih banyak nilai daripada jumlah nama yang ditentukan di New Field. Anda kemudian dapat menggunakan Name Prefix of Field to which Excess Part is Assigned untuk menentukan awalan nama field baru tersebut.
|
|
Name Prefix of Field to which Excess Part is Assigned
|
Awalan untuk nama field berlebih. Misalnya, jika Anda mengatur parameter ini ke expand_, field berlebih akan dinamai expand_1, expand_2, dan seterusnya.
|
-
Contoh konfigurasi
Gunakan separator |#| untuk mengekstraksi nilai dari field content dan membuat field ip, time, method, url, request_time, request_length, status, expand_1, expand_2, dan expand_3. Berikut contoh konfigurasinya:
-
Log mentah
"content" : "10.**.**.**|#|10/Aug/2022:14:57:51 +0800|#|POST|#|PutData?
Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>|#|0.024|#|18204|#|200|#|27|#|-|#|
aliyun-sdk-java"
-
Konfigurasi plugin Logtail: Atur string delimiter ke |#|, atur awalan nama field bagian berlebih ke expand_, dan tambahkan ip, time, method, url, request_time, request_length, dan status ke field baru.
-
Hasil
"ip" : "10.**.**.**"
"time" : "10/Aug/2022:14:57:51 +0800"
"method" : "POST"
"url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>"
"request_time" : "0.024"
"request_length" : "18204"
"status" : "200"
"expand_1" : "27"
"expand_2" : "-"
"expand_3" : "aliyun-sdk-java"
JSON
-
Parameter
Atur type ke processor_split_string. Tabel berikut menjelaskan parameter dalam detail.
|
Parameter
|
Tipe
|
Wajib
|
Deskripsi
|
|
SourceKey
|
String
|
Ya
|
Nama field asal.
|
|
SplitSep
|
String
|
Ya
|
Separator. Anda dapat menentukan karakter non-printable, seperti \u0001\u0002.
|
|
SplitKeys
|
Array of strings
|
Ya
|
Nama untuk field yang diekstraksi, ditentukan sebagai array string. Contoh: ["key1","key2"].
Catatan
Jika jumlah field yang akan dipisahkan lebih sedikit daripada jumlah field dalam parameter SplitKeys, field berlebih dalam parameter SplitKeys akan diabaikan.
|
|
PreserveOthers
|
Boolean
|
Tidak
|
Menentukan apakah akan mempertahankan bagian berlebih jika hasil pemisahan menghasilkan lebih banyak nilai daripada jumlah kunci dalam array SplitKeys.
|
|
ExpandOthers
|
Boolean
|
Tidak
|
Menentukan apakah akan mengurai bagian berlebih jika hasil pemisahan menghasilkan lebih banyak nilai daripada jumlah kunci dalam array SplitKeys.
-
true: Mengurai bagian berlebih.
Anda dapat menggunakan parameter ExpandOthers untuk mengurai bagian berlebih dan kemudian menggunakan parameter ExpandKeyPrefix untuk menentukan awalan penamaan untuk field bagian berlebih tersebut.
-
false (default): Tidak mengurai bagian berlebih.
|
|
ExpandKeyPrefix
|
String
|
Tidak
|
Awalan untuk nama field berlebih. Misalnya, jika Anda mengatur parameter ini ke expand_, field berlebih akan dinamai expand_1, expand_2, dan seterusnya.
|
|
NoKeyError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika field yang ditentukan oleh SourceKey tidak ditemukan dalam log mentah.
|
|
NoMatchError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika separator yang ditentukan oleh SplitSep tidak ditemukan dalam nilai field SourceKey.
|
|
KeepSource
|
Boolean
|
Tidak
|
Menentukan apakah akan mempertahankan field asal dalam log yang telah diurai.
|
-
Contoh konfigurasi
Gunakan separator |#| untuk mengekstraksi nilai dari field content dan membuat field ip, time, method, url, request_time, request_length, status, expand_1, expand_2, dan expand_3. Berikut contoh konfigurasinya:
-
Log mentah
"content" : "10.**.**.**|#|10/Aug/2022:14:57:51 +0800|#|POST|#|PutData?
Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>|#|0.024|#|18204|#|200|#|27|#|-|#|
aliyun-sdk-java"
-
Konfigurasi plugin Logtail
{
"type" : "processor_split_string",
"detail" : {"SourceKey" : "content",
"SplitSep" : "|#|",
"SplitKeys" : ["ip", "time", "method", "url", "request_time", "request_length", "status"],
"PreserveOthers" : true,
"ExpandOthers" : true,
"ExpandKeyPrefix" : "expand_"
}
}
-
Hasil
"ip" : "10.**.**.**"
"time" : "10/Aug/2022:14:57:51 +0800"
"method" : "POST"
"url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>"
"request_time" : "0.024"
"request_length" : "18204"
"status" : "200"
"expand_1" : "27"
"expand_2" : "-"
"expand_3" : "aliyun-sdk-java"
Mode pasangan kunci-nilai
Mengekstraksi field dengan memisahkan pasangan kunci-nilai.
Catatan
Plugin processor_split_key_value didukung di Logtail 0.16.26 dan versi yang lebih baru.
Formulir
-
Parameter
Atur jenis prosesor ke Extract Field (Key-value Pair Mode). Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter
|
Deskripsi
|
|
Original Field
|
Nama field sumber.
|
|
Key-value Pair Delimiter
|
Delimiter antara pasangan kunci-nilai adalah karakter tab \t secara default.
|
|
Key and Value Delimiter
|
Separator antara kunci dan nilai dalam pasangan kunci-nilai. Nilai default adalah titik dua (:).
|
|
Retain Original Field
|
Mempertahankan field sumber dalam log yang telah diurai.
|
|
Report Original Field Missing Error
|
Melaporkan error jika field sumber yang ditentukan tidak ditemukan dalam log mentah.
|
|
Drop Key-value Pairs That Fail to Match Delimiter
|
Membuang pasangan kunci-nilai jika tidak mengandung separator kunci-nilai yang ditentukan.
|
|
Report Key and Value Delimiter Missing Error
|
Melaporkan error jika pasangan kunci-nilai tidak mengandung separator kunci-nilai yang ditentukan.
|
|
Error pada kunci kosong
|
Melaporkan error jika kunci kosong setelah pemisahan.
|
|
Quote
|
Jika nilai diapit oleh karakter kutipan yang ditentukan, konten di dalam tanda kutip akan diekstraksi. Karakter kutipan dapat terdiri dari beberapa karakter.
Penting
Backslash (\) yang mendahului karakter kutipan di dalam nilai yang dikutip diperlakukan sebagai karakter literal dan disertakan dalam nilai akhir.
|
-
Contoh
-
Contoh 1: Memisahkan pasangan kunci-nilai.
Pisahkan nilai field content menjadi pasangan kunci-nilai. Delimiter antara pasangan kunci-nilai adalah karakter tab \t, dan delimiter antara kunci dan nilai adalah titik dua (:). Berikut contoh konfigurasinya:
-
Log mentah
"content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\""
-
Konfigurasi plugin Logtail: Atur delimiter pasangan kunci-nilai ke \t, atur separator kunci-nilai ke titik dua (:), dan pilih opsi pertahankan field sumber.
-
Hasil
"content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\""
"class": "main"
"userid": "123456"
"method": "get"
"message": "\"wrong user\""
-
Contoh 2: Memisahkan pasangan kunci-nilai dengan tanda kutip.
Pisahkan nilai field content menggunakan pasangan kunci-nilai. Delimiter antara pasangan adalah karakter tab \t, delimiter dalam pasangan adalah titik dua (:), dan karakter kutipan adalah tanda kutip ganda ("). Contoh konfigurasinya sebagai berikut:
-
Log mentah
"content": "class:main http_user_agent:\"User Agent\" \"中文\" \"hello\\t\\\"ilogtail\\\"\\tworld\""
-
Konfigurasi plugin Logtail: delimiter pasangan kunci-nilai diatur ke \t, separator kunci-nilai diatur ke titik dua (:), karakter kutipan diatur ke tanda kutip ganda ("), dan opsi pertahankan field sumber dinonaktifkan.
-
Hasil
"class": "main",
"http_user_agent": "User Agent",
"no_separator_key_0": "中文",
"no_separator_key_1": "hello\t\"ilogtail\"\tworld",
-
Contoh 3: Memisahkan pasangan kunci-nilai dengan kutipan multi-karakter.
Pisahkan nilai field content menggunakan pasangan kunci-nilai. Delimiter antara pasangan kunci-nilai adalah karakter tab \t, delimiter dalam pasangan kunci-nilai adalah titik dua (:), dan karakter kutipan adalah tanda kutip ganda ganda (""). Contoh konfigurasinya sebagai berikut:
-
Log mentah
"content": "class:main http_user_agent:\"\"\"User Agent\"\"\" \"\"\"中文\"\"\""
-
Konfigurasi plugin Logtail: Konfigurasinya sama seperti pada Contoh 2, kecuali karakter kutipan diatur ke tiga tanda kutip ganda (""").
-
Hasil
"class": "main",
"http_user_agent": "User Agent",
"no_separator_key_0": "中文",
JSON
-
Parameter
Atur parameter type ke processor_split_key_value. Tabel berikut menjelaskan parameter dalam objek detail.
|
Parameter
|
Tipe
|
Wajib
|
Deskripsi
|
|
SourceKey
|
string
|
Ya
|
Nama field sumber.
|
|
Delimiter
|
string
|
Tidak
|
Separator antara pasangan kunci-nilai. Nilai default adalah karakter tab \t.
|
|
Separator
|
string
|
Tidak
|
Separator antara kunci dan nilai dalam pasangan kunci-nilai. Nilai default adalah titik dua (:).
|
|
KeepSource
|
boolean
|
Tidak
|
Menentukan apakah akan mempertahankan field sumber dalam log yang telah diurai.
|
|
ErrIfSourceKeyNotFound
|
boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika field sumber tidak ditemukan dalam log mentah.
|
|
DiscardWhenSeparatorNotFound
|
boolean
|
Tidak
|
Menentukan apakah akan membuang pasangan kunci-nilai jika separator kunci-nilai yang ditentukan tidak ditemukan.
|
|
ErrIfSeparatorNotFound
|
boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika separator kunci-nilai yang ditentukan tidak ditemukan.
|
|
ErrIfKeyIsEmpty
|
boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika kunci kosong setelah pemisahan.
|
|
Quote
|
string
|
Tidak
|
Menentukan karakter yang digunakan untuk mengapit nilai. Jika nilai diapit oleh karakter ini, hanya konten di dalam tanda kutip yang diekstraksi. Karakter ini dapat terdiri dari beberapa karakter. Secara default, parameter ini kosong dan fitur ini dinonaktifkan.
Penting
-
Untuk menggunakan tanda kutip ganda (") sebagai karakter kutipan, Anda harus menggunakan backslash (\) untuk meng-escape-nya dalam konfigurasi JSON Anda. Contoh: "Quote": "\"".
-
Backslash (\) yang mendahului karakter kutipan di dalam nilai yang dikutip diperlakukan sebagai karakter literal dan disertakan dalam nilai akhir.
|
-
Contoh
-
Contoh 1: Memisahkan pasangan kunci-nilai.
Pisahkan nilai field content menggunakan pasangan kunci-nilai. Delimiter antara pasangan kunci-nilai adalah karakter tab \t, dan delimiter dalam pasangan kunci-nilai adalah titik dua (:). Contoh konfigurasinya sebagai berikut:
-
Log mentah
"content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\""
-
Konfigurasi plugin Logtail
{
"processors":[
{
"type":"processor_split_key_value",
"detail": {
"SourceKey": "content",
"Delimiter": "\t",
"Separator": ":",
"KeepSource": true
}
}
]
}
-
Hasil
"content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\""
"class": "main"
"userid": "123456"
"method": "get"
"message": "\"wrong user\""
-
Contoh 2: Memisahkan pasangan kunci-nilai dengan tanda kutip.
Pisahkan nilai field content menggunakan pasangan kunci-nilai. Delimiter antara pasangan kunci-nilai adalah karakter tab \t, delimiter dalam pasangan kunci-nilai adalah titik dua (:), dan karakter kutipan adalah tanda kutip ganda ("). Berikut contoh konfigurasinya:
-
Log mentah
"content": "class:main http_user_agent:\"User Agent\" \"中文\" \"hello\\t\\\"ilogtail\\\"\\tworld\""
-
Konfigurasi plugin Logtail
{
"processors":[
{
"type":"processor_split_key_value",
"detail": {
"SourceKey": "content",
"Delimiter": " ",
"Separator": ":",
"Quote": "\""
}
}
]
}
-
Hasil
"class": "main",
"http_user_agent": "User Agent",
"no_separator_key_0": "中文",
"no_separator_key_1": "hello\t\"ilogtail\"\tworld",
-
Contoh 3: Memisahkan pasangan kunci-nilai dengan kutipan multi-karakter.
Pisahkan nilai field content menjadi pasangan kunci-nilai. Delimiter antara pasangan kunci-nilai adalah karakter tab (\t), delimiter dalam pasangan kunci-nilai adalah titik dua (:), dan karakter kutipan adalah tanda kutip ganda ("). Berikut contoh konfigurasinya:
-
Log mentah
"content": "class:main http_user_agent:\"\"\"User Agent\"\"\" \"\"\"中文\"\"\""
-
Konfigurasi plugin Logtail
{
"processors":[
{
"type":"processor_split_key_value",
"detail": {
"SourceKey": "content",
"Delimiter": " ",
"Separator": ":",
"Quote": "\"\"\""
}
}
]
}
-
Hasil
"class": "main",
"http_user_agent": "User Agent",
"no_separator_key_0": "中文",
Mode Grok
Mengekstraksi field target menggunakan ekspresi grok.
Catatan
Plugin processor_grok didukung di Logtail 1.2.0 dan versi yang lebih baru.
JSON
-
Parameter
Atur type ke processor_grok. Tabel berikut menjelaskan parameter dalam detail.
|
Parameter
|
Tipe
|
Wajib
|
Deskripsi
|
|
CustomPatternDir
|
Array of strings
|
Tidak
|
Direktori yang berisi file pola grok kustom Anda. Plugin processor_grok membaca semua file dalam direktori ini.
Jika Anda tidak menentukan parameter ini, tidak ada file pola grok kustom yang diimpor.
Penting
Setelah Anda memperbarui file pola grok kustom, Anda harus restart Logtail agar perubahan diterapkan.
|
|
CustomPatterns
|
Map
|
Tidak
|
Pola grok kustom, di mana key adalah nama aturan dan value adalah ekspresi grok.
Untuk ekspresi yang didukung secara default, lihat processor_grok. Jika tautan tersebut tidak berisi ekspresi yang Anda butuhkan, masukkan ekspresi grok kustom dalam Match.
Jika Anda tidak menentukan parameter ini, pola grok kustom tidak digunakan.
|
|
SourceKey
|
String
|
Tidak
|
Nama field sumber. Nilai default adalah field content.
|
|
Match
|
Array of strings
|
Ya
|
Array ekspresi grok. Plugin processor_grok mencoba setiap ekspresi secara berurutan dan mengembalikan field dari kecocokan pertama yang berhasil.
Catatan
Mengonfigurasi beberapa ekspresi grok dapat memengaruhi kinerja. Kami merekomendasikan untuk menggunakan tidak lebih dari lima ekspresi.
|
|
TimeoutMilliSeconds
|
Long
|
Tidak
|
Waktu maksimum, dalam milidetik, untuk ekspresi grok mencocokkan dan mengekstraksi field.
Jika Anda tidak menentukan parameter ini atau mengaturnya ke 0, operasi tidak akan timeout.
|
|
IgnoreParseFailure
|
Boolean
|
Tidak
|
Menentukan apakah akan mempertahankan log yang gagal diurai.
|
|
KeepSource
|
Boolean
|
Tidak
|
Menentukan apakah akan mempertahankan field sumber setelah penguraian berhasil.
|
|
NoKeyError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika field sumber tidak ditemukan dalam log mentah.
|
|
NoMatchError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika tidak ada ekspresi dalam parameter Match yang cocok dengan log.
|
|
TimeoutError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika pencocokan timeout.
|
-
Contoh 1
Contoh ini menunjukkan cara menggunakan mode Grok untuk mengekstraksi nilai dari field content dan menetapkannya ke field year, month, dan day.
-
Log mentah
"content" : "2022 October 17"
-
Konfigurasi plugin Logtail
{
"type" : "processor_grok",
"detail" : {
"KeepSource" : false,
"Match" : [
"%{YEAR:year} %{MONTH:month} %{MONTHDAY:day}"
],
"IgnoreParseFailure" : false
}
}
-
Hasil
"year":"2022"
"month":"October"
"day":"17"
-
Contoh 2
Gunakan mode Grok untuk mengekstraksi nilai field content dari beberapa log dan menguraikannya menjadi hasil berbeda berdasarkan ekspresi grok yang berbeda. Contoh konfigurasinya sebagai berikut:
-
Log mentah
{
"content" : "begin 123.456 end"
}
{
"content" : "2019 June 24 \"I am iron man"\"
}
{
"content" : "WRONG LOG"
}
{
"content" : "10.0.0.0 GET /index.html 15824 0.043"
}
-
Konfigurasi plugin Logtail
{
"type" : "processor_grok",
"detail" : {
"CustomPatterns" : {
"HTTP" : "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}"
},
"IgnoreParseFailure" : false,
"KeepSource" : false,
"Match" : [
"%{HTTP}",
"%{WORD:word1} %{NUMBER:request_time} %{WORD:word2}",
"%{YEAR:year} %{MONTH:month} %{MONTHDAY:day} %{QUOTEDSTRING:motto}"
],
"SourceKey" : "content"
},
}
-
Hasil
-
Untuk log pertama, plugin processor_grok gagal menemukan kecocokan menggunakan ekspresi pertama %{HTTP} dalam parameter Match, tetapi berhasil menggunakan ekspresi kedua %{WORD:word1} %{NUMBER:request_time} %{WORD:word2}. Oleh karena itu, plugin mengembalikan hasil ekstraksi berdasarkan ekspresi kedua.
Karena parameter KeepSource diatur ke false, field content dari log mentah dibuang.
-
Untuk entri log kedua, plugin processor_grok gagal mencocokkan log menggunakan ekspresi pertama %{HTTP} dan ekspresi kedua %{WORD:word1} %{NUMBER:request_time} %{WORD:word2} dalam parameter Match. Plugin berhasil mencocokkan log menggunakan ekspresi ketiga %{YEAR:year} %{MONTH:month} %{MONTHDAY:day} %{QUOTEDSTRING:motto}. Oleh karena itu, plugin mengembalikan hasil ekstraksi berdasarkan ekspresi ketiga.
-
Plugin processor_grok gagal mencocokkan log ketiga dengan ekspresi apa pun dalam array Match. Karena parameter IgnoreParseFailure diatur ke false, log ketiga dibuang.
-
Untuk log keempat, plugin processor_grok berhasil mencocokkannya dengan ekspresi pertama dalam array Match, %{HTTP}, dan mengembalikan field yang diekstraksi.
{
"word1":"begin",
"request_time":"123.456",
"word2":"end",
}
{
"year":"2019",
"month":"June",
"day":"24",
"motto":"\"I am iron man"\",
}
{
"client":"10.0.0.0",
"method":"GET",
"request":"/index.html",
"bytes":"15824",
"duration":"0.043",
}
Plugin tambah field
Gunakan plugin processor_add_fields untuk menambahkan field log. Topik ini menjelaskan parameter plugin dan memberikan contoh konfigurasi.
Konfigurasi
Penting
Plugin processor_add_fields didukung di Logtail 0.16.28 dan versi yang lebih baru.
Formulir
-
Parameter
Atur Jenis Prosesor ke Add Field. Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter
|
Deskripsi
|
|
Add Field
|
Pasangan kunci-nilai yang ditambahkan sebagai field log baru.
|
|
Ignore New Fields with Same Name
|
Jika diaktifkan, mencegah field baru menimpa field yang sudah ada dengan nama yang sama.
|
-
Contoh konfigurasi
Contoh ini menunjukkan cara menambahkan field aaa2 dan aaa3.
-
Log mentah
"aaa1":"value1"
-
Konfigurasi plugin Logtail: Tambahkan dua field: aaa2 dengan nilai value2, dan aaa3 dengan nilai value3.
-
Hasil
"aaa1":"value1"
"aaa2":"value2"
"aaa3":"value3"
JSON
-
Parameter
Atur type ke processor_add_fields. Tabel berikut menjelaskan parameter dalam objek detail.
|
Parameter
|
Tipe
|
Wajib
|
Deskripsi
|
|
Fields
|
Map
|
Ya
|
Field log yang ditambahkan, ditentukan sebagai map pasangan kunci-nilai.
|
|
IgnoreIfExist
|
Boolean
|
Tidak
|
Menentukan perilaku ketika field yang akan ditambahkan memiliki nama yang sama dengan field yang sudah ada.
|
-
Contoh konfigurasi
Contoh ini menunjukkan cara menambahkan field aaa2 dan aaa3.
-
Log mentah
"aaa1":"value1"
-
Konfigurasi plugin Logtail
{
"processors":[
{
"type":"processor_add_fields",
"detail": {
"Fields": {
"aaa2": "value2",
"aaa3": "value3"
}
}
}
]
}
-
Hasil
"aaa1":"value1"
"aaa2":"value2"
"aaa3":"value3"
Plugin hapus field
Plugin processor_drop menghapus field log yang ditentukan. Topik ini mencakup parameter plugin dan memberikan contoh konfigurasi.
Konfigurasi
Penting
Plugin processor_drop didukung di Logtail 0.16.28 dan versi yang lebih baru.
Formulir
-
Parameter
Atur Jenis Prosesor ke Drop Field.
|
Parameter
|
Deskripsi
|
|
Drop Field
|
Field log yang akan dihapus. Anda dapat menentukan beberapa field.
|
-
Contoh konfigurasi
Untuk menghapus field aaa1 dan aaa2 dari log, konfigurasikan plugin sebagai berikut:
JSON
-
Parameter
Atur type ke processor_drop. Tabel berikut menjelaskan parameter detail.
|
Parameter
|
Type
|
Wajib
|
Deskripsi
|
|
DropKeys
|
string array
|
Ya
|
Kunci field log yang akan dihapus. Anda dapat menentukan beberapa kunci.
|
-
Contoh konfigurasi
Untuk menghapus field aaa1 dan aaa2 dari log, konfigurasikan plugin sebagai berikut:
-
Log mentah
"aaa1":"value1"
"aaa2":"value2"
"aaa3":"value3"
-
Konfigurasi plugin Logtail
{
"processors":[
{
"type":"processor_drop",
"detail": {
"DropKeys": ["aaa1","aaa2"]
}
}
]
}
-
Hasil
"aaa3":"value3"
Plugin ubah nama field
Anda dapat menggunakan plugin processor_rename untuk mengubah nama field. Topik ini menjelaskan parameter dan contoh konfigurasi plugin processor_rename.
Konfigurasi
Penting
Plugin processor_rename memerlukan Logtail 0.16.28 atau versi yang lebih baru.
Konsol
-
Parameter
Atur Processor Type ke Rename Fields dan konfigurasikan parameter yang dijelaskan dalam tabel berikut.
|
Parameter
|
Deskripsi
|
|
Original Field
|
Field asal yang akan diubah namanya.
|
|
New Field
|
Nama baru untuk field tersebut.
|
|
Report Original Field Missing Error
|
Menentukan apakah akan melaporkan error jika field asal yang ditentukan tidak ditemukan dalam log.
|
-
Contoh
Contoh ini mengubah nama field aaa1 menjadi bbb1 dan field aaa2 menjadi bbb2.
-
Log mentah
"aaa1":"value1"
"aaa2":"value2"
"aaa3":"value3"
-
Konfigurasi plugin Logtail: Ubah nama aaa1 menjadi bbb1 dan aaa2 menjadi bbb2.
-
Hasil
"bbb1":"value1"
"bbb2":"value2"
"aaa3":"value3"
JSON
-
Parameter
Atur type ke processor_rename dan konfigurasikan parameter untuk objek detail seperti dijelaskan dalam tabel berikut.
|
Parameter
|
Tipe
|
Wajib
|
Deskripsi
|
|
NoKeyError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika field asal yang ditentukan tidak ditemukan dalam log.
|
|
SourceKeys
|
String array
|
Ya
|
Field asal yang akan diubah namanya.
|
|
DestKeys
|
String array
|
Ya
|
Nama baru untuk field tersebut.
|
-
Contoh
Contoh ini mengubah nama field aaa1 menjadi bbb1 dan field aaa2 menjadi bbb2.
-
Log mentah
"aaa1":"value1"
"aaa2":"value2"
"aaa3":"value3"
-
Konfigurasi plugin Logtail
{
"processors":[
{
"type":"processor_rename",
"detail": {
"SourceKeys": ["aaa1","aaa2"],
"DestKeys": ["bbb1","bbb2"],
"NoKeyError": true
}
}
]
}
-
Hasil
"bbb1":"value1"
"bbb2":"value2"
"aaa3":"value3"
Pack fields plugin
Gunakan plugin processor_packjson untuk mengemas satu atau beberapa field sumber ke dalam field tujuan sebagai objek JSON. Topik ini menjelaskan parameter plugin processor_packjson dan memberikan contoh konfigurasi.
Konfigurasi
Penting
Plugin processor_packjson didukung di Logtail 0.16.28 dan versi yang lebih baru.
Konsol
-
Parameter
Atur Jenis Prosesor ke Encapsulate Fields. Tabel berikut menjelaskan parameter.
|
Parameter
|
Deskripsi
|
|
Original Field
|
Field sumber yang akan dikemas.
|
|
New Field
|
Field tujuan untuk objek JSON yang dikemas.
|
|
Retain Original Field
|
Jika Anda memilih opsi ini, field sumber akan dipertahankan dalam log yang telah diurai.
|
|
Report Original Field Missing Error
|
Jika Anda memilih opsi ini, plugin akan melaporkan error jika field sumber yang ditentukan tidak ditemukan dalam log mentah.
|
-
Contoh
Contoh ini menunjukkan cara mengemas field a dan b ke dalam field tujuan bernama d_key.
-
Log mentah
"a":"1"
"b":"2"
-
Konfigurasi plugin Logtail: Atur Field Sumber ke a dan b, dan atur Field Tujuan ke d_key.
-
Hasil
"a":"1"
"b":"2"
"d_key":"{\"a\":\"1\",\"b\":\"2\"}"
JSON
-
Parameter
Atur type ke processor_packjson. Tabel berikut menjelaskan parameter dalam objek detail.
|
Parameter
|
Tipe
|
Wajib
|
Deskripsi
|
|
SourceKeys
|
String array
|
Ya
|
Field sumber yang akan dikemas.
|
|
DestKey
|
String
|
Tidak
|
Field tujuan untuk objek JSON yang dikemas.
|
|
KeepSource
|
Boolean
|
Tidak
|
Menentukan apakah akan mempertahankan field sumber dalam log yang telah diurai.
|
|
AlarmIfIncomplete
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika field sumber yang ditentukan tidak ditemukan dalam log mentah.
|
-
Contoh
Contoh ini menunjukkan cara mengemas field a dan b ke dalam field tujuan bernama d_key.
-
Log mentah
"a":"1"
"b":"2"
-
Konfigurasi plugin Logtail
{
"processors":[
{
"type":"processor_packjson",
"detail": {
"SourceKeys": ["a","b"],
"DestKey":"d_key",
"KeepSource":true,
"AlarmIfIncomplete":true
}
}
]
}
-
Hasil
"a":"1"
"b":"2"
"d_key":"{\"a\":\"1\",\"b\":\"2\"}"
Plugin perluas field JSON
Gunakan plugin processor_json untuk memperluas field JSON. Topik ini menjelaskan parameter untuk plugin processor_json dan memberikan contoh konfigurasi.
Konfigurasi
Penting
Plugin processor_json didukung di Logtail 0.16.28 dan versi yang lebih baru.
Konsol
-
Parameter
Atur Processor Type ke Expand JSON Field. Tabel berikut menjelaskan parameter tersebut.
|
Parameter
|
Deskripsi
|
|
Original Field
|
Nama field sumber yang akan diperluas.
|
|
JSON Expansion Depth
|
Kedalaman maksimum untuk memperluas objek JSON. Nilai default adalah 0, yang berarti tidak ada batasan kedalaman. Nilai 1 hanya memperluas field tingkat atas.
|
|
Character to Concatenate Expanded Keys
|
Karakter yang digunakan untuk menghubungkan kunci bersarang. Nilai default adalah garis bawah (_).
|
|
Name Prefix of Expanded Keys
|
Awalan untuk nama field yang diperluas.
|
|
Expand Array
|
Menentukan apakah akan memperluas array. Parameter ini didukung di Logtail 1.8.0 dan versi yang lebih baru.
|
|
Retain Original Field
|
Menentukan apakah akan menyimpan field sumber dalam log setelah penguraian.
|
|
Report Original Field Missing Error
|
Menentukan apakah akan melaporkan error jika field sumber yang ditentukan tidak ditemukan dalam log mentah.
|
|
Use Name of Original Field as Name Prefix of Expanded Keys
|
Menentukan apakah akan menggunakan nama field sumber sebagai awalan untuk semua nama field yang diperluas.
|
|
Retain Raw Logs If Parsing Fails
|
Menentukan apakah akan menyimpan log mentah jika penguraian gagal.
|
-
Contoh
Contoh ini memperluas field s_key, menggunakan j sebagai awalan kustom dan nama field sumber s_key sebagai awalan tambahan untuk nama field yang diperluas. Berikut contoh konfigurasinya:
-
Log mentah (jalur file yang dibaca oleh Logtail)
{"s_key":"{\"k1\":{\"k2\":{\"k3\":{\"k4\":{\"k51\":\"51\",\"k52\":\"52\"},\"k41\":\"41\"}}}}"}
-
Konfigurasi plugin Logtail
Atur SourceKey ke s_key, aktifkan NoKeyError, atur ExpandDepth ke 0 (tidak terbatas), atur ExpandConnector ke tanda hubung (-), atur Prefix ke j, aktifkan UseSourceKeyAsPrefix, dan nonaktifkan KeepSource.
-
Hasil
Log yang diperluas berisi field berikut: j_s_key-k1-k2-k3-k4-k51 dengan nilai 51, j_s_key-k1-k2-k3-k4-k52 dengan nilai 52, dan j_s_key-k1-k2-k3-k41 dengan nilai 41. Field sumber s_key dihapus.
JSON
-
Parameter
Atur type ke processor_json. Tabel berikut menjelaskan parameter dalam objek detail.
|
Parameter
|
Tipe
|
Wajib
|
Deskripsi
|
|
SourceKey
|
String
|
Ya
|
Nama field sumber yang akan diperluas.
|
|
NoKeyError
|
Boolean
|
Tidak
|
Menentukan apakah akan melaporkan error jika field sumber tidak ditemukan dalam log mentah.
|
|
ExpandDepth
|
Int
|
Tidak
|
Kedalaman maksimum untuk memperluas objek JSON. Nilai default adalah 0, yang berarti tidak ada batasan kedalaman. Nilai 1 hanya memperluas field tingkat atas.
|
|
ExpandConnector
|
String
|
Tidak
|
Karakter yang digunakan untuk menghubungkan kunci bersarang. Nilai default adalah garis bawah (_).
|
|
Prefix
|
String
|
Tidak
|
Awalan yang ditambahkan ke nama field baru setelah ekspansi.
|
|
KeepSource
|
Boolean
|
Tidak
|
Menentukan apakah akan menyimpan field sumber dalam log setelah penguraian.
|
|
UseSourceKeyAsPrefix
|
Boolean
|
Tidak
|
Menentukan apakah akan menggunakan nama field sumber sebagai awalan untuk semua nama field yang diperluas.
|
|
KeepSourceIfParseError
|
Boolean
|
Tidak
|
Menentukan apakah akan menyimpan log mentah jika penguraian gagal.
|
|
ExpandArray
|
Boolean
|
Tidak
|
Menentukan apakah akan memperluas array. Parameter ini didukung di Logtail 1.8.0 dan versi yang lebih baru.
-
false (default): Array tidak diperluas.
-
true: Perluas array. Misalnya, {"k":["1","2"]} diperluas menjadi {"k[0]":"1","k[1]":"2"}.
|
-
Contoh
Contoh ini memperluas field s_key, menggunakan j sebagai awalan kustom dan nama field sumber s_key sebagai awalan tambahan untuk nama field yang diperluas. Berikut contoh konfigurasinya:
-
Log mentah (jalur file yang dibaca oleh Logtail)
{"s_key":"{\"k1\":{\"k2\":{\"k3\":{\"k4\":{\"k51\":\"51\",\"k52\":\"52\"},\"k41\":\"41\"}}}}"}
-
Konfigurasi plugin Logtail
{
"processors":[
{
"type":"processor_json",
"detail": {
"SourceKey": "s_key",
"NoKeyError":true,
"ExpandDepth":0,
"ExpandConnector":"-",
"Prefix":"j",
"KeepSource": false,
"UseSourceKeyAsPrefix": true
}
}
]
}
-
Hasil
Log yang diperluas berisi field berikut: j_s_key-k1-k2-k3-k4-k51 dengan nilai 51, j_s_key-k1-k2-k3-k4-k52 dengan nilai 52, dan j_s_key-k1-k2-k3-k41 dengan nilai 41. Field sumber s_key dihapus.
Plugin pemetaan nilai field
Plugin processor_dict_map memetakan nilai field. Topik ini menjelaskan parameter plugin dan memberikan contoh konfigurasi.
Konfigurasi
Formulir
Atur jenis prosesor ke Field Value Mapping. Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter
|
Deskripsi
|
|
Original Field
|
Nama field sumber.
|
|
New Field
|
Nama field yang dipetakan.
|
|
Mapping Dictionary
|
Kamus yang memetakan nilai sumber ke nilai target.
Untuk kamus kecil, Anda dapat mengonfigurasi pemetaan langsung di field ini alih-alih menggunakan file kamus lokal.
Penting
Jika Anda mengatur Local Dictionary, konfigurasi Mapping Dictionary akan diabaikan.
|
|
Local Dictionary
|
File CSV yang berisi kamus pemetaan. Dalam file tersebut, field harus diapit tanda kutip ganda (") dan dipisahkan oleh koma (,).
|
|
Parameter Lanjutan>Proses Bidang Sumber yang Hilang
|
Jika dipilih, jika log mentah tidak memiliki field sumber, plugin akan mengisi field yang dipetakan dengan nilai dari Value to Fill New Field.
|
|
parameter lanjutan>Maximum Mapping Dictionary Size
|
Jumlah maksimum aturan yang diizinkan dalam kamus pemetaan. Nilai default adalah 1.000.
Kurangi nilai ini untuk membatasi penggunaan memori server oleh plugin.
|
|
parameter lanjutan>Method to Process Raw Log
|
Menentukan tindakan yang diambil ketika field yang dipetakan sudah ada dalam log mentah.
|
JSON
Atur type ke processor_dict_map. Tabel berikut menjelaskan parameter detail.
|
Parameter
|
Jenis
|
Wajib
|
Deskripsi
|
|
SourceKey
|
String
|
Ya
|
Nama field sumber.
|
|
MapDict
|
Map
|
Tidak
|
Kamus yang memetakan nilai sumber ke nilai target.
Untuk kamus kecil, Anda dapat mengonfigurasi pemetaan langsung di sini alih-alih menggunakan parameter DictFilePath.
Penting
Jika Anda mengatur parameter DictFilePath, parameter MapDict akan diabaikan.
|
|
DictFilePath
|
String
|
Tidak
|
Jalur ke file CSV yang berisi kamus pemetaan. Dalam file tersebut, field harus diapit tanda kutip ganda (") dan dipisahkan oleh koma (,).
|
|
DestKey
|
String
|
Tidak
|
Nama field yang dipetakan.
|
|
HandleMissing
|
Boolean
|
Tidak
|
Menentukan apakah akan mengambil tindakan jika field sumber tidak ada dalam log mentah.
-
true: Mengambil tindakan jika field sumber tidak ada.
Plugin mengisi field yang dipetakan dengan nilai parameter Missing.
-
false (default): Tidak mengambil tindakan.
|
|
Missing
|
String
|
Tidak
|
Nilai untuk field yang dipetakan ketika field sumber tidak ada. Nilai default adalah Unknown.
Parameter ini berlaku ketika HandleMissing diatur ke true.
|
|
MaxDictSize
|
Int
|
Tidak
|
Jumlah maksimum aturan yang diizinkan dalam kamus pemetaan. Nilai default adalah 1.000.
Kurangi nilai ini untuk membatasi penggunaan memori server oleh plugin.
|
|
Mode
|
String
|
Tidak
|
Menentukan tindakan yang diambil ketika field yang dipetakan (ditentukan oleh DestKey) sudah ada dalam log mentah.
|
Penggantian string
Gunakan plugin processor_string_replace untuk melakukan penggantian teks penuh atau berbasis regex, atau menghapus karakter escape dari log mentah.
Konfigurasi
Penting
Plugin processor_string_replace didukung di Logtail 1.6.0 dan versi yang lebih baru.
Formulir
Atur Jenis Prosesor ke String Replacement. Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter
|
Deskripsi
|
|
Original Field
|
Nama field sumber.
|
|
Match Mode
|
Metode yang digunakan untuk menemukan konten yang akan diganti. Nilai yang valid:
-
String Match: Mengganti konten yang cocok dengan string tertentu.
-
Regular Expression Match: Mengganti konten yang cocok dengan ekspresi reguler.
-
Remove Escape Character: Menghapus karakter escape.
|
|
Matched Content
|
Pola atau string yang akan dicocokkan.
-
Jika Match Mode diatur ke String Match, masukkan string target.
Semua kemunculan yang cocok akan diganti.
-
Jika Match Mode diatur ke Regex Match, masukkan ekspresi reguler target.
Anda juga dapat menggunakan grup ekspresi reguler untuk mencocokkan bagian spesifik dari string.
-
Parameter ini tidak diperlukan jika Anda mengatur Match Mode ke Remove Escape Character.
|
|
Replaced By
|
String yang digunakan untuk penggantian.
-
Jika Anda mengatur Match Mode ke String Match, masukkan string untuk mengganti konten asli.
-
Jika Anda mengatur Match Mode ke Regex Match, masukkan string untuk mengganti konten asli. Anda dapat mereferensikan grup tangkapan dalam string pengganti.
-
Parameter ini tidak diperlukan jika Anda mengatur Match Mode ke Remove Escape Character.
|
|
New Field
|
Field untuk menyimpan hasilnya. Jika tidak ditentukan, field sumber akan ditimpa.
|
JSON
Atur type ke processor_string_replace. Tabel berikut menjelaskan parameter dalam objek detail.
|
Parameter
|
Jenis
|
Wajib
|
Deskripsi
|
|
SourceKey
|
String
|
Ya
|
Nama field sumber.
|
|
Method
|
String
|
Ya
|
Metode penggantian. Nilai yang valid:
-
const: Menggunakan penggantian string.
-
regex: Menggunakan ekspresi reguler untuk penggantian.
-
unquote: Menghapus karakter escape.
|
|
Match
|
String
|
Tidak
|
Pola atau string yang akan dicocokkan.
-
Jika Anda mengatur Method ke const, masukkan string yang cocok dengan konten yang ingin Anda ganti.
Semua kemunculan yang cocok akan diganti.
-
Jika Anda mengatur Method ke regex, masukkan ekspresi reguler yang cocok dengan konten yang ingin Anda ganti.
Anda juga dapat menggunakan grup ekspresi reguler untuk mencocokkan bagian spesifik dari string.
-
Parameter ini tidak diperlukan jika Anda mengatur Method ke unquote.
|
|
ReplaceString
|
String
|
Tidak
|
String yang digunakan untuk penggantian. Nilai default adalah string kosong ("").
-
Jika Anda mengatur Method ke const, masukkan string untuk mengganti konten asli.
-
Jika Anda mengatur Method ke regex, masukkan string untuk mengganti konten asli. Anda dapat mereferensikan grup tangkapan dalam string pengganti.
-
Parameter ini tidak diperlukan jika Anda mengatur Method ke unquote.
|
|
DestKey
|
String
|
Tidak
|
Field untuk menyimpan hasilnya. Jika parameter ini tidak ditentukan, field sumber akan ditimpa.
|
Contoh konfigurasi
Mengganti konten menggunakan pencocokan string
Contoh ini menunjukkan cara menggunakan pencocokan string untuk mengganti Error: dalam field content dengan string kosong.
Form
-
Log mentah:
"content": "2023-05-20 10:01:23 Error: Unable to connect to database."
-
Konfigurasi plugin Logtail: Atur mode pencocokan ke Pencocokan String, atur field sumber ke content, atur konten yang cocok ke Error: , dan biarkan konten pengganti kosong.
-
Hasil:
"content": "2023-05-20 10:01:23 Unable to connect to database."
JSON
-
Log mentah:
"content": "2023-05-20 10:01:23 Error: Unable to connect to database."
-
Konfigurasi plugin Logtail:
{
"processors":[
{
"type":"processor_string_replace",
"detail": {
"SourceKey": "content",
"Method": "const",
"Match": "Error: ",
"ReplaceString": ""
}
}
]
}
-
Hasil:
"content": "2023-05-20 10:01:23 Unable to connect to database."
Mengganti konten menggunakan ekspresi reguler
Contoh ini menunjukkan cara menggunakan ekspresi reguler untuk mengganti string dalam field content yang cocok dengan \\u\w+\[\d{1,3};*\d{1,3}m|N/A dengan string kosong.
Formulir
-
Log mentah:
"content": "2022-09-16 09:03:31.013 \u001b[32mINFO \u001b[0;39m \u001b[34m[TID: N/A]\u001b[0;39m [\u001b[35mThread-30\u001b[0;39m] \u001b[36mc.s.govern.polygonsync.job.BlockTask\u001b[0;39m : Block collection------end------\r"
-
Konfigurasi plugin Logtail: Atur mode pencocokan ke Regex Match, atur field sumber ke content, atur konten yang cocok ke \\u\w+\[\d{1,3};*\d{1,3}m|N/A, dan biarkan konten pengganti kosong.
-
Hasil:
"content": "2022-09-16 09:03:31.013 INFO [TID: ] [Thread-30] c.s.govern.polygonsync.job.BlockTask : Block collection------end------\r"
JSON
-
Log mentah:
"content": "2022-09-16 09:03:31.013 \u001b[32mINFO \u001b[0;39m \u001b[34m[TID: N/A]\u001b[0;39m [\u001b[35mThread-30\u001b[0;39m] \u001b[36mc.s.govern.polygonsync.job.BlockTask\u001b[0;39m : Block collection------end------\r"
-
Konfigurasi plugin Logtail:
{
"processors":[
{
"type":"processor_string_replace",
"detail": {
"SourceKey": "content",
"Method": "regex",
"Match": "\\\\u\\w+\\[\\d{1,3};*\\d{1,3}m|N/A",
"ReplaceString": ""
}
}
]
}
-
Hasil:
"content": "2022-09-16 09:03:31.013 INFO [TID: ] [Thread-30] c.s.govern.polygonsync.job.BlockTask : Block collection------end------\r"
Mengganti konten menggunakan grup tangkapan
Contoh ini menggunakan grup tangkapan ekspresi reguler untuk mengganti 16 dalam field content dengan */24 dan menyimpan hasilnya dalam field baru bernama new_ip.
Penting
Saat menggunakan grup tangkapan untuk penggantian, string pengganti tidak boleh mengandung {}. Anda harus menggunakan format seperti $1 dan $2.
Formulir
-
Log mentah:
"content": "10.10.239.16"
-
Konfigurasi plugin Logtail: Atur mode pencocokan ke Regex Match, atur field sumber ke content, atur konten yang cocok ke (\d.*\.)\d+, atur konten pengganti ke $1*/24, dan atur field tujuan ke new_ip.
-
Hasil:
"content": "10.10.239.16",
"new_ip": "10.10.239.*/24"
JSON
-
Log mentah:
"content": "10.10.239.16"
-
Konfigurasi plugin Logtail:
{
"processors":[
{
"type":"processor_string_replace",
"detail": {
"SourceKey": "content",
"Method": "regex",
"Match": "(\\d.*\\.)\\d+",
"ReplaceString": "$1*/24",
"DestKey": "new_ip"
}
}
]
}
-
Hasil:
"content": "10.10.239.16",
"new_ip": "10.10.239.*/24"
Menghapus karakter escape
Formulir
-
Log mentah:
"content": "{\\x22UNAME\\x22:\\x22\\x22,\\x22GID\\x22:\\x22\\x22,\\x22PAID\\x22:\\x22\\x22,\\x22UUID\\x22:\\x22\\x22,\\x22STARTTIME\\x22:\\x22\\x22,\\x22ENDTIME\\x22:\\x22\\x22,\\x22UID\\x22:\\x222154212790\\x22,\\x22page_num\\x22:1,\\x22page_size\\x22:10}"
-
Konfigurasi plugin Logtail: Atur mode pencocokan ke Hapus Karakter Escape, dan atur field sumber ke content.
-
Hasil:
"content": "{\"UNAME\":\"\",\"GID\":\"\",\"PAID\":\"\",\"UUID\":\"\",\"STARTTIME\":\"\",\"ENDTIME\":\"\",\"UID\":\"2154212790\",\"page_num\":1,\"page_size\":10}"
JSON
-
Log mentah:
"content": "{\\x22UNAME\\x22:\\x22\\x22,\\x22GID\\x22:\\x22\\x22,\\x22PAID\\x22:\\x22\\x22,\\x22UUID\\x22:\\x22\\x22,\\x22STARTTIME\\x22:\\x22\\x22,\\x22ENDTIME\\x22:\\x22\\x22,\\x22UID\\x22:\\x222154212790\\x22,\\x22page_num\\x22:1,\\x22page_size\\x22:10}"
-
Konfigurasi plugin Logtail:
{
"processors":[
{
"type":"processor_string_replace",
"detail": {
"SourceKey": "content",
"Method": "unquote"
}
}
]
}
-
Hasil:
"content": "{\"UNAME\":\"\",\"GID\":\"\",\"PAID\":\"\",\"UUID\":\"\",\"STARTTIME\":\"\",\"ENDTIME\":\"\",\"UID\":\"2154212790\",\"page_num\":1,\"page_size\":10}"