すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:ログフィールドからコンテンツを抽出する

最終更新日:Aug 21, 2024

Logtailを使用してログを収集する場合、Logtailプラグインを追加して、正規表現、アンカー、CSV、1文字区切り文字、複数文字区切り文字、キーと値のペア、およびGrokモードでログフィールドからコンテンツを抽出できます。 このトピックでは、Logtailプラグインのパラメーターについて説明し、プラグインの設定方法の例を示します。

制限事項

テキストログとコンテナーstdoutおよびstderrの入力プラグインは、フォーム設定のみをサポートしています。 その他の入力プラグインは、JSONでのエディター設定のみをサポートします。

エントリーポイント

Logtailプラグインを使用してログを処理する場合は、Logtail設定を作成または変更するときにLogtailプラグイン設定を追加できます。 詳細については、「データ処理用Logtailプラグインの概要」をご参照ください。

Regexモード

正規表現を使用して、ログフィールドからコンテンツを抽出できます。

フォーム設定

  • パラメーター

    [プロセッサタイプ][フィールドの抽出 (正規表現モード)] に設定します。 次に、次の表に基づいて他のパラメーターを設定します。

    パラメーター

    説明

    元のフィールド

    元のフィールドの名前。

    正規表現

    正規表現を入力します。 コンテンツを抽出するフィールドを括弧 () で囲む必要があります。

    新しいフィールド

    抽出されたコンテンツに指定するフィールド名。 複数のフィールド名を指定できます。

    元のフィールドの欠落エラーを報告する

    生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。

    Regex不一致エラーの報告

    元のフィールドの値が正規表現と一致しない場合にエラーを報告するかどうかを指定します。

    元のフィールドを保持

    解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。

    解析に失敗した場合に元のフィールドを保持する

    生ログの解析に失敗した後に取得される新しいログに元のフィールドを保持するかどうかを指定します。

    フルRegexマッチ

    完全一致モードで元のフィールドの値を抽出するかどうかを指定します。 このオプションを選択すると、[新規フィールド] で指定されたすべてのフィールドが、正規表現で指定された正規表現に基づく元のフィールドの値と一致する場合にのみ、元のフィールドの値が抽出されます。

  • 設定例

    コンテンツフィールドの値を正規表現モードで抽出し、値にiptimemethodurlrequest_timerequest_lengthstatuslengthref_urlbrowserのフィールド名を指定します。

    • 生ログ

      "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でのエディター設定

  • パラメーター

    typeprocessor_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フィールドの値を正規表現モードで抽出し、値にフィールド名iptimemethodurlrequest_timerequest_lengthstatuslengthref_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フィールドの値を抽出し、値にフィールド名timeval_key1val_key2val_key3value_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でのエディター設定

  • パラメーター

    typeprocessor_anchorに設定します。 次に、次の表に基づいて他のパラメーターを詳細に設定します。

    パラメーター

    データ型

    必須

    説明

    SourceKey

    String

    課金されます

    元のフィールドの名前。

    アンカー

    アンカー配列

    課金されます

    キーワードをアンカーするように設定されているフィールド。

    開始

    String

    課金されます

    アンカーの開始を指定するキーワード。 このパラメーターを設定しない場合、文字列の先頭が一致します。

    停止

    String

    課金されます

    アンカーの終了を指定するキーワード。 このパラメーターを設定しない場合、文字列の末尾が一致します。

    フィールド名

    String

    課金されます

    抽出されたコンテンツに指定するフィールド名。

    フィールドタイプ

    String

    課金されます

    フィールドのタイプ。 有効な値: stringとjson。

    ExpondJson

    ブール値

    課金されません

    JSON形式のフィールドを展開するかどうかを指定します。 有効な値:

    • true

    • false (デフォルト)

    このパラメーターは、FieldTypejsonに設定した場合にのみ有効になります。

    ExpondConnecter

    String

    課金されません

    拡張されたキーを連結するために使用される文字。 デフォルト値はアンダースコア (_) です。

    MaxExpondDepth

    Int

    課金されません

    JSON拡張の最大深度。 デフォルト値: 0。これは、最大深度が無制限であることを示します。

    NoAnchorError

    ブール値

    課金されません

    生ログで一致するキーワードがない場合にエラーを報告するかどうかを指定します。 有効な値:

    • true

    • false (デフォルト)

    NoKeyError

    ブール値

    課金されません

    生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。 有効な値:

    • true

    • false (デフォルト)

  • 設定例

    アンカーモードでcontentフィールドの値を抽出し、値にフィールド名timeval_key1val_key2val_key3value_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\"\"\"\"文字列 \"\"\"\"}}\""
          ......
      }
    • データ処理提取字段(CSV模式)用のLogtailプラグイン設定

    • 結果

      {
          "date": "2022-06-09" 、
          "ip": "192.0.2.0" 、
          "content": "{\" key1\":\" value\",\" key2\":{\" key3\":\" string\"}}"
          ......
      
      }

JSONでのエディター設定

  • パラメーター

    typeprocessor_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フィールドの値を抽出し、値にフィールド名iptimemethodurlrequest_timerequest_lengthstatuslengthref_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でのエディター設定

  • パラメーター

    typeprocessor_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フィールドの値を抽出し、値にフィールド名iptimemethodurlrequest_timerequest_lengthstatuslengthref_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_1expand_2.

  • 設定例

    区切り文字 |#| を使用してcontentフィールドの値を抽出し、値にiptimemethodurlrequest_timerequest_lengthstatusexpand_1expand_2exp_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でのエディター設定

  • パラメーター

    typeprocessor_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_1expand_2.

    NoKeyError

    ブール値

    課金されません

    生のログに元のフィールドが含まれていない場合にエラーを報告するかどうかを指定します。 有効な値:

    • true

    • false (デフォルト)

    NoMatchError

    ブール値

    課金されません

    生ログの区切り文字が指定された区切り文字と一致しない場合にエラーを報告するかどうかを指定します。 有効な値:

    • true

    • false (デフォルト)

    KeepSource

    ブール値

    課金されません

    解析後に取得される新しいログに元のフィールドを保持するかどうかを指定します。 有効な値:

    • true

    • false (デフォルト)

  • 設定例

    区切り文字 |#| を使用してcontentフィールドの値を抽出し、値にiptimemethodurlrequest_timerequest_lengthstatusexpand_1expand_2exp_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でのエディター設定

  • パラメーター

    typeprocessor_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フィールドの値を抽出し、値にフィールド名yearmonthdayを指定します。

    • 生ログ

      "content" : "2022 October 17"
    • データ処理GROK模式用のLogtailプラグイン設定

    • 結果

      "year":"2022"
      "month":"October"
      "day":"17"

JSONでのエディター設定

  • パラメーター

    typeprocessor_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フィールドの値を抽出し、値にフィールド名yearmonthdayを指定します。

    • 生ログ

      "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",
      }