Plugin pemrosesan bidang digunakan untuk menambah, menghapus, memodifikasi, mengemas, memperluas, dan mengekstraksi bidang.
Contoh pemrosesan bidang
Tabel berikut menunjukkan struktur data log mentah setelah disimpan ke Simple Log Service, serta membandingkan hasil penggunaan plugin ekstraksi bidang dalam mode pembatas dengan hasil tanpa menggunakan plugin. Penggunaan plugin ekstraksi membuat data Anda terstruktur sehingga mempermudah kueri selanjutnya.
Log mentah | Tanpa plugin pemrosesan bidang | Menggunakan plugin ekstraksi bidang dalam mode pembatas |
"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}}" | Nilai bidang diekstraksi dalam mode pembatas. Nama bidang diatur 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"
|
Ikhtisar plugin pemrosesan bidang
Simple Log Service menyediakan jenis plugin pemrosesan bidang berikut. Anda dapat memilih plugin sesuai kebutuhan Anda.
Nama plugin | Jenis | Deskripsi |
Ekstraksi bidang | Ekstensi | Mendukung mode berikut: Mode ekspresi reguler: Mengekstraksi bidang menggunakan pencocokan ekspresi reguler. Mode pembatas: Mengekstraksi bidang berdasarkan posisi atau penanda. Mode CSV: Mengekstraksi bidang dalam format CSV. Mode pemisah karakter tunggal: Mengekstraksi bidang menggunakan pemisah karakter tunggal. Mode pemisah multi-karakter: Mengekstraksi bidang menggunakan pemisah multi-karakter. Mode pasangan kunci-nilai: Mengekstraksi bidang dari format pasangan kunci-nilai. Mode Grok: Mengekstraksi bidang terstruktur menggunakan sintaks Grok.
|
|
|
|
|
|
|
Tambah bidang | Ekstensi | Menambahkan bidang baru ke log. |
Hapus bidang | Ekstensi | Menghapus bidang yang ditentukan. |
Ubah nama bidang | Ekstensi | Mengubah nama bidang. |
Kemas bidang | Ekstensi | Mengemas beberapa bidang menjadi satu objek JSON. |
Perluas bidang JSON | Ekstensi | Memperluas bidang string JSON menjadi bidang terpisah. |
Petakan nilai bidang | Ekstensi | Mengganti atau mengubah nilai bidang berdasarkan tabel pemetaan. |
Penggantian string | Ekstensi | Menjalankan penggantian teks penuh, penggantian berbasis ekspresi reguler, atau penghapusan karakter escape untuk log teks. |
Titik masuk
Jika ingin menggunakan plugin Logtail untuk memproses log, Anda dapat menambahkan konfigurasi plugin Logtail saat membuat atau mengubah konfigurasi Logtail. Untuk informasi selengkapnya, lihat Ikhtisar.
Batasan
Log teks dan output standar kontainer hanya mendukung konfigurasi berbasis formulir. Sumber input lain hanya mendukung konfigurasi JSON.
Batasan berikut berlaku saat mengekstraksi bidang dalam mode ekspresi reguler.
Engine ekspresi reguler Go berbasis RE2. Dibandingkan dengan engine PCRE, engine ini memiliki batasan berikut:
Perbedaan sintaks grup bernama
Go menggunakan sintaks (?P<name>...), bukan sintaks (?<name>...) yang digunakan oleh PCRE.
Pola ekspresi reguler yang tidak didukung
Assertion: (?=...), (?!...), (?<=...), (?<!...).
Ekspresi kondisional: (?(condition)true|false).
Pencocokan rekursif: (?R), (?0).
Referensi subrutin: (?&name), (?P>name).
Grup atomik: (?>...).
Saat men-debug ekspresi reguler dengan alat seperti Regex101, hindari pola yang tidak didukung yang tercantum di atas. Jika tidak, plugin tidak dapat memproses log.
Plugin ekstraksi bidang
Mengekstraksi bidang log dalam mode ekspresi reguler, mode pembatas, mode CSV, mode pemisah karakter tunggal, mode pemisah multi-karakter, mode pasangan kunci-nilai, atau mode Grok.
Mode ekspresi reguler
Mengekstraksi bidang target menggunakan ekspresi reguler.
Konfigurasi berbasis formulir
Parameter
Atur Processor Type ke Extract Fields (Regular Expression Mode). Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Source Field | Nama bidang sumber. |
Regular Expression | Ekspresi reguler. Gunakan tanda kurung () untuk menandai bidang yang akan diekstraksi. |
Result Fields | Nama untuk konten yang diekstraksi. Anda dapat menambahkan beberapa nama bidang. |
Report Error If Source Field Is Missing | Jika opsi ini dipilih, kesalahan dilaporkan jika bidang sumber tidak ditemukan dalam log mentah. |
Report Error On No Match | Jika opsi ini dipilih, kesalahan dilaporkan jika ekspresi reguler tidak cocok dengan nilai bidang sumber. |
Keep Source Field | Jika opsi ini dipilih, bidang sumber disimpan dalam log yang diurai. |
Keep Source Field On Parsing Failure | Jika opsi ini dipilih, bidang sumber disimpan dalam log yang diurai jika penguraian gagal. |
Full Match | Jika opsi ini dipilih, nilai bidang diekstraksi hanya jika semua bidang yang ditetapkan di Result Fields cocok dengan nilai bidang sumber berdasarkan ekspresi reguler yang ditentukan. |
Contoh
Ekstrak nilai bidang content dalam mode ekspresi reguler dan atur nama bidang menjadi ip, time, method, url, request_time, request_length, status, length, ref_url, dan browser. Berikut adalah contoh konfigurasi:
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
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"
Konfigurasi JSON
Parameter
Atur type ke processor_regex. Tabel berikut menjelaskan parameter dalam detail.
Parameter | Jenis | Wajib | Deskripsi |
SourceKey | String | Ya | Nama bidang sumber. |
Regex | String | Ya | Ekspresi reguler. Gunakan tanda kurung () untuk menandai bidang yang akan diekstraksi. |
Keys | Array string | Ya | Nama untuk konten yang diekstraksi. Contoh: ["ip", "time", "method"]. |
NoKeyError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika bidang sumber tidak ditemukan dalam log mentah. |
NoMatchError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika ekspresi reguler tidak cocok dengan nilai bidang sumber. |
KeepSource | Boolean | Tidak | Menentukan apakah akan menyimpan bidang sumber dalam log yang diurai. |
FullMatch | Boolean | Tidak | Menentukan apakah akan mengekstraksi nilai bidang hanya ketika ditemukan kecocokan penuh. true (default): Nilai bidang diekstraksi hanya jika semua bidang yang Anda tetapkan di parameter Keys cocok dengan nilai bidang sumber berdasarkan ekspresi reguler di parameter Regex. false: Nilai bidang diekstraksi meskipun hanya ditemukan kecocokan sebagian.
|
KeepSourceIfParseError | Boolean | Tidak | Menentukan apakah akan menyimpan bidang sumber dalam log yang diurai jika penguraian gagal. |
Contoh
Ekstrak nilai bidang content dalam mode ekspresi reguler dan atur nama bidang menjadi ip, time, method, url, request_time, request_length, status, length, ref_url, dan browser. Berikut adalah contoh konfigurasi:
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 Berpembatas
Mengekstraksi bidang dengan menentukan kata kunci awal dan akhir. Jika bidang dalam format JSON, Anda dapat memperluasnya.
Konfigurasi berbasis formulir
Parameter
Atur Processor Type ke Extract Fields (Delimited Mode). Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Source Field | Nama bidang sumber. |
Calibration Item List | Daftar item kalibrasi. |
Start Keyword | Kata kunci awal. Jika parameter ini dikosongkan, pencocokan dimulai dari awal string. |
End Keyword | Kata kunci akhir. Jika parameter ini dikosongkan, pencocokan berlanjut hingga akhir string. |
Result Field | Nama untuk konten yang diekstraksi. |
Field Type | Jenis bidang. Nilai yang valid adalah string dan json. |
Expand JSON | Menentukan apakah akan memperluas bidang JSON. |
JSON Expansion Connector | Konektor untuk perluasan JSON. Nilai default adalah garis bawah (_). |
Maximum JSON Expansion Depth | Kedalaman maksimum untuk perluasan JSON. Nilai default adalah 0, yang berarti tidak ada batasan. |
Report Error If Source Field Is Missing | Jika opsi ini dipilih, kesalahan dilaporkan jika bidang sumber tidak ditemukan dalam log mentah. |
Report Error If Delimited Item Is Missing | Jika opsi ini dipilih, kesalahan dilaporkan jika tidak ditemukan item pembatas yang cocok dalam log mentah. |
Keep Source Field | Jika opsi ini dipilih, bidang sumber disimpan dalam log yang diurai. |
Contoh
Ekstrak nilai bidang content dalam mode pembatas dan atur nama bidang menjadi time, val_key1, val_key2, val_key3, value_key4_inner1, dan value_key4_inner2. Berikut adalah contoh konfigurasi:
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 
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"
Konfigurasi JSON
Parameter
Atur type ke processor_anchor. Tabel berikut menjelaskan parameter dalam detail.
Parameter | Jenis | Wajib | Deskripsi |
SourceKey | String | Ya | Nama bidang sumber. |
Anchors | Array anchor | Ya | Item kalibrasi. |
Start | String | Ya | Kata kunci awal. Jika kosong, akan mencocokkan awal string. |
Stop | String | Ya | Kata kunci akhir. Jika kosong, akan mencocokkan akhir string. |
FieldName | String | Ya | Nama untuk konten yang diekstraksi. |
FieldType | String | Ya | Jenis bidang. Nilai yang valid adalah string dan json. |
ExpondJson | Boolean | Tidak | Menentukan apakah akan memperluas bidang JSON. Parameter ini hanya berlaku ketika FieldType diatur ke json. |
ExpondConnecter | String | Tidak | Konektor untuk perluasan JSON. Nilai default adalah garis bawah (_). |
MaxExpondDepth | Int | Tidak | Kedalaman maksimum untuk perluasan JSON. Nilai default adalah 0, yang berarti tidak ada batasan. |
NoAnchorError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika item pembatas tidak ditemukan. |
NoKeyError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika bidang sumber tidak ditemukan dalam log mentah. |
KeepSource | Boolean | Tidak | Menentukan apakah akan menyimpan bidang sumber dalam log yang diurai. |
Contoh
Ekstrak nilai bidang content dalam mode pembatas dan atur nama bidang menjadi time, val_key1, val_key2, val_key3, value_key4_inner1, dan value_key4_inner2. Berikut adalah contoh konfigurasi:
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",
"ExpondJson" : false
},
{
"Start" : "json:",
"Stop" : "",
"FieldName" : "val",
"FieldType" : "json",
"ExpondJson" : 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
Mengurai log dalam format CSV.
Konfigurasi berbasis formulir
Mode pemisah karakter tunggal
Catatan Mengekstraksi bidang menggunakan pemisah karakter tunggal. Mode ini mendukung penggunaan karakter tanda kutip untuk membungkus bidang yang berisi pemisah.
Konfigurasi berbasis formulir
Parameter
Atur Processor Type ke Extract Fields (Single-character Separator Mode). Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Source Field | Nama bidang sumber. |
Separator | Pemisah. Harus berupa satu karakter. Anda dapat mengaturnya ke karakter non-cetak, seperti \u0001. |
Result Fields | Nama untuk konten yang diekstraksi. |
Use Quote Character | Menentukan apakah akan menggunakan karakter tanda kutip. |
Quote Character | Karakter tanda kutip. Harus berupa satu karakter. Anda dapat mengaturnya ke karakter non-cetak, seperti \u0001. |
Report Error If Source Field Is Missing | Jika opsi ini dipilih, kesalahan dilaporkan jika bidang sumber tidak ditemukan dalam log mentah. |
Report Error If Separator Does Not Match | Jika opsi ini dipilih, kesalahan dilaporkan jika log tidak dapat dipisahkan oleh pemisah yang ditentukan. |
Keep Source Field | Jika opsi ini dipilih, bidang sumber disimpan dalam log yang diurai. |
Contoh
Ekstrak nilai bidang content menggunakan tanda pipa vertikal (|) sebagai pemisah dan atur nama bidang menjadi ip, time, method, url, request_time, request_length, status, length, ref_url, dan browser. Berikut adalah contoh konfigurasi:
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 
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"
Konfigurasi JSON
Parameter
Atur type ke processor_split_char. Tabel berikut menjelaskan parameter dalam detail.
Parameter | Jenis | Wajib | Deskripsi |
SourceKey | String | Ya | Nama bidang sumber. |
SplitSep | String | Ya | Pemisah. Harus berupa satu karakter. Anda dapat mengaturnya ke karakter non-cetak, seperti \u0001. |
SplitKeys | Array string | Ya | Nama untuk konten yang diekstraksi. Contoh: ["ip", "time", "method"]. |
PreserveOthers | Boolean | Tidak | Menentukan apakah akan menyimpan bagian sisa jika jumlah bidang yang akan dipisahkan lebih banyak daripada jumlah bidang di parameter SplitKeys. |
QuoteFlag | Boolean | Tidak | Menentukan apakah akan menggunakan karakter tanda kutip. |
Quote | String | Tidak | Karakter tanda kutip. Harus berupa satu karakter. Anda dapat mengaturnya ke karakter non-cetak, seperti \u0001. Parameter ini hanya berlaku ketika QuoteFlag diatur ke true. |
NoKeyError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika bidang sumber tidak ditemukan dalam log mentah. |
NoMatchError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika pemisah yang ditentukan tidak cocok dengan pemisah dalam log. |
KeepSource | Boolean | Tidak | Menentukan apakah akan menyimpan bidang sumber dalam log yang diurai. |
Contoh
Ekstrak nilai bidang content menggunakan tanda pipa vertikal (|) sebagai pemisah dan atur nama bidang menjadi ip, time, method, url, request_time, request_length, status, length, ref_url, dan browser. Berikut adalah contoh konfigurasi:
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 pemisah multi-karakter
Catatan Mengekstraksi bidang menggunakan pemisah multi-karakter. Mode ini tidak mendukung penggunaan karakter tanda kutip untuk membungkus bidang.
Konfigurasi berbasis formulir
Parameter
Atur Processor Type ke Extract Fields (Multi-character Separator Mode). Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Source Field | Nama bidang sumber. |
Separator String | Pemisah. Anda dapat mengaturnya ke karakter non-cetak, seperti \u0001\u0002. |
Result Fields | Nama untuk konten log yang diekstraksi.
Penting Jika pemisahan log menghasilkan lebih sedikit bidang daripada jumlah bidang yang ditentukan di Result Fields, nama bidang tambahan di Result Fields diabaikan. |
Report Error If Source Field Is Missing | Jika opsi ini dipilih, kesalahan dilaporkan jika bidang sumber tidak ditemukan dalam log. |
Report Error If Separator Does Not Match | Jika opsi ini dipilih, kesalahan dilaporkan jika log tidak dapat dipisahkan oleh pemisah yang ditentukan. |
Keep Source Field | Jika opsi ini dipilih, bidang sumber disimpan dalam log yang diurai. |
Keep Remaining Part | Jika opsi ini dipilih, sistem menyimpan konten sisa jika pemisahan log menghasilkan lebih banyak bidang daripada jumlah bidang yang ditentukan di Result Fields. |
Parse Remaining Part | Jika opsi ini dipilih, sistem mengurai konten sisa jika pemisahan log menghasilkan lebih banyak bidang daripada jumlah bidang di Result Fields. Anda dapat menggunakan Prefix For Remaining Field Names untuk menentukan awalan bagi nama bidang sisa. |
Prefix For Remaining Field Names | Awalan untuk nama bidang sisa. Misalnya, jika diatur ke expand_, nama bidangnya menjadi expand_1, expand_2, dan seterusnya. |
Contoh
Ekstrak nilai bidang content menggunakan pemisah |#| dan atur nama bidang menjadi ip, time, method, url, request_time, request_length, status, expand_1, expand_2, dan expand_3. Berikut adalah contoh konfigurasi:
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 
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"
Konfigurasi JSON
Parameter
Atur type ke processor_split_string. Tabel berikut menjelaskan parameter dalam detail.
Parameter | Jenis | Wajib | Deskripsi |
SourceKey | String | Ya | Nama bidang sumber. |
SplitSep | String | Ya | Pemisah. Anda dapat mengaturnya ke karakter non-cetak, seperti \u0001\u0002. |
SplitKeys | Array string | Ya | Nama untuk konten log yang diekstraksi. Contoh: ["key1","key2"].
Catatan Jika jumlah bidang yang akan dipisahkan lebih sedikit daripada jumlah bidang di parameter SplitKeys, bidang tambahan di parameter SplitKeys diabaikan. |
PreserveOthers | Boolean | Tidak | Menentukan apakah akan menyimpan bagian sisa jika jumlah bidang yang akan dipisahkan lebih banyak daripada jumlah bidang di parameter SplitKeys. |
ExpandOthers | Boolean | Tidak | Menentukan apakah akan mengurai bagian sisa jika jumlah bidang yang akan dipisahkan lebih banyak daripada jumlah bidang di parameter SplitKeys. true: Uraikan bagian sisa. Anda dapat menggunakan parameter ExpandOthers untuk mengurai bagian sisa dan parameter ExpandKeyPrefix untuk menentukan awalan untuk nama bidang sisa. false (default): Jangan uraikan bagian sisa.
|
ExpandKeyPrefix | String | Tidak | Awalan untuk nama bidang sisa. Misalnya, jika Anda mengatur ini ke expand_, nama bidangnya adalah expand_1, expand_2, dan seterusnya. |
NoKeyError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika bidang sumber tidak ditemukan dalam log mentah. |
NoMatchError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika pemisah yang ditentukan tidak cocok dengan pemisah dalam log. |
KeepSource | Boolean | Tidak | Menentukan apakah akan menyimpan bidang sumber dalam log yang diurai. |
Contoh
Ekstrak nilai bidang content menggunakan pemisah |#| dan atur nama bidang menjadi ip, time, method, url, request_time, request_length, status, expand_1, expand_2, dan expand_3. Berikut adalah contoh konfigurasi:
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 bidang dengan memisahkan pasangan kunci-nilai.
Catatan Plugin processor_split_key_value didukung di Logtail 0.16.26 dan versi yang lebih baru.
Konfigurasi berbasis formulir
Parameter
Atur Processor Type ke Extract Fields (Key-value Pair Mode). Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Source Field | Nama bidang sumber. |
Key-value Pair Separator | Pemisah antara pasangan kunci-nilai. Nilai default adalah karakter tab \t. |
Key-value Separator | Pemisah antara kunci dan nilai dalam pasangan kunci-nilai. Nilai default adalah titik dua (:). |
Keep Source Field | Jika opsi ini dipilih, sistem menyimpan bidang sumber. |
Report Error If Source Field Is Missing | Jika opsi ini dipilih, kesalahan dilaporkan jika bidang sumber tidak ditemukan dalam log. |
Discard Key-value Pair If Separator Does Not Match | Jika opsi ini dipilih, sistem membuang pasangan kunci-nilai jika tidak mengandung pemisah kunci-nilai yang ditentukan. |
Report Error If Key-value Separator Is Missing | Jika opsi ini dipilih, kesalahan dilaporkan jika pasangan kunci-nilai tidak mengandung pemisah kunci-nilai yang ditentukan. |
Report Error If Key Is Empty | Jika opsi ini dipilih, kesalahan dilaporkan jika kunci kosong setelah pemisahan. |
Quote Character | Jika nilai dibungkus dengan karakter tanda kutip, nilai di dalam karakter tanda kutip diekstraksi. Anda dapat mengatur beberapa karakter.
Penting Jika garis miring terbalik (\) digunakan untuk meng-escape karakter tanda kutip di dalam nilai bertanda kutip, garis miring terbalik (\) tetap dipertahankan sebagai bagian dari nilai. |
Contoh
Contoh 1: Memisahkan pasangan kunci-nilai.
Pisahkan nilai bidang content menjadi pasangan kunci-nilai. Pemisah antara pasangan kunci-nilai adalah karakter tab \t, dan pemisah dalam pasangan kunci-nilai adalah titik dua (:). Berikut adalah contoh konfigurasi:
Log mentah
"content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\""
Konfigurasi plugin Logtail
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 yang berisi karakter tanda kutip.
Pisahkan nilai bidang content menjadi pasangan kunci-nilai. Pemisah antara pasangan kunci-nilai adalah karakter tab \t, pemisah dalam pasangan kunci-nilai adalah titik dua (:), dan karakter tanda kutip adalah tanda kutip ganda ("). Berikut adalah contoh konfigurasi:
Log mentah
"content": "class:main http_user_agent:\"User Agent\" \"Chinese\" \"hello\\t\\\"ilogtail\\\"\\tworld\""
Konfigurasi plugin Logtail
Hasil
"class": "main",
"http_user_agent": "User Agent",
"no_separator_key_0": "Chinese",
"no_separator_key_1": "hello\t\"ilogtail\"\tworld",
Contoh 3: Memisahkan pasangan kunci-nilai yang berisi karakter tanda kutip multi-karakter.
Pisahkan nilai bidang content menjadi pasangan kunci-nilai. Pemisah antara pasangan kunci-nilai adalah karakter tab \t, pemisah dalam pasangan kunci-nilai adalah titik dua (:), dan karakter tanda kutip adalah tanda kutip ganda (""). Berikut adalah contoh konfigurasi:
Log mentah
"content": "class:main http_user_agent:\"\"\"User Agent\"\"\" \"\"\"Chinese\"\"\""
Konfigurasi plugin Logtail
Hasil
"class": "main",
"http_user_agent": "User Agent",
"no_separator_key_0": "Chinese",
Konfigurasi JSON
Parameter
Atur type ke processor_split_key_value. Tabel berikut menjelaskan parameter dalam detail.
Parameter | Jenis | Wajib | Deskripsi |
SourceKey | string | Ya | Nama bidang sumber. |
Delimiter | string | Tidak | Pemisah antara pasangan kunci-nilai. Nilai default adalah karakter tab \t. |
Separator | string | Tidak | Pemisah antara kunci dan nilai dalam pasangan kunci-nilai. Nilai default adalah titik dua (:). |
KeepSource | Boolean | Tidak | Menentukan apakah akan menyimpan bidang sumber dalam log yang diurai. |
ErrIfSourceKeyNotFound | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika bidang sumber tidak ditemukan dalam log mentah. |
DiscardWhenSeparatorNotFound | Boolean | Tidak | Menentukan apakah akan membuang pasangan kunci-nilai jika tidak ditemukan pemisah yang cocok. |
ErrIfSeparatorNotFound | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan ketika pemisah yang ditentukan tidak ditemukan. |
ErrIfKeyIsEmpty | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan ketika kunci kosong setelah pemisahan. |
Quote | String | Tidak | Karakter tanda kutip. Jika diatur dan nilai dibungkus dengan karakter tanda kutip, nilai di dalam karakter tanda kutip diekstraksi. Anda dapat mengatur beberapa karakter. Secara default, fitur karakter tanda kutip dinonaktifkan.
Penting Jika karakter tanda kutip adalah tanda kutip ganda (""), Anda harus menambahkan karakter escape, yaitu garis miring terbalik (\). Jika garis miring terbalik (\) digunakan dengan karakter tanda kutip di dalam tanda kutip, garis miring terbalik (\) termasuk sebagai bagian dari nilai.
|
Contoh
Contoh 1: Memisahkan pasangan kunci-nilai.
Pisahkan nilai bidang content menjadi pasangan kunci-nilai. Pemisah antara pasangan kunci-nilai adalah karakter tab \t, dan pemisah dalam pasangan kunci-nilai adalah titik dua (:). Berikut adalah contoh konfigurasi:
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.
Pisahkan nilai bidang content menjadi pasangan kunci-nilai. Pemisah antara pasangan kunci-nilai adalah karakter tab \t, pemisah dalam pasangan kunci-nilai adalah titik dua (:), dan karakter tanda kutip adalah tanda kutip ganda ("). Berikut adalah contoh konfigurasi:
Log mentah
"content": "class:main http_user_agent:\"User Agent\" \"Chinese\" \"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": "Chinese",
"no_separator_key_1": "hello\t\"ilogtail\"\tworld",
Contoh 3: Memisahkan pasangan kunci-nilai.
Pisahkan nilai bidang content menjadi pasangan kunci-nilai. Pemisah antara pasangan kunci-nilai adalah karakter tab \t, pemisah dalam pasangan kunci-nilai adalah titik dua (:), dan karakter tanda kutip adalah tanda kutip ganda tiga kali ("""). Berikut adalah contoh konfigurasi:
Log mentah
"content": "class:main http_user_agent:\"\"\"User Agent\"\"\" \"\"\"Chinese\"\"\""
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": "Chinese",
Mode Grok
Mengekstraksi bidang target menggunakan ekspresi Grok.
Catatan Plugin processor_grok didukung di Logtail 1.2.0 dan versi yang lebih baru.
Konfigurasi berbasis formulir
Konfigurasi JSON
Parameter
Atur type ke processor_grok. Tabel berikut menjelaskan parameter dalam detail.
Parameter | Jenis | Wajib | Deskripsi |
CustomPatternDir | Array string | Tidak | Direktori tempat file pola Grok kustom berada. Plugin processor_grok membaca semua file dalam direktori tersebut. Jika parameter ini tidak ditambahkan, tidak ada file pola Grok kustom yang diimpor.
Penting Setelah memperbarui file pola Grok kustom, Anda harus me-restart Logtail agar perubahan berlaku. |
CustomPatterns | Map | Tidak | Pola GROK kustom. kunci adalah nama aturan, dan nilai adalah ekspresi Grok. Untuk daftar ekspresi default yang didukung, lihat processor_grok. Jika ekspresi yang Anda butuhkan tidak ada dalam daftar, masukkan ekspresi Grok kustom di Match. Jika parameter ini tidak ditambahkan, tidak ada pola GROK kustom yang digunakan. |
SourceKey | String | Tidak | Nama bidang sumber. Nilai default adalah bidang content. |
Match | Array string | Ya | Array ekspresi Grok. Plugin processor_grok mencoba mencocokkan log terhadap ekspresi dalam daftar ini dari atas ke bawah dan mengembalikan hasil dari pencocokan pertama yang berhasil.
Catatan Mengonfigurasi beberapa ekspresi Grok dapat memengaruhi kinerja. Kami menyarankan untuk menggunakan tidak lebih dari lima ekspresi. |
TimeoutMilliSeconds | Long | Tidak | Waktu maksimum untuk mencoba mengekstraksi bidang dengan ekspresi Grok, dalam milidetik. Jika parameter ini tidak ditambahkan atau diatur ke 0, berarti tidak ada batas waktu. |
IgnoreParseFailure | Boolean | Tidak | Menentukan apakah akan mengabaikan log yang gagal diurai. |
KeepSource | Boolean | Tidak | Menentukan apakah akan menyimpan bidang sumber setelah penguraian berhasil. |
NoKeyError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika bidang sumber tidak ditemukan dalam log mentah. |
NoMatchError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika tidak ada ekspresi yang ditetapkan di parameter Match yang cocok dengan log. |
TimeoutError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika waktu pencocokan habis. |
Contoh 1
Ekstrak nilai bidang content dalam mode Grok dan beri nama bidang yang diekstraksi menjadi year, month, dan day. Berikut adalah contoh konfigurasi:
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
Ekstrak nilai bidang content dari beberapa log dan uraikan menjadi hasil berbeda berdasarkan ekspresi Grok yang berbeda. Berikut adalah contoh konfigurasi:
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 mencocokkannya dengan ekspresi pertama %{HTTP} di parameter Match, tetapi berhasil mencocokkannya dengan ekspresi kedua %{WORD:word1} %{NUMBER:request_time} %{WORD:word2}. Oleh karena itu, hasil ekstraksi didasarkan pada ekspresi kedua.
Karena parameter KeepSource diatur ke false, bidang content dalam log mentah dibuang.
Untuk entri log kedua, plugin processor_grok gagal mencocokkan entri tersebut dengan ekspresi pertama %{HTTP} dan ekspresi kedua %{WORD:word1} %{NUMBER:request_time} %{WORD:word2} di parameter Match, tetapi berhasil mencocokkannya dengan ekspresi ketiga %{YEAR:year} %{MONTH:month} %{MONTHDAY:day} %{QUOTEDSTRING:motto}. Oleh karena itu, plugin mengembalikan hasil ekstraksi berdasarkan ekspresi ketiga.
Untuk log ketiga, plugin processor_grok gagal mencocokkannya dengan ketiga ekspresi di parameter Match. Karena Anda mengatur parameter IgnoreParseFailure ke false, log ketiga dibuang.
Untuk log keempat, plugin processor_grok berhasil mencocokkannya dengan ekspresi pertama %{HTTP} di parameter Match. Oleh karena itu, hasil ekstraksi didasarkan pada ekspresi pertama.
{
"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 bidang
Gunakan plugin processor_add_fields untuk menambahkan bidang log. Bagian ini menjelaskan parameter dan memberikan contoh konfigurasi untuk plugin processor_add_fields.
Konfigurasi
Penting Plugin processor_add_fields didukung di Logtail 0.16.28 dan versi yang lebih baru.
Konfigurasi berbasis formulir
Parameter
Atur Processor Type ke Add Fields. Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Fields To Add | Nama dan nilai bidang yang akan ditambahkan. Anda dapat menambahkan beberapa bidang. |
Ignore Duplicate Fields | Menentukan apakah akan mengabaikan bidang jika bidang dengan nama yang sama sudah ada. |
Contoh
Tambahkan bidang aaa2 dan aaa3. Berikut adalah contoh konfigurasi:
Konfigurasi JSON
Parameter
Atur type ke processor_add_fields. Tabel berikut menjelaskan parameter dalam detail.
Parameter | Jenis | Wajib | Deskripsi |
Fields | Map | Ya | Nama dan nilai bidang yang akan ditambahkan. Ini dalam format pasangan kunci-nilai. Anda dapat menambahkan beberapa bidang. |
IgnoreIfExist | Boolean | Tidak | Menentukan apakah akan mengabaikan bidang jika bidang dengan nama yang sama sudah ada. |
Contoh konfigurasi
Tambahkan bidang aaa2 dan aaa3. Berikut adalah contoh konfigurasi:
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 bidang
Gunakan plugin processor_drop untuk menghapus bidang log. Bagian ini menjelaskan parameter dan memberikan contoh konfigurasi untuk plugin processor_drop.
Konfigurasi
Penting Plugin processor_drop didukung di Logtail 0.16.28 dan versi yang lebih baru.
Konfigurasi berbasis formulir
Parameter
Atur Processor Type ke Drop Fields. Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Fields To Drop | Bidang yang akan dihapus. Anda dapat menentukan beberapa bidang. |
Contoh
Hapus bidang aaa1 dan aaa2 dari log. Berikut adalah contoh konfigurasi:
Konfigurasi JSON
Parameter
Atur type ke processor_drop. Tabel berikut menjelaskan parameter dalam detail.
Parameter | Jenis | Wajib | Deskripsi |
DropKeys | Array string | Ya | Bidang yang akan dihapus. Anda dapat menentukan beberapa bidang. |
Contoh
Hapus bidang aaa1 dan aaa2 dari log. Berikut adalah contoh konfigurasi:
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 bidang
Anda dapat menggunakan plugin processor_rename untuk mengubah nama bidang. Bagian ini menjelaskan parameter dan memberikan contoh konfigurasi untuk plugin processor_rename.
Konfigurasi
Penting Plugin processor_rename didukung di Logtail 0.16.28 dan versi yang lebih baru.
Konfigurasi berbasis formulir
Pengaturan parameter
Atur Processing Plugin Type ke Rename Fields. Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Source Field | Bidang sumber yang akan diubah namanya. |
Result Field | Nama baru untuk bidang tersebut. |
Report Error If Source Field Is Missing | Jika Anda memilih opsi ini, kesalahan dilaporkan jika bidang sumber tidak ditemukan dalam log. |
Contoh
Ubah nama bidang aaa1 menjadi bbb1 dan bidang aaa2 menjadi bbb2. Berikut adalah contoh konfigurasi:
Log mentah
"aaa1":"value1"
"aaa2":"value2"
"aaa3":"value3"
Konfigurasi plugin Logtail 
Hasil
"bbb1":"value1"
"bbb2":"value2"
"aaa3":"value3"
Konfigurasi JSON
Pengaturan parameter
Atur type ke processor_rename. Tabel berikut menjelaskan parameter dalam objek detail.
Parameter | Jenis | Wajib | Deskripsi |
NoKeyError
| Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika bidang sumber tidak ditemukan dalam log. |
SourceKeys
| Array string | Ya | Bidang sumber yang akan diubah namanya. |
DestKeys
| Array string | Ya | Nama baru untuk bidang tersebut. |
Contoh
Ubah nama bidang aaa1 menjadi bbb1 dan bidang aaa2 menjadi bbb2. Berikut adalah contoh konfigurasi:
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"
Plugin Pengemasan Bidang
Anda dapat menggunakan plugin processor_packjson untuk mengemas satu atau beberapa bidang menjadi satu bidang objek JSON. Bagian ini menjelaskan parameter dan memberikan contoh konfigurasi untuk plugin processor_packjson.
Konfigurasi
Penting Plugin processor_packjson didukung di Logtail 0.16.28 dan versi yang lebih baru.
Konfigurasi berbasis formulir
Parameter
Atur Processor Type ke Pack Fields. Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Source Fields | Bidang sumber yang akan dikemas. |
Result Field | Bidang setelah pengemasan. |
Keep Source Fields | Jika Anda memilih opsi ini, bidang sumber disimpan dalam log yang diurai. |
Report Error If Source Field Is Missing | Jika Anda memilih opsi ini, kesalahan dilaporkan jika bidang sumber tidak ditemukan dalam log mentah. |
Contoh
Kemas bidang a dan b yang ditentukan ke dalam bidang JSON bernama d_key. Berikut adalah contoh konfigurasi:
Konfigurasi JSON
Parameter
Atur type ke processor_packjson. Tabel berikut menjelaskan parameter dalam detail.
Parameter | Jenis | Wajib | Deskripsi |
SourceKeys | Array string | Ya | Bidang sumber yang akan dikemas. |
DestKey | String | Tidak | Bidang setelah pengemasan. |
KeepSource | Boolean | Tidak | Menentukan apakah akan menyimpan bidang sumber dalam log yang diurai. |
AlarmIfIncomplete | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika bidang sumber tidak ditemukan dalam log mentah. |
Contoh konfigurasi
Kemas bidang a dan b yang ditentukan ke dalam bidang JSON bernama d_key. Berikut adalah contoh konfigurasi:
Log mentah
"a":"1"
"b":"2"
Konfigurasi plugin Logtail
{
"processors":[
{
"type":"processor_packjson",
"detail": {
"SourceKeys": ["a","b"],
"DestKey":"d_key",
"KeepSource":true,
"AlarmIfEmpty":true
}
}
]
}
Hasil
"a":"1"
"b":"2"
"d_key":"{\"a\":\"1\",\"b\":\"2\"}"
Plugin perluas bidang JSON
Gunakan plugin processor_json untuk memperluas bidang JSON. Bagian ini menjelaskan parameter dan memberikan contoh konfigurasi untuk plugin processor_json.
Konfigurasi
Penting Plugin processor_json didukung di Logtail 0.16.28 dan versi yang lebih baru.
Konfigurasi berbasis formulir
Parameter
Atur Processor Type ke Expand JSON Field. Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Source Field | Nama bidang sumber yang akan diperluas. |
JSON Expansion Depth | Kedalaman perluasan JSON. Nilai default adalah 0, yang menunjukkan tidak ada batasan. Nilai 1 menunjukkan level saat ini. |
JSON Expansion Connector | Konektor untuk perluasan JSON. Nilai default adalah garis bawah (_). |
JSON Expansion Field Prefix | Awalan yang ditambahkan ke nama bidang selama perluasan JSON. |
Expand Array | Menentukan apakah akan memperluas tipe array. Parameter ini tersedia di Logtail 1.8.0 dan versi yang lebih baru. |
Keep Source Field | Jika opsi ini dipilih, bidang sumber disimpan dalam log yang diurai. |
Report Error If Source Field Is Missing | Jika opsi ini dipilih, kesalahan dilaporkan jika bidang sumber tidak ditemukan dalam log mentah. |
Use Source Field Name As Prefix For Expanded Fields | Jika opsi ini dipilih, nama bidang sumber digunakan sebagai awalan untuk semua nama bidang JSON yang diperluas. |
Keep Raw Log On Parsing Failure | Jika opsi ini dipilih, log mentah disimpan jika penguraian gagal. |
Contoh
Contoh ini memperluas bidang s_key. Menggunakan j sebagai awalan dan nama bidang sumber s_key sebagai awalan untuk nama bidang yang diperluas. Berikut adalah contoh konfigurasi:
Log mentah (jalur file yang dibaca oleh Logtail)
{"s_key":"{\"k1\":{\"k2\":{\"k3\":{\"k4\":{\"k51\":\"51\",\"k52\":\"52\"},\"k41\":\"41\"}}}}"}
Konfigurasi plugin Logtail

Hasil

Konfigurasi JSON
Parameter
Atur type ke processor_json. Tabel berikut menjelaskan parameter dalam detail.
Parameter | Jenis | Wajib | Deskripsi |
SourceKey | String | Ya | Nama bidang sumber yang akan diperluas. |
NoKeyError | Boolean | Tidak | Menentukan apakah akan melaporkan kesalahan jika bidang sumber tidak ditemukan dalam log mentah. |
ExpandDepth | Int | Tidak | Kedalaman perluasan JSON. Nilai default adalah 0, yang berarti tidak ada batasan. Nilai 1 menunjukkan level saat ini, dan seterusnya. |
ExpandConnector | String | Tidak | Konektor untuk perluasan JSON. Nilai default adalah garis bawah (_). |
Prefix | String | Tidak | Awalan yang ditambahkan ke nama bidang selama perluasan JSON. |
KeepSource | Boolean | Tidak | Menentukan apakah akan menyimpan bidang sumber dalam log yang diurai. |
UseSourceKeyAsPrefix | Boolean | Tidak | Menentukan apakah akan menggunakan nama bidang sumber sebagai awalan untuk semua nama bidang JSON yang diperluas. |
KeepSourceIfParseError | Boolean | Tidak | Menentukan apakah akan menyimpan log mentah jika penguraian gagal. |
ExpandArray | Boolean | Tidak | Menentukan apakah akan memperluas tipe array. Parameter ini didukung di Logtail 1.8.0 dan versi yang lebih baru. false (default): Jangan perluas array. true: Perluas array. Misalnya, {"k":["1","2"]} diperluas menjadi {"k[0]":"1","k[1]":"2"}.
|
Contoh
Contoh ini memperluas bidang s_key. Menggunakan j sebagai awalan dan nama bidang sumber s_key sebagai awalan untuk nama bidang yang diperluas. Berikut adalah contoh konfigurasi:
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": "content",
"NoKeyError":true,
"ExpandDepth":0,
"ExpandConnector":"-",
"Prefix":"j",
"KeepSource": false,
"UseSourceKeyAsPrefix": true
}
}
]
}
Hasil

Plugin petakan nilai bidang
Plugin processor_dict_map memetakan nilai bidang. Bagian ini menjelaskan parameter dan memberikan contoh konfigurasi.
Konfigurasi
Konfigurasi formulir
Atur Processor Type ke Field Value Mapping. Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Source Field | Nama bidang sumber. |
Result Field | Nama bidang yang dipetakan. |
Mapping Dictionary | Kamus yang memetakan kunci ke nilai. Gunakan parameter ini untuk langsung mengonfigurasi kamus pemetaan kecil. Hal ini menghindari kebutuhan akan file kamus CSV lokal.
Penting Konfigurasi Mapping Dictionary tidak berlaku jika Anda mengatur Local Dictionary. |
Local Dictionary | File kamus dalam format CSV. File ini menggunakan koma (,) sebagai pemisah dan tanda kutip ganda (") untuk membungkus referensi bidang. |
Advanced Parameters>Handle Missing Source Field | Pilih opsi ini untuk menangani kasus di mana bidang sumber tidak ada dalam log mentah. Sistem kemudian mengisi bidang hasil dengan nilai yang ditentukan di Result Field Padding Value. |
Advanced Parameters>Maximum Mapping Dictionary Size | Ukuran maksimum kamus pemetaan. Nilai default adalah 1000, yang berarti Anda dapat menyimpan hingga 1000 aturan pemetaan. Untuk membatasi penggunaan memori plugin di server, kurangi nilai ini. |
Advanced Parameters>Raw Log Processing Method | Menentukan cara menangani kasus di mana bidang yang dipetakan sudah ada dalam log mentah. |
Konfigurasi JSON
Atur type ke processor_dict_map. Tabel berikut menjelaskan parameter untuk detail.
Parameter | Jenis | Wajib | Deskripsi |
SourceKey | String | Ya | Nama bidang sumber. |
MapDict | Map | Tidak | Kamus pemetaan. Gunakan parameter ini untuk langsung mengonfigurasi kamus pemetaan kecil. Hal ini menghindari kebutuhan akan file kamus CSV lokal.
Penting Parameter MapDict tidak berlaku jika Anda mengatur parameter DictFilePath. |
DictFilePath | String | Tidak | File kamus dalam format CSV. File ini menggunakan koma (,) sebagai pemisah dan tanda kutip ganda (") untuk membungkus referensi bidang. |
DestKey | String | Tidak | Nama bidang yang dipetakan. |
HandleMissing | Boolean | Tidak | Menentukan apakah akan memproses log mentah jika bidang target tidak ada. true: Proses bidang tersebut. Sistem mengisi bidang hasil dengan nilai parameter Missing. false (default): Jangan proses bidang tersebut.
|
Missing | String | Tidak | Nilai yang digunakan untuk bidang hasil ketika bidang sumber tidak ada dalam log mentah. Nilai default adalah Unknown. Parameter ini hanya berlaku ketika Anda mengatur HandleMissing ke true. |
MaxDictSize | Int | Tidak | Ukuran maksimum kamus pemetaan. Nilai default adalah 1000, yang berarti Anda dapat menyimpan hingga 1000 aturan pemetaan. Untuk membatasi penggunaan memori plugin di server, kurangi nilai ini. |
Mode | String | Tidak | Menentukan cara menangani kasus di mana bidang yang dipetakan sudah ada dalam log mentah. |
Penggantian string
Gunakan plugin processor_string_replace untuk mengganti teks lengkap log, mengganti teks berdasarkan ekspresi reguler, atau menghapus karakter escape.
Deskripsi konfigurasi
Penting Plugin processor_string_replace didukung di Logtail 1.6.0 dan versi yang lebih baru.
Konfigurasi menggunakan formulir
Atur Processor Type ke String Replacement. Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi |
Source Field | Nama bidang sumber. |
Match Method | Menentukan metode pencocokan. Nilai yang valid: String Match: Mengganti konten target dengan string. Regular Expression Match: Mengganti konten target berdasarkan ekspresi reguler. Remove Escape Characters: Menghapus karakter escape.
|
Match Content | Masukkan konten yang akan dicocokkan. Jika Anda mengatur Match Method ke String Match, masukkan string yang cocok dengan konten yang akan diganti. Jika beberapa string cocok, semuanya diganti. Jika Anda mengatur Match Method ke Pencocokan Ekspresi Reguler, masukkan ekspresi reguler yang cocok dengan konten yang akan diganti. Jika beberapa string cocok, semuanya diganti. Anda juga dapat menggunakan grup ekspresi reguler untuk mencocokkan grup tertentu. Jika Anda mengatur Match Method ke Remove Escape Characters, Anda tidak perlu mengonfigurasi parameter ini.
|
Replace With | String yang digunakan untuk penggantian. Jika Anda mengatur Match Method ke String Match, masukkan string untuk mengganti konten asli. Jika Anda mengatur Match Method ke Regular Expression Match, masukkan string untuk mengganti konten asli. Anda dapat mengganti konten berdasarkan grup ekspresi reguler. Jika Anda mengatur Match Method ke Remove Escape Characters, Anda tidak perlu mengonfigurasi parameter ini.
|
Result Field | Tentukan bidang baru untuk konten yang diganti. |
Konfigurasi menggunakan JSON
Atur parameter type ke processor_string_replace. Tabel berikut menjelaskan parameter dalam objek detail.
Parameter | Jenis | Wajib | Deskripsi |
SourceKey
| String | Ya | Nama bidang sumber. |
Method
| String | Ya | Menentukan metode pencocokan. Nilai yang valid: const: Gunakan penggantian string.
regex: Gunakan penggantian ekspresi reguler.
unquote: Hapus karakter escape.
|
Match
| String | Tidak | Masukkan konten yang akan dicocokkan. Jika Anda mengatur Method ke const, masukkan string yang cocok dengan konten yang akan diganti. Jika beberapa string cocok, semuanya diganti. Jika Anda mengatur Method ke regex, masukkan ekspresi reguler yang cocok dengan konten yang akan diganti. Jika beberapa string cocok, semuanya diganti. Anda juga dapat menggunakan grup ekspresi reguler untuk mencocokkan grup tertentu. Jika Anda mengatur Method ke unquote, Anda tidak perlu mengonfigurasi parameter ini.
|
ReplaceString
| String | Tidak | String yang digunakan untuk penggantian. Nilai default adalah "". 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 mengganti konten berdasarkan grup ekspresi reguler. Jika Anda mengatur Method ke unquote, Anda tidak perlu mengonfigurasi parameter ini.
|
DestKey
| String | Tidak | Tentukan bidang baru untuk konten yang diganti. Jika Anda tidak menentukan parameter ini, tidak ada bidang baru yang dibuat. |
Contoh konfigurasi
Ganti konten menggunakan pencocokan string
Gunakan pencocokan string untuk mengganti Error: dalam bidang content dengan string kosong.
Konfigurasi menggunakan formulir
Log mentah:
"content": "2023-05-20 10:01:23 Error: Unable to connect to database."
Konfigurasi plugin Logtail:
Hasil:
"content": "2023-05-20 10:01:23 Unable to connect to database."
Konfigurasi menggunakan 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.",
Ganti konten menggunakan ekspresi reguler
Gunakan ekspresi reguler untuk mengganti string dalam bidang content yang cocok dengan ekspresi reguler \\u\w+\[\d{1,3};*\d{1,3}m|N/A dengan string kosong.
Konfigurasi menggunakan 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:
Hasil:
"content": "2022-09-16 09:03:31.013 INFO [TID: ] [Thread-30] c.s.govern.polygonsync.job.BlockTask : Block collection------end------\r",
Konfigurasi menggunakan 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",
Ganti konten menggunakan grup ekspresi reguler
Gunakan grup ekspresi reguler untuk mengganti 16 dalam bidang content dengan */24 dan tulis hasilnya ke bidang baru bernama new_ip.
Penting Saat Anda mengganti konten menggunakan grup ekspresi reguler, string pengganti tidak boleh mengandung {}. Anda hanya dapat menggunakan format seperti $1 dan $2.
Konfigurasi menggunakan formulir
Log mentah:
"content": "10.10.239.16"
Konfigurasi plugin Logtail:
Hasil:
"content": "10.10.239.16",
"new_ip": "10.10.239.*/24",
Konfigurasi menggunakan 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",
Hapus karakter escape
Konfigurasi menggunakan 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:
Hasil:
"content": "{\"UNAME\":\"\",\"GID\":\"\",\"PAID\":\"\",\"UUID\":\"\",\"STARTTIME\":\"\",\"ENDTIME\":\"\",\"UID\":\"2154212790\",\"page_num\":1,\"page_size\":10}",
Konfigurasi menggunakan 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}",