Logtailを使用してログを収集する場合、Logtailプラグインを追加して、正規表現、アンカー、CSV、1文字区切り文字、複数文字区切り文字、キーと値のペア、およびGrokモードでログフィールドからコンテンツを抽出できます。 このトピックでは、Logtailプラグインのパラメーターについて説明し、プラグインの設定方法の例を示します。
制限事項
テキストログとコンテナーstdoutおよびstderrの入力プラグインは、フォーム設定のみをサポートしています。 その他の入力プラグインは、JSONでのエディター設定のみをサポートします。
エントリーポイント
Logtailプラグインを使用してログを処理する場合は、Logtail設定を作成または変更するときにLogtailプラグイン設定を追加できます。 詳細については、「データ処理用Logtailプラグインの概要」をご参照ください。
Regexモード
正規表現を使用して、ログフィールドからコンテンツを抽出できます。
フォーム設定
パラメーター
[プロセッサタイプ] を [フィールドの抽出 (正規表現モード)] に設定します。 次に、次の表に基づいて他のパラメーターを設定します。
パラメーター
説明
元のフィールド
元のフィールドの名前。
正規表現
正規表現を入力します。 コンテンツを抽出するフィールドを括弧
()
で囲む必要があります。新しいフィールド
抽出されたコンテンツに指定するフィールド名。 複数のフィールド名を指定できます。
元のフィールドの欠落エラーを報告する
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。
Regex不一致エラーの報告
元のフィールドの値が正規表現と一致しない場合にエラーを報告するかどうかを指定します。
元のフィールドを保持
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。
解析に失敗した場合に元のフィールドを保持する
生ログの解析に失敗した後に取得される新しいログに元のフィールドを保持するかどうかを指定します。
フルRegexマッチ
完全一致モードで元のフィールドの値を抽出するかどうかを指定します。 このオプションを選択すると、[新規フィールド] で指定されたすべてのフィールドが、正規表現で指定された正規表現に基づく元のフィールドの値と一致する場合にのみ、元のフィールドの値が抽出されます。
設定例
コンテンツフィールドの値を正規表現モードで抽出し、値に
ip
、time
、method、url、request_time、request_length、status、length、ref_url、browserのフィールド名を指定します。生ログ
"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"
データ処理用のLogtailプラグイン設定
結果
"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でのエディター設定
パラメーター
typeをprocessor_regexに設定します。 次に、次の表に基づいて他のパラメーターを詳細に設定します。
パラメーター
データ型
必須
説明
SourceKey
String
課金されます
元のフィールドの名前。
正規表現
String
課金されます
正規表現を入力します。 コンテンツを抽出するフィールドを括弧
()
で囲む必要があります。キー
文字列配列
課金されます
抽出されたコンテンツに指定するフィールド名。 例: ["ip", "time", "method"] 。
NoKeyError
ブール値
課金されません
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。 有効な値:
true
false (デフォルト)
NoMatchError
ブール値
課金されません
元のフィールドの値が正規表現と一致しない場合にエラーを報告するかどうかを指定します。 有効な値:
true (デフォルト)
false
KeepSource
ブール値
課金されません
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。 有効な値:
true
false (デフォルト)
フルマッチ
ブール値
課金されません
完全一致モードで元のフィールドの値を抽出するかどうかを指定します。 有効な値:
true (デフォルト): Keysで指定されたすべてのフィールドが、Regexで指定された正規表現に基づく元のフィールドの値と一致する場合にのみ、元のフィールドの値が抽出されます。
false: Keysで指定された一部のフィールドのみが、Regexで指定された正規表現に基づいて元のフィールドの値と一致する場合でも、元のフィールドの値が抽出されます。
KeepSourceIfParseError
ブール値
課金されません
生ログの解析に失敗した後に取得される新しいログに元のフィールドを保持するかどうかを指定します。 有効な値:
true (デフォルト)
false
設定例
contentフィールドの値を正規表現モードで抽出し、値にフィールド名ip、time、method、url、request_time、request_length、status、length、ref_url、およびbrowserを指定します。
生ログ
"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"
データ処理用の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 } }
結果
"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形式のフィールドからコンテンツを抽出する場合は、フィールドを展開できます。
フォーム設定
パラメーター
[プロセッサタイプ] を [フィールドの抽出 (アンカーモード)] に設定します。 次に、次の表に基づいて他のパラメーターを設定します。
パラメーター
説明
元のフィールド
元のフィールドの名前。
アンカーパラメータ
キーワードをアンカーするように設定されているフィールド。
スタートキーワード
アンカーの開始を指定するキーワード。 このパラメーターを設定しない場合、文字列の先頭が一致します。
終了キーワード
アンカーの終了を指定するキーワード。 このパラメーターを設定しない場合、文字列の末尾が一致します。
新しいフィールド
抽出されたコンテンツに指定するフィールド名。
フィールドタイプ
フィールドのタイプ。 有効な値: stringとjson。
JSON拡張
JSON形式のフィールドを展開するかどうかを指定します。
拡張キーを連結する文字
拡張されたキーを連結するために使用される文字。 デフォルト値はアンダースコア (_) です。
JSON拡張の最大深度
JSON拡張の最大深度。 デフォルト値: 0。これは、最大深度が無制限であることを示します。
元のフィールドの欠落エラーを報告する
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。
レポートキーワード欠落エラー
生ログで一致するキーワードがない場合にエラーを報告するかどうかを指定します。
元のフィールドを保持
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。
設定例
アンカーモードでcontentフィールドの値を抽出し、値にフィールド名time、val_key1、val_key2、val_key3、value_key4_inner1、およびvalue_key4_inner2を指定します。
生ログ
"content" : "time:2022.09.12 20:55:36\t json :{\" key1\" : \" xx\", \" key2\": false, \" key3\":123.456, \" key4\" : {\" inner1\": 1, \" inner2\": false}"
データ処理用のLogtailプラグイン設定
結果
"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でのエディター設定
パラメーター
typeをprocessor_anchorに設定します。 次に、次の表に基づいて他のパラメーターを詳細に設定します。
パラメーター
データ型
必須
説明
SourceKey
String
課金されます
元のフィールドの名前。
アンカー
アンカー配列
課金されます
キーワードをアンカーするように設定されているフィールド。
開始
String
課金されます
アンカーの開始を指定するキーワード。 このパラメーターを設定しない場合、文字列の先頭が一致します。
停止
String
課金されます
アンカーの終了を指定するキーワード。 このパラメーターを設定しない場合、文字列の末尾が一致します。
フィールド名
String
課金されます
抽出されたコンテンツに指定するフィールド名。
フィールドタイプ
String
課金されます
フィールドのタイプ。 有効な値: stringとjson。
ExpondJson
ブール値
課金されません
JSON形式のフィールドを展開するかどうかを指定します。 有効な値:
true
false (デフォルト)
このパラメーターは、FieldTypeをjsonに設定した場合にのみ有効になります。
ExpondConnecter
String
課金されません
拡張されたキーを連結するために使用される文字。 デフォルト値はアンダースコア (_) です。
MaxExpondDepth
Int
課金されません
JSON拡張の最大深度。 デフォルト値: 0。これは、最大深度が無制限であることを示します。
NoAnchorError
ブール値
課金されません
生ログで一致するキーワードがない場合にエラーを報告するかどうかを指定します。 有効な値:
true
false (デフォルト)
NoKeyError
ブール値
課金されません
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。 有効な値:
true
false (デフォルト)
設定例
アンカーモードでcontentフィールドの値を抽出し、値にフィールド名time、val_key1、val_key2、val_key3、value_key4_inner1、およびvalue_key4_inner2を指定します。
生ログ
"content" : "time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}"
データ処理用の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 } ] } }
結果
"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"
CSVモード
CSV形式のログを解析し、CSVモードでログのフィールドからコンテンツを抽出できます。
フォーム設定
パラメーター
[プロセッサタイプ] を [フィールドの抽出 (CSVモード)] に設定します。 次に、次の表に基づいて他のパラメーターを設定します。
パラメーター
説明
元のフィールド
元のフィールドの名前。
新しいフィールド
抽出されたコンテンツに指定するフィールド名。 複数のフィールド名を指定できます。
重要元のフィールドの値から [新規フィールド] で指定されたフィールドに一致しない場合、そのフィールドはスキップされます。
デリミタ
区切り文字。 デフォルト値は、コンマ (,) です。
余分な部分を保持する
[新規フィールド] で指定された各フィールドの一致がシステムによって検出された後、元のフィールドの値に残っているコンテンツを保持するかどうかを指定します。 理解を容易にするために、このトピックではコンテンツを過剰部分と呼びます。
過剰部分の解析
超過部分を解析するかどうかを指定します。 このオプションを選択した場合は、超過部品が割り当てられるフィールドのプレフィックス名を設定して、超過部品が割り当てられるフィールドの名前のプレフィックスを指定できます。
[余剰パーツの保持] を選択し、[余剰パーツの解析] を選択しない場合、余剰パーツは _decode_preserve_ フィールドに格納されます。
説明余分な部分に無効なデータが含まれている場合は、CSV形式でデータを標準化して保存する必要があります。
超過部分が割り当てられるフィールドの名前プレフィックス
超過部分が割り当てられるフィールドの名前のプレフィックス。 たとえば、このパラメーターを展開_フィールドの名前はexpand_1とexpand_2です。
フィールドの前のスペースを無視
元のフィールドの値の先頭にあるスペースをスキップするかどうかを指定します。
元のフィールドを保持
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。
元のフィールドの欠落エラーを報告する
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。
設定例
csvフィールドの値を抽出します。
生ログ
{ "csv": "2022-06-09,192.0.2.0,\"{\"\" key1\"\":\"\" value\"\"\"\" key2\"\:{\"\"key3\"\"\"\"文字列 \"\"\"\"}}\"" ...... }
データ処理用のLogtailプラグイン設定
結果
{ "date": "2022-06-09" 、 "ip": "192.0.2.0" 、 "content": "{\" key1\":\" value\",\" key2\":{\" key3\":\" string\"}}" ...... }
JSONでのエディター設定
パラメーター
typeをprocessor_csvに設定します。 次に、次の表に基づいて他のパラメーターを詳細に設定します。
パラメーター
データ型
必須
説明
SourceKey
String
課金されます
元のフィールドの名前。
SplitKeys
文字列配列
課金されます
抽出されたコンテンツに指定するフィールド名。 例: ["date", "ip", "content"] 。
重要元のフィールドの値からSplitKeysで指定されたフィールドに一致しない場合、そのフィールドはスキップされます。
PreserveOthers
ブール値
課金されません
値からSplitKeysで指定された各フィールドの一致をシステムが見つけた後に、超過部分を保持するかどうかを指定します。 有効な値:
true
false (デフォルト)
ExpandOthers
ブール値
課金されません
超過部分を解析するかどうかを指定します。 有効な値:
true 。
ExpandOthersをtrueに設定して超過部分を解析し、ExpandKeyPrefixを設定して、超過部分が割り当てられるフィールドの名前のプレフィックスを指定できます。
false (デフォルト) 。
PreserveOthersをtrueに、ExpandOthersをfalseに設定した場合、超過部分は _decode_preserve_ フィールドに格納されます。
説明余分な部分に無効なデータが含まれている場合は、CSV形式でデータを標準化して保存する必要があります。
ExpandKeyPrefix
String
課金されません
超過部分が割り当てられるフィールドの名前のプレフィックス。 たとえば、このパラメーターを展開_フィールドの名前はexpand_1とexpand_2です。
TrimLeadingSpace
ブール値
課金されません
元のフィールドの値の先頭にあるスペースをスキップするかどうかを指定します。 有効な値:
true
false (デフォルト)
SplitSep
String
課金されません
区切り文字。 デフォルト値は、コンマ (,) です。
KeepSource
ブール値
課金されません
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。 有効な値:
true
false (デフォルト)
NoKeyError
ブール値
課金されません
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。 有効な値:
true
false (デフォルト)
設定例
csvフィールドの値を抽出します。
生ログ
{ "csv": "2022-06-09,192.0.2.0,\"{\"\"key1\"\":\"\"value\"\",\"\"key2\"\":{\"\"key3\"\":\"\"string\"\"}}\"", ...... }
データ処理用のLogtailプラグイン設定
{ ...... "type":"processor_csv", "detail":{ "SourceKey":"csv", "SplitKeys":["date", "ip", "content"], } ...... }
結果
{ "date": "2022-06-09", "ip": "192.0.2.0", "content": "{\"key1\":\"value\",\"key2\":{\"key3\":\"string\"}}" ...... }
1文字区切り文字モード
1文字の区切り文字を使用して、ログフィールドからコンテンツを抽出できます。 引用符を使用して区切り文字を囲むことができます。
フォーム設定
パラメーター
[プロセッサタイプ] を [フィールドの抽出 (1文字区切り文字モード)] に設定します。 次に、次の表に基づいて他のパラメーターを設定します。
パラメーター
説明
元のフィールド
元のフィールドの名前。
デリミタ
区切り文字。 区切り文字は1文字でなければなりません。 1文字の区切り文字として、印刷できない文字を指定できます。 例: \u0001。
新しいフィールド
抽出されたコンテンツに指定するフィールド名。
見積もりの使用
指定された区切り文字を囲む引用符を使用するかどうかを指定します。
引用符
引用だ 引用は1文字でなければなりません。 印刷できない文字を引用符として指定できます。 例: \u0001。
元のフィールドの欠落エラーを報告する
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。
区切り文字の不一致エラーの報告
生ログの区切り文字が指定された区切り文字と一致しない場合にエラーを報告するかどうかを指定します。
元のフィールドを保持
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。
設定例
縦バー (|) を区切り文字として使用してcontentフィールドの値を抽出し、値にフィールド名ip、time、method、url、request_time、request_length、status、length、ref_url、およびbrowserを指定します。
生ログ
"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"
データ処理用のLogtailプラグイン設定
結果
"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でのエディター設定
パラメーター
typeをprocessor_split_charに設定します。 次に、次の表に基づいて他のパラメーターを詳細に設定します。
パラメーター
データ型
必須
説明
SourceKey
String
課金されます
元のフィールドの名前。
SplitSep
String
課金されます
区切り文字。 区切り文字は1文字でなければなりません。 1文字の区切り文字として、印刷できない文字を指定できます。 例: \u0001。
SplitKeys
文字列配列
課金されます
抽出されたコンテンツに指定するフィールド名。 例: ["ip", "time", "method"] 。
PreserveOthers
ブール値
課金されません
値からSplitKeysで指定された各フィールドの一致をシステムが見つけた後に、超過部分を保持するかどうかを指定します。 有効な値:
true
false (デフォルト)
QuoteFlag
ブール値
課金されません
指定された区切り文字を囲む引用符を使用するかどうかを指定します。 有効な値:
true
false (デフォルト)
引用符
String
課金されません
引用だ 引用は1文字でなければなりません。 印刷できない文字を引用符として指定できます。 例: \u0001。
このパラメーターは、QuoteFlagがtrueに設定されている場合にのみ有効です。
NoKeyError
ブール値
課金されません
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。 有効な値:
true
false (デフォルト)
NoMatchError
ブール値
課金されません
生ログの区切り文字が指定された区切り文字と一致しない場合にエラーを報告するかどうかを指定します。 有効な値:
true
false (デフォルト)
KeepSource
ブール値
課金されません
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。 有効な値:
true
false (デフォルト)
設定例
縦バー (|) を区切り文字として使用してcontentフィールドの値を抽出し、値にフィールド名ip、time、method、url、request_time、request_length、status、length、ref_url、およびbrowserを指定します。
生ログ
"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"
データ処理用のLogtailプラグイン設定
{ "type" : "processor_split_char", "detail" : {"SourceKey" : "content", "SplitSep" : "|", "SplitKeys" : ["ip", "time", "method", "url", "request_time", "request_length", "status", "length", "ref_url", "browser"] } }
結果
"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"
複数文字区切り文字モード
複数文字の区切り文字を使用して、ログフィールドからコンテンツを抽出できます。 区切り文字を囲むために引用符を使用することはできません。
フォーム設定
パラメーター
プロセッサタイプを [フィールドの抽出 (マルチ文字デリミタモード)] に設定します。 次に、次の表に基づいて他のパラメーターを設定します。
パラメーター
説明
元のフィールド
元のフィールドの名前。
区切り文字列
区切り文字。 複数文字の区切り文字として、印刷できない文字を指定できます。 例: \u0001\u0002
新しいフィールド
抽出されたコンテンツに指定するフィールド名。
重要元のフィールドの値から [新規フィールド] で指定されたフィールドに一致しない場合、そのフィールドはスキップされます。
元のフィールドの欠落エラーを報告する
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。
区切り文字の不一致エラーの報告
生ログの区切り文字が指定された区切り文字と一致しない場合にエラーを報告するかどうかを指定します。
元のフィールドを保持
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。
余分な部分を保持する
値から [新規フィールド] で指定された各フィールドの一致をシステムが見つけた後に、超過部分を保持するかどうかを指定します。
過剰部分の解析
超過部分を解析するかどうかを指定します。 このオプションを選択した場合、超過部品が割り当てられるフィールドのプレフィックス名を設定して、超過部品が割り当てられるフィールドの名前のプレフィックスを指定できます。
超過部分が割り当てられるフィールドの名前プレフィックス
超過部分が割り当てられるフィールドの名前のプレフィックス。 たとえば、このパラメーターを展開_、フィールドの名前はexpand_1とexpand_2.
設定例
区切り文字 |#| を使用してcontentフィールドの値を抽出し、値にip、time、method、url、request_time、request_length、status、expand_1、expand_2、exp_3を指定します。
生ログ
"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"
データ処理用のLogtailプラグイン設定
結果
"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でのエディター設定
パラメーター
typeをprocessor_split_stringに設定します。 次に、次の表に基づいて他のパラメーターを詳細に設定します。
パラメーター
データ型
必須
説明
SourceKey
String
課金されます
元のフィールドの名前。
SplitSep
String
課金されます
区切り文字。 複数文字の区切り文字として、印刷できない文字を指定できます。 例: \u0001\u0002
SplitKeys
文字列配列
課金されます
抽出されたコンテンツに指定するフィールド名。 例: ["key1","key2"] 。
説明元のフィールドの値からSplitKeysで指定されたフィールドに一致しない場合、そのフィールドはスキップされます。
PreserveOthers
ブール値
課金されません
値からSplitKeysで指定された各フィールドの一致をシステムが見つけた後に、超過部分を保持するかどうかを指定します。 有効な値:
true
false (デフォルト)
ExpandOthers
ブール値
課金されません
超過部分を解析するかどうかを指定します。 有効な値:
true です。
ExpandOthersをtrueに設定して超過部分を解析し、ExpandKeyPrefixを設定して、超過部分が割り当てられるフィールドの名前のプレフィックスを指定できます。
false (デフォルト) 。
ExpandKeyPrefix
String
課金されません
超過部分が割り当てられるフィールドの名前のプレフィックス。 たとえば、このパラメーターを展開_、フィールドの名前はexpand_1とexpand_2.
NoKeyError
ブール値
課金されません
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。 有効な値:
true
false (デフォルト)
NoMatchError
ブール値
課金されません
生ログの区切り文字が指定された区切り文字と一致しない場合にエラーを報告するかどうかを指定します。 有効な値:
true
false (デフォルト)
KeepSource
ブール値
課金されません
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。 有効な値:
true
false (デフォルト)
設定例
区切り文字 |#| を使用してcontentフィールドの値を抽出し、値にip、time、method、url、request_time、request_length、status、expand_1、expand_2、exp_3を指定します。
生ログ
"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"
データ処理用の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_" } }
結果
"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"
キーと値のペアモード
キーと値のペアを分割することで、ログフィールドからコンテンツを抽出できます。
Logtail V0.16.26以降は、processor_split_key_valueプラグインをサポートしています。
フォーム設定
パラメーター
[プロセッサタイプ] を [フィールドの抽出 (キー値ペアモード)] に設定します。 次に、次の表に基づいて他のパラメーターを設定します。
パラメーター
説明
元のフィールド
元のフィールドの名前。
キーと値のペア区切り文字
キーと値のペアを区切るために使用される区切り文字。 デフォルト値はタブ文字 (
\t
) です。キーと値の区切り文字
1つのキーと値のペアでキーと値を区切るために使用される区切り文字。 デフォルト値はコロン (:) です。
元のフィールドを保持
元のフィールドを保持するかどうかを指定します。
元のフィールドの欠落エラーを報告する
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。
デリミターと一致しないキーと値のペアを削除
生ログの区切り文字が指定された区切り文字と一致しない場合に、キーと値のペアを破棄するかどうかを指定します。
レポートキーと値デリミター欠落エラー
生ログに指定された区切り文字が含まれていない場合にエラーを報告するかどうかを指定します。
レポート空キーエラー
区切り後にキーが空の場合、エラーを報告するかどうかを指定します。
引用符
引用だ 指定された引用符にキー値が含まれている場合は、引用符のキー値が抽出されます。 引用符として複数の文字を指定できます。
重要指定された引用符に囲まれたキー値にバックスラッシュ (\) が含まれていて、バックラッシュ (\) が引用符に隣接している場合、バックラッシュ (\) はキー値の一部として抽出されます。
設定例
例1: キーと値のペアモードで指定したフィールドの値を抽出します。
キーと値のペアモードでcontentフィールドの値を抽出します。 キーと値のペアを区切るために使用される区切り文字は、タブ文字 (
\t
) です。 1つのキーと値のペアでキーと値を区切るために使用される区切り文字はコロン (:) です。生ログ
"content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\""
データ処理用のLogtailプラグイン設定
結果
"content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\"" "class": "main" "userid": "123456" "method": "get" "message": "\"wrong user\""
例2: 引用符が使用されているときに、キーと値のペアモードで指定されたフィールドの値を抽出します。
キーと値のペアモードでcontentフィールドの値を抽出します。 キーと値のペアを区切るために使用される区切り文字は、タブ文字 (
\t
) です。 1つのキーと値のペアでキーと値を区切るために使用される区切り文字はコロン (:) です。 使用される引用符は二重引用符 (") です。生ログ
"content": "class:main http_user_agent:\"User Agent\" \"Chinese\" \"hello\\t\\\"ilogtail\\\"\\tworld\""
データ処理用のLogtailプラグイン設定
結果
"class": "main", "http_user_agent": "User Agent", "no_separator_key_0": "Chinese", "no_separator_key_1": "hello\t\"ilogtail\"\tworld",
例3: 複数文字の引用符が使用されている場合に、キーと値のペアモードで指定されたフィールドの値を抽出します。
キーと値のペアモードでcontentフィールドの値を抽出します。 キーと値のペアを区切るために使用される区切り文字は、タブ文字 (
\t
) です。 1つのキーと値のペアでキーと値を区切るために使用される区切り文字はコロン (:) です。 使用される引用符は二重引用符 ("") です。生ログ
"content": "class:main http_user_agent:\"\"\"User Agent\"\"\" \"\"\"Chinese\"\"\""
データ処理用のLogtailプラグイン設定
結果
"class": "main", "http_user_agent": "User Agent", "no_separator_key_0": "Chinese",
JSONでのエディター設定
パラメーター
typeをprocessor_split_key_valueに設定します。 次に、次の表に基づいて他のパラメーターを詳細に設定します。
パラメーター
データ型
必須
説明
SourceKey
String
課金されます
元のフィールドの名前。
デリミタ
String
課金されません
キーと値のペアを区切るために使用される区切り文字。 デフォルト値はタブ文字 (
\t
) です。セパレータ
String
課金されません
1つのキーと値のペアでキーと値を区切るために使用される区切り文字。 デフォルト値はコロン (:) です。
KeepSource
ブール値
課金されません
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。 有効な値:
true
false (デフォルト)
ErrIfSourceKeyNotFound
ブール値
課金されません
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。 有効な値:
true (デフォルト)
false
DiscardWhenSeparatorNotFound
ブール値
課金されません
生ログの区切り文字が指定された区切り文字と一致しない場合に、キーと値のペアを破棄するかどうかを指定します。 有効な値:
true
false (デフォルト)
ErrIfSeparatorNotFound
ブール値
課金されません
生ログに指定された区切り文字が含まれていない場合にエラーを報告するかどうかを指定します。 有効な値:
true (デフォルト)
false
ErrIfKeyIsEmpty
ブール値
課金されません
区切り後にキーが空の場合、エラーを報告するかどうかを指定します。 有効な値:
true (デフォルト)
false
引用符
String
課金されません
引用だ 指定された引用符にキー値が含まれている場合は、引用符のキー値が抽出されます。 引用符として複数の文字を指定できます。 デフォルトでは、見積機能は無効になっています。
重要引用符として二重引用符 ("") を指定する場合、二重引用符 ("") の各ペアにバックスラッシュ (\) をエスケープ文字として追加する必要があります。
指定された引用符に囲まれたキー値にバックスラッシュ (\) が含まれていて、バックラッシュ (\) が引用符に隣接している場合、バックラッシュ (\) はキー値の一部として抽出されます。
設定例
例1: キーと値のペアモードで指定したフィールドの値を抽出します。
キーと値のペアモードでcontentフィールドの値を抽出します。 キーと値のペアを区切るために使用される区切り文字は、タブ文字 (
\t
) です。 1つのキーと値のペアでキーと値を区切るために使用される区切り文字はコロン (:) です。生ログ
"content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\""
データ処理用のLogtailプラグイン設定
{ "processors":[ { "type":"processor_split_key_value", "detail": { "SourceKey": "content", "Delimiter": "\t", "Separator": ":", "KeepSource": true } } ] }
結果
"content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\"" "class": "main" "userid": "123456" "method": "get" "message": "\"wrong user\""
例2: キーと値のペアモードで指定したフィールドの値を抽出します。
キーと値のペアモードでcontentフィールドの値を抽出します。 キーと値のペアを区切るために使用される区切り文字は、タブ文字 (
\t
) です。 1つのキーと値のペアでキーと値を区切るために使用される区切り文字はコロン (:) です。 使用される引用符は二重引用符 (") です。生ログ
"content": "class:main http_user_agent:\"User Agent\" \"Chinese\" \"hello\\t\\\"ilogtail\\\"\\tworld\""
データ処理用のLogtailプラグイン設定
{ "processors":[ { "type":"processor_split_key_value", "detail": { "SourceKey": "content", "Delimiter": " ", "Separator": ":", "Quote": "\"" } } ] }
結果
"class": "main", "http_user_agent": "User Agent", "no_separator_key_0": "Chinese", "no_separator_key_1": "hello\t\"ilogtail\"\tworld",
例3: キーと値のペアモードで指定したフィールドの値を抽出します。
キーと値のペアモードでcontentフィールドの値を抽出します。 キーと値のペアを区切るために使用される区切り文字は、タブ文字 (
\t
) です。 1つのキーと値のペアでキーと値を区切るために使用される区切り文字はコロン (:) です。 使用される引用符は二重引用符 ("" ") です。生ログ
"content": "class:main http_user_agent:\"\"\"User Agent\"\"\" \"\"\"Chinese\"\"\""
データ処理用のLogtailプラグイン設定
{ "processors":[ { "type":"processor_split_key_value", "detail": { "SourceKey": "content", "Delimiter": " ", "Separator": ":", "Quote": "\"\"\"" } } ] }
結果
"class": "main", "http_user_agent": "User Agent", "no_separator_key_0": "Chinese",
Grokモード
Grok式を使用して、ログフィールドからコンテンツを抽出できます。
Logtail V1.2.0以降はprocessor_grokプラグインをサポートしています。
フォーム設定
パラメーター
プロセッサタイプを [フィールドの抽出 (Grokモード)] に設定します。 次に、次の表に基づいて他のパラメーターを設定します。
パラメーター
説明
元のフィールド
元のフィールドの名前。
Grok式配列
Grok式の配列。 processor_grokプラグインは、指定された式に基づいてログフィールドを順番に照合し、最初の照合に基づいて抽出されたコンテンツを返します。
processor_grokでサポートされている既定の式の詳細については、「processor_grok」をご参照ください。 リンクされたページで提供されている式がビジネス要件を満たしていない場合は、カスタムGrokパターンでカスタムGrok式を指定できます。
説明複数のGrok式を指定すると、処理パフォーマンスが影響を受ける可能性があります。 5つ以下の式を指定することを推奨します。
カスタムGrokパターン
カスタムGrokパターン。ルール名とGrok式で構成されます。
カスタムGrokパターンファイルディレクトリ
カスタムGrokパターンファイルが保存されているディレクトリ。 processor_grokプラグインは、ディレクトリ内のすべてのファイルを読み取ります。
重要カスタムGrokパターンファイルを更新する場合、更新はLogtailを再起動した後にのみ有効になります。
最大タイムアウト
Grok式を使用して元のフィールドからコンテンツを抽出するためのタイムアウト期間。 単位:ミリ秒。 このパラメーターを設定に含めないか、このパラメーターを0に設定すると、抽出がタイムアウトすることはありません。
解析に失敗したログを保持する
生ログの解析に失敗した場合に、生ログを保持するかどうかを指定します。
元のフィールドを保持
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。
元のフィールドの欠落エラーを報告する
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。
式が一致していないエラーを報告
元のフィールドの値がGrok expression Arrayで指定された式と一致しない場合にエラーを報告するかどうかを指定します。
一致タイムアウトエラーの報告
一致がタイムアウトした場合にエラーを報告するかどうかを指定します。
設定例
Grokモードでcontentフィールドの値を抽出し、値にフィールド名year、month、dayを指定します。
生ログ
"content" : "2022 October 17"
データ処理用のLogtailプラグイン設定
結果
"year":"2022" "month":"October" "day":"17"
JSONでのエディター設定
パラメーター
typeをprocessor_grokに設定します。 次に、次の表に基づいて他のパラメーターを詳細に設定します。
パラメーター
データ型
必須
説明
CustomPatternDir
文字列配列
課金されません
カスタムGrokパターンファイルが保存されているディレクトリ。 processor_grokプラグインは、ディレクトリ内のすべてのファイルを読み取ります。
このパラメーターを設定に含めない場合、カスタムGrokパターンファイルはインポートされません。
重要カスタムGrokパターンファイルを更新する場合、更新はLogtailを再起動した後にのみ有効になります。
CustomPatterns
地図
課金されません
カスタムGrokパターン。 keyはルール名を指定し、valueはGrok式を指定します。
processor_grokでサポートされている既定の式の詳細については、「processor_grok」をご参照ください。 リンクされたページで提供されている式がビジネス要件を満たしていない場合は、MatchでカスタムGrok式を指定できます。
このパラメーターを設定に含めない場合、システムはカスタムGrokパターンを使用しません。
SourceKey
String
課金されません
元のフィールドの名前。 デフォルト値はcontentです。
マッチ
文字列配列
課金されます
Grok式の配列。 processor_grokプラグインは、指定された式に基づいてログフィールドを順番に照合し、最初の照合に基づいて抽出されたコンテンツを返します。
説明複数のGrok式を指定すると、処理パフォーマンスが影響を受ける可能性があります。 5つ以下の式を指定することを推奨します。
TimeoutMilliSeconds
Long
課金されません
Grok式を使用して元のフィールドからコンテンツを抽出するためのタイムアウト期間。 単位:ミリ秒。
このパラメーターを設定に含めないか、このパラメーターを0に設定すると、抽出がタイムアウトすることはありません。
IgnoreParseFailure
ブール値
課金されません
生ログの解析に失敗した場合に、生ログを無視するかどうかを指定します。 有効な値:
true (デフォルト): 生ログの解析に失敗した場合、生ログを無視します。
false: 生ログの解析に失敗した場合、生ログを削除します。
KeepSource
ブール値
課金されません
解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。 有効な値:
true (デフォルト): 元のフィールドを保持します。
false: 元のフィールドを破棄します。
NoKeyError
ブール値
課金されません
生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。 有効な値:
true
false (デフォルト)
NoMatchError
ブール値
課金されません
元のフィールドの値がmatchで指定された式と一致しない場合にエラーを報告するかどうかを指定します。 有効な値:
true (デフォルト)
false
TimeoutError
ブール値
課金されません
一致がタイムアウトした場合にエラーを報告するかどうかを指定します。 有効な値:
true (デフォルト)
false
例 1
Grokモードでcontentフィールドの値を抽出し、値にフィールド名year、month、dayを指定します。
生ログ
"content" : "2022 October 17"
データ処理用のLogtailプラグイン設定
{ "type" : "processor_grok", "detail" : { "KeepSource" : false, "Match" : [ "%{YEAR:year} %{MONTH:month} %{MONTHDAY:day}" ], "IgnoreParseFailure" : false } }
結果
"year":"2022" "month":"October" "day":"17"
例 2
Grokモードで複数のログからcontentフィールドの値を抽出し、抽出された値を異なるGrok式に基づいて異なる結果に解析します。
生ログ
{ "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" }
データ処理用の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" }, }
結果
この例では、processor_grokプラグインは最初のログをMatchで指定された最初の式
%{HTTP}
と照合しますが、照合は失敗します。 次に、processor_grokプラグインはログを2番目の式%{WORD:word1} %{NUMBER:request_time} %{WORD:word2}
と照合し、照合に成功します。 この場合、第2の式に基づいて抽出されたコンテンツが返される。その結果、KeepSourceがfalseに設定されているため、生ログのcontentフィールドは破棄されます。
この例では、processor_grokプラグインは、2番目のログを、Matchで順番に指定されている最初の式
%{HTTP}
および2番目の式%{WORD:word1} %{NUMBER:request_time} %{WORD:word2}
と照合します。 次に、processor_grokプラグインは2番目のログを3番目の式%{YEAR:year} %{MONTH:month} %{MONTHDAY:day} %{QUOTEDSTRING:motto}
と照合し、照合に成功します。 この場合、第3の式に基づいて抽出されたコンテンツが返される。この例では、processor_grokプラグインは、3番目のログをMatchで指定された3つの式と順番に照合しますが、すべての照合は失敗します。 IgnoreParseFailureがfalseに設定されているため、ログは破棄されます。
この例では、processor_grokプラグインは、4番目のログをMatchで指定された最初の式
%{HTTP}
と照合し、照合に成功します。 この場合、第1の式に基づいて抽出されたコンテンツが返される。
{ "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", }