フィールド処理プラグインは、フィールドの追加、削除、変更、パック、展開、抽出に使用されます。
フィールド処理の例
次の表は、Simple Log Service に保存された後の生ログのデータ構造を示しています。この表では、区切り文字モードでフィールド抽出プラグインを使用した場合の結果と、プラグインを使用しない場合の結果を比較しています。抽出プラグインを使用するとデータが構造化され、その後のクエリが容易になります。
生ログ | フィールド処理プラグインなし | 区切り文字モードでフィールド抽出プラグインを使用 |
| Content: "time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}" | フィールド値は区切り文字モードで抽出されます。フィールド名は time、val_key1、val_key2、val_key3、value_key4_inner1、および value_key4_inner2 に設定されます。 |
フィールド処理プラグインの概要
Simple Log Service は、次のタイプのフィールド処理プラグインを提供します。要件に基づいてプラグインを選択できます。
プラグイン名 | タイプ | 説明 |
フィールドの抽出 | 拡張 | 次のモードをサポートしています:
|
フィールドの追加 | 拡張 | ログに新しいフィールドを追加します。 |
フィールドの削除 | 拡張 | 指定されたフィールドを削除します。 |
フィールド名の変更 | 拡張 | フィールド名を変更します。 |
フィールドのパック | 拡張 | 複数のフィールドを単一の JSON オブジェクトにパックします。 |
JSON フィールドの展開 | 拡張 | JSON 文字列フィールドを個別のフィールドに展開します。 |
フィールド値のマッピング | 拡張 | マッピングテーブルに基づいてフィールド値を置換または変換します。 |
文字列の置換 | 拡張 | テキストログの全文置換、正規表現ベースの置換、またはエスケープ文字の削除を実行します。 |
エントリポイント
Logtail プラグインを使用してログを処理する場合は、Logtail 構成を作成または変更するときに Logtail プラグイン構成を追加できます。詳細については、「概要」をご参照ください。
制限
テキストログとコンテナーの標準出力は、フォームベースの構成のみをサポートします。他の入力ソースは JSON 構成のみをサポートします。
正規表現モードでフィールドを抽出する場合、次の制限が適用されます。
Go の正規表現エンジンは RE2 に基づいています。PCRE エンジンと比較して、次の制限があります:
名前付きグループ構文の違い
Go は
(?P<name>...)構文を使用し、PCRE で使用される(?<name>...)構文は使用しません。サポートされていない正規表現パターン
アサーション:
(?=...)、(?!...)、(?<=...)、(?<!...)。条件式:
(?(condition)true|false)。再帰的マッチング:
(?R)、(?0)。サブルーチン参照:
(?&name)、(?P>name)。アトミックグループ:
(?>...)。
Regex101 などのツールで正規表現をデバッグする場合は、上記のサポートされていないパターンを避けてください。そうしないと、プラグインはログを処理できません。
フィールド抽出プラグイン
正規表現モード、区切り文字モード、CSV モード、単一文字区切りモード、複数文字区切りモード、キーと値のペアモード、または Grok モードでログフィールドを抽出します。
正規表現モード
区切り文字モード
CSV モード
単一文字区切りモード
複数文字区切りモード
キーと値のペアモード
Grok モード
フィールド追加プラグイン
processor_add_fields プラグインを使用してログフィールドを追加します。このセクションでは、processor_add_fields プラグインのパラメーターについて説明し、構成例を示します。
構成
processor_add_fields プラグインは Logtail 0.16.28 以降でサポートされています。
フォームベースの構成
パラメーター
[プロセッサタイプ] を [フィールドの追加] に設定します。次の表にパラメーターを示します。
パラメーター
説明
追加するフィールド
追加するフィールドの名前と値。複数のフィールドを追加できます。
重複フィールドを無視
同じ名前のフィールドが既に存在する場合にフィールドを無視するかどうかを指定します。
例
aaa2と aaa3 フィールドを追加します。以下に構成例を示します。生ログ
"aaa1":"value1"Logtail プラグイン構成

結果
"aaa1":"value1" "aaa2":"value2" "aaa3":"value3"
JSON 構成
パラメーター
typeをprocessor_add_fieldsに設定します。次の表にdetailのパラメーターを示します。パラメーター
タイプ
必須
説明
Fields
マップ
はい
追加するフィールドの名前と値。これはキーと値のペア形式です。複数のフィールドを追加できます。
IgnoreIfExist
ブール値
いいえ
同じ名前のフィールドが既に存在する場合にフィールドを無視するかどうかを指定します。
true: フィールドを無視します。
false (デフォルト): フィールドを無視しません。
構成例
aaa2 と aaa3 フィールドを追加します。以下に構成例を示します。
生ログ
"aaa1":"value1"Logtail プラグイン構成
{ "processors":[ { "type":"processor_add_fields", "detail": { "Fields": { "aaa2": "value2", "aaa3": "value3" } } } ] }結果
"aaa1":"value1" "aaa2":"value2" "aaa3":"value3"
フィールド削除プラグイン
processor_drop プラグインを使用してログフィールドを削除します。このセクションでは、processor_drop プラグインのパラメーターについて説明し、構成例を示します。
構成
processor_drop プラグインは Logtail 0.16.28 以降でサポートされています。
フォームベースの構成
パラメーター
[プロセッサタイプ] を [フィールドの削除] に設定します。次の表にパラメーターを示します。
パラメーター
説明
削除するフィールド
削除するフィールド。複数のフィールドを指定できます。
例
ログから
aaa1とaaa2フィールドを削除します。以下に構成例を示します。生ログ
"aaa1":"value1" "aaa2":"value2" "aaa3":"value3"Logtail プラグイン構成

結果
"aaa3":"value3"
JSON 構成
パラメーター
type を processor_drop に設定します。次の表に detail のパラメーターを示します。
パラメーター
タイプ
必須
説明
DropKeys
文字列配列
はい
削除するフィールド。複数のフィールドを指定できます。
例
ログから aaa1 と aaa2 フィールドを削除します。以下に構成例を示します。
生ログ
"aaa1":"value1" "aaa2":"value2" "aaa3":"value3"Logtail プラグイン構成
{ "processors":[ { "type":"processor_drop", "detail": { "DropKeys": ["aaa1","aaa2"] } } ] }結果
"aaa3":"value3"
フィールド名変更プラグイン
processor_rename プラグインを使用してフィールド名を変更できます。このセクションでは、processor_rename プラグインのパラメーターについて説明し、構成例を示します。
構成
processor_rename プラグインは Logtail 0.16.28 以降でサポートされています。
フォームベースの構成
パラメーター設定
[処理プラグインタイプ] を [フィールド名の変更] に設定します。次の表にパラメーターを示します。
パラメーター
説明
ソースフィールド
名前を変更するソースフィールド。
結果フィールド
フィールドの新しい名前。
ソースフィールドが見つからない場合にエラーを報告
このオプションを選択すると、ログにソースフィールドが見つからない場合にエラーが報告されます。
例
aaa1フィールドの名前を bbb1 に、aaa2 フィールドの名前を bbb2 に変更します。以下に構成例を示します。生ログ
"aaa1":"value1" "aaa2":"value2" "aaa3":"value3"Logtail プラグイン構成

結果
"bbb1":"value1" "bbb2":"value2" "aaa3":"value3"
JSON 構成
パラメーター設定
typeをprocessor_renameに設定します。次の表にdetailオブジェクトのパラメーターを示します。パラメーター
タイプ
必須
説明
NoKeyErrorブール値
いいえ
ログにソースフィールドが見つからない場合にエラーを報告するかどうかを指定します。
true: エラーが報告されます。
false (デフォルト): エラーは報告されません。
SourceKeys文字列配列
はい
名前を変更するソースフィールド。
DestKeys文字列配列
はい
フィールドの新しい名前。
例
aaa1フィールドの名前をbbb1に、aaa2フィールドの名前をbbb2に変更します。以下に構成例を示します。生ログ
"aaa1":"value1" "aaa2":"value2" "aaa3":"value3"Logtail プラグイン構成
{ "processors":[ { "type":"processor_rename", "detail": { "SourceKeys": ["aaa1","aaa2"], "DestKeys": ["bbb1","bbb2"], "NoKeyError": true } } ] }結果
"bbb1":"value1" "bbb2":"value2" "aaa3":"value3"
フィールドパックプラグイン
processor_packjson プラグインを使用して、1 つ以上のフィールドを JSON オブジェクトフィールドにパックできます。このセクションでは、processor_packjson プラグインのパラメーターについて説明し、構成例を示します。
構成
processor_packjson プラグインは Logtail 0.16.28 以降でサポートされています。
フォームベースの構成
パラメーター
[プロセッサタイプ] を [フィールドのパック] に設定します。次の表にパラメーターを示します。
パラメーター
説明
ソースフィールド
パックするソースフィールド。
結果フィールド
パック後のフィールド。
ソースフィールドを保持
このオプションを選択すると、解析されたログにソースフィールドが保持されます。
ソースフィールドが見つからない場合にエラーを報告
このオプションを選択すると、生ログにソースフィールドが見つからない場合にエラーが報告されます。
例
指定された a と b フィールドを d_key という名前の JSON フィールドにパックします。以下に構成例を示します。
生ログ
"a":"1" "b":"2"Logtail プラグイン構成

結果
"a":"1" "b":"2" "d_key":"{\"a\":\"1\",\"b\":\"2\"}"
JSON 構成
パラメーター
type を processor_packjson に設定します。次の表に detail のパラメーターを示します。
パラメーター
タイプ
必須
説明
SourceKeys
文字列配列
はい
パックするソースフィールド。
DestKey
String
いいえ
パック後のフィールド。
KeepSource
ブール値
いいえ
解析されたログにソースフィールドを保持するかどうかを指定します。
true (デフォルト): ソースフィールドを保持します。
false: ソースフィールドを保持しません。
AlarmIfIncomplete
ブール値
いいえ
生ログにソースフィールドが見つからない場合にエラーを報告するかどうかを指定します。
true (デフォルト): エラーが報告されます。
false: エラーは報告されません。
構成例
指定された a と b フィールドを d_key という名前の JSON フィールドにパックします。以下に構成例を示します。
生ログ
"a":"1" "b":"2"Logtail プラグイン構成
{ "processors":[ { "type":"processor_packjson", "detail": { "SourceKeys": ["a","b"], "DestKey":"d_key", "KeepSource":true, "AlarmIfEmpty":true } } ] }結果
"a":"1" "b":"2" "d_key":"{\"a\":\"1\",\"b\":\"2\"}"
JSON フィールド展開プラグイン
processor_json プラグインを使用して JSON フィールドを展開します。このセクションでは、processor_json プラグインのパラメーターについて説明し、構成例を示します。
構成
processor_json プラグインは Logtail 0.16.28 以降でサポートされています。
フォームベースの構成
パラメーター
[プロセッサタイプ] を [JSON フィールドの展開] に設定します。次の表にパラメーターを示します。
パラメーター
説明
ソースフィールド
展開するソースフィールドの名前。
JSON 展開深度
JSON 展開の深度。デフォルト値は 0 で、制限がないことを示します。値 1 は現在のレベルを示します。
JSON 展開コネクタ
JSON 展開用のコネクタ。デフォルト値はアンダースコア (_) です。
JSON 展開フィールドプレフィックス
JSON 展開中にフィールド名に追加するプレフィックス。
配列の展開
配列タイプを展開するかどうかを指定します。このパラメーターは Logtail 1.8.0 以降で利用可能です。
ソースフィールドを保持
このオプションを選択すると、解析されたログにソースフィールドが保持されます。
ソースフィールドが見つからない場合にエラーを報告
このオプションを選択すると、生ログにソースフィールドが見つからない場合にエラーが報告されます。
展開されたフィールドのプレフィックスとしてソースフィールド名を使用
このオプションを選択すると、ソースフィールド名がすべての展開された JSON フィールド名のプレフィックスとして使用されます。
解析失敗時に生ログを保持
このオプションを選択すると、解析に失敗した場合に生ログが保持されます。
例
この例では、
s_keyフィールドを展開します。プレフィックスとしてjを使用し、展開されたフィールド名のプレフィックスとしてソースフィールド名s_keyを使用します。以下に構成例を示します。生ログ (Logtail によって読み取られるファイルパス)
{"s_key":"{\"k1\":{\"k2\":{\"k3\":{\"k4\":{\"k51\":\"51\",\"k52\":\"52\"},\"k41\":\"41\"}}}}"}Logtail プラグイン構成

結果

JSON 構成
パラメーター
typeをprocessor_jsonに設定します。次の表にdetailのパラメーターを示します。パラメーター
タイプ
必須
説明
SourceKey
String
はい
展開するソースフィールドの名前。
NoKeyError
ブール値
いいえ
生ログにソースフィールドが見つからない場合にエラーを報告するかどうかを指定します。
true (デフォルト): エラーが報告されます。
false: エラーは報告されません。
ExpandDepth
Int
いいえ
JSON 展開の深度。デフォルト値は 0 で、制限がないことを意味します。値 1 は現在のレベルを示し、以下同様です。
ExpandConnector
String
いいえ
JSON 展開用のコネクタ。デフォルト値はアンダースコア (_) です。
Prefix
String
いいえ
JSON 展開中にフィールド名に追加するプレフィックス。
KeepSource
ブール値
いいえ
解析されたログにソースフィールドを保持するかどうかを指定します。
true (デフォルト): ソースフィールドを保持します。
false: ソースフィールドを保持しません。
UseSourceKeyAsPrefix
ブール値
いいえ
ソースフィールド名をすべての展開された JSON フィールド名のプレフィックスとして使用するかどうかを指定します。
KeepSourceIfParseError
ブール値
いいえ
解析に失敗した場合に生ログを保持するかどうかを指定します。
true (デフォルト): 生ログを保持します。
false: 生ログを保持しません。
ExpandArray
ブール値
いいえ
配列タイプを展開するかどうかを指定します。このパラメーターは Logtail 1.8.0 以降でサポートされています。
false (デフォルト): 配列を展開しません。
true: 配列を展開します。たとえば、
{"k":["1","2"]}は{"k[0]":"1","k[1]":"2"}に展開されます。
例
この例では、
s_keyフィールドを展開します。プレフィックスとしてjを使用し、展開されたフィールド名のプレフィックスとしてソースフィールド名s_keyを使用します。以下に構成例を示します。生ログ (Logtail によって読み取られるファイルパス)
{"s_key":"{\"k1\":{\"k2\":{\"k3\":{\"k4\":{\"k51\":\"51\",\"k52\":\"52\"},\"k41\":\"41\"}}}}"}Logtail プラグイン構成
{ "processors":[ { "type":"processor_json", "detail": { "SourceKey": "content", "NoKeyError":true, "ExpandDepth":0, "ExpandConnector":"-", "Prefix":"j", "KeepSource": false, "UseSourceKeyAsPrefix": true } } ] }結果

フィールド値マッピングプラグイン
processor_dict_map プラグインはフィールド値をマッピングします。このセクションでは、そのパラメーターについて説明し、構成例を示します。
構成
フォーム構成
[プロセッサタイプ] を [フィールド値マッピング] に設定します。次の表にパラメーターを示します。
パラメーター | 説明 |
ソースフィールド | ソースフィールド名。 |
結果フィールド | マッピングされたフィールドの名前。 |
マッピング辞書 | キーを値にマッピングする辞書。 このパラメーターを使用して、小さなマッピング辞書を直接構成します。これにより、ローカルの CSV 辞書ファイルが不要になります。 重要 [ローカル辞書] を設定した場合、[マッピング辞書] の構成は有効になりません。 |
ローカル辞書 | CSV 形式の辞書ファイル。このファイルは、区切り文字としてカンマ (,) を使用し、フィールド参照を囲むために二重引用符 (") を使用します。 |
詳細パラメーター>ソースフィールドが見つからない場合の処理 | このオプションを選択すると、生ログにソースフィールドがない場合のケースを処理します。システムは、[結果フィールドのパディング値] で指定された値で結果フィールドを埋めます。 |
詳細パラメーター>最大マッピング辞書サイズ | マッピング辞書の最大サイズ。デフォルト値は 1000 で、最大 1000 個のマッピングルールを保存できることを意味します。 サーバー上のプラグインのメモリ使用量を制限するには、この値を小さくします。 |
詳細パラメーター>生ログ処理メソッド | マッピングされたフィールドが生ログに既に存在する場合の処理方法を指定します。
|
JSON 構成
type を processor_dict_map に設定します。次の表に detail のパラメーターを示します。
パラメーター | タイプ | 必須 | 説明 |
SourceKey | String | はい | ソースフィールド名。 |
MapDict | マップ | いいえ | マッピング辞書。 このパラメーターを使用して、小さなマッピング辞書を直接構成します。これにより、ローカルの CSV 辞書ファイルが不要になります。 重要 MapDict パラメーターは、DictFilePath パラメーターを設定した場合は効果がありません。 |
DictFilePath | 文字列 | いいえ | CSV フォーマットの辞書ファイルです。このファイルは、区切り文字としてカンマ (,) を使用し、フィールド参照を囲むために二重引用符 (") を使用します。 |
DestKey | String | いいえ | マップされたフィールドの名前。 |
HandleMissing | ブール値 | いいえ | ターゲットフィールドが存在しない場合に、生のログを処理するかどうかを指定します。
|
欠落 | 文字列 | いいえ | raw ログにソースフィールドが存在しない場合、結果フィールドに使用する値です。デフォルト値は このパラメーターは、HandleMissing を true に設定した場合にのみ有効になります。 |
MaxDictSize | 整数 | いいえ | マッピング辞書の最大サイズ。デフォルト値は 1000 で、最大 1000 個のマッピングルールを格納できます。 サーバー上のプラグインのメモリ使用量を制限するには、この値を小さくします。 |
モード | 文字列 | いいえ | マップされたフィールドが生ログに既に存在する場合の処理方法を指定します。
|
文字列の置換
processor_string_replace プラグインを使用して、ログの全文を置換したり、正規表現に基づいてテキストを置換したり、エスケープ文字を削除したりします。
構成の説明
processor_string_replace プラグインは Logtail 1.6.0 以降でサポートされています。
フォームを使用した構成
[プロセッサータイプ] を [文字列の置換] に設定します。次の表にパラメーターを示します。
パラメーター | 説明 |
ソースフィールド | ソースフィールドの名前。 |
一致メソッド | 一致メソッドを指定します。有効な値:
|
コンテンツの一致 | 一致させるコンテンツを入力します。
|
置換 | 置換に使用する文字列。
|
結果フィールド | 置換されたコンテンツの新しいフィールドを指定します。 |
JSON を使用した構成
type パラメーターを processor_string_replace に設定します。次の表に detail オブジェクトのパラメーターを示します。
パラメーター | タイプ | 必須 | 説明 |
| 文字列 | はい | ソースフィールドの名前。 |
| 文字列 | はい | 一致メソッドを指定します。有効な値:
|
| 文字列 | いいえ | 一致させるコンテンツを入力します。
|
| 文字列 | いいえ | 置換に使用する文字列。デフォルト値は "" です。
|
| 文字列 | いいえ | 置換されたコンテンツの新しいフィールドを指定します。このパラメーターを指定しない場合、新しいフィールドは作成されません。 |
構成例
文字列一致を使用したコンテンツの置換
文字列一致を使用して、Error: フィールドの content を空の文字列に置換します。
フォームを使用した構成
元のログ:
"content": "2023-05-20 10:01:23 Error: Unable to connect to database."Logtail プラグイン構成:

結果:
"content": "2023-05-20 10:01:23 Unable to connect to database."
JSON を使用した構成
元のログ:
"content": "2023-05-20 10:01:23 Error: Unable to connect to database."Logtail プラグイン構成:
{ "processors":[ { "type":"processor_string_replace", "detail": { "SourceKey": "content", "Method": "const", "Match": "Error: ", "ReplaceString": "" } } ] }結果:
"content": "2023-05-20 10:01:23 Unable to connect to database.",
正規表現を使用したコンテンツの置換
正規表現を使用して、content フィールド内の正規表現 \\u\w+\[\d{1,3};*\d{1,3}m|N/A に一致する文字列を空の文字列に置換します。
フォームを使用した構成
元のログ:
"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"Logtail プラグイン構成:

結果:
"content": "2022-09-16 09:03:31.013 INFO [TID: ] [Thread-30] c.s.govern.polygonsync.job.BlockTask : Block collection------end------\r",
JSON を使用した構成
元のログ:
"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"Logtail プラグイン構成:
{ "processors":[ { "type":"processor_string_replace", "detail": { "SourceKey": "content", "Method": "regex", "Match": "\\\\u\\w+\\[\\d{1,3};*\\d{1,3}m|N/A", "ReplaceString": "" } } ] }結果:
"content": "2022-09-16 09:03:31.013 INFO [TID: ] [Thread-30] c.s.govern.polygonsync.job.BlockTask : Block collection------end------\r",
正規表現グループを使用したコンテンツの置換
正規表現グループを使用して、content フィールドの 16 を */24 に置換し、結果を new_ip という名前の新しいフィールドに書き込みます。
正規表現グループを使用してコンテンツを置換する場合、置換文字列に {} を含めることはできません。$1 や $2 などのフォーマットのみ使用できます。
フォームを使用した構成
元のログ:
"content": "10.10.239.16"Logtail プラグイン構成:

結果:
"content": "10.10.239.16", "new_ip": "10.10.239.*/24",
JSON を使用した構成
元のログ:
"content": "10.10.239.16"Logtail プラグイン構成:
{ "processors":[ { "type":"processor_string_replace", "detail": { "SourceKey": "content", "Method": "regex", "Match": "(\\d.*\\.)\\d+", "ReplaceString": "$1*/24", "DestKey": "new_ip" } } ] }結果:
"content": "10.10.239.16", "new_ip": "10.10.239.*/24",
エスケープ文字の削除
フォームを使用した構成
元のログ:
"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}"Logtail プラグイン構成:

結果:
"content": "{\"UNAME\":\"\",\"GID\":\"\",\"PAID\":\"\",\"UUID\":\"\",\"STARTTIME\":\"\",\"ENDTIME\":\"\",\"UID\":\"2154212790\",\"page_num\":1,\"page_size\":10}",
JSON を使用した構成
元のログ:
"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}"Logtail プラグイン構成:
{ "processors":[ { "type":"processor_string_replace", "detail": { "SourceKey": "content", "Method": "unquote" } } ] }結果:
"content": "{\"UNAME\":\"\",\"GID\":\"\",\"PAID\":\"\",\"UUID\":\"\",\"STARTTIME\":\"\",\"ENDTIME\":\"\",\"UID\":\"2154212790\",\"page_num\":1,\"page_size\":10}",
関連資料
API 操作を使用した Logtail パイプラインの設定:
コンソールでの処理プラグインの設定:







