JSON ログを選択的に解析するように JSON パーサ構成をカスタマイズできます。

FileLog および WinLog の両方のコレクタに対応するようにカンマ区切り値 (CSV) パーサを構成できます。Log Insight エージェント JSON パーサでは、有効な JSON ログのみが解析されます。無効な JSON ログ パーサは空の結果を返します。

デフォルトの JSON パーサ構成では、Log Insight エージェントによって、JSON ログからすべてのフィールドが抽出されます。JSON ログが、JSON オブジェクトも含むことができる複雑な JSON オブジェクトとして自分自身を表す場合、パーサはネストされた上位階層の JSON オブジェクトの名前を連結するためにアンダースコア (_) 文字を使用します。これにより、対応する要素の情報フィールド名が生成されます。JSON ログに配列も含まれている場合、メンバー要素名には配列名が含まれ、その後に配列内の要素のインデックスが続きます。

また、JSON パーサは、fields と呼ばれる特定のオプションを提供します。

JSON パーサの「fields」オプション

fields オプションを使用して、構成内のどのフィールドを解析するかを指定できます。このオプションの目的は、JSON ログの選択的な解析を有効にすることです。
注: 選択的に解析を行うには、目的の JSON 要素へのパスを指定する必要があります。異なる階層の JSON オブジェクトはドット (.)文字で区切る必要があります。

次のリストは、必要に応じて JSON ログを選択的に解析するための構成例を示します。

  • JSON ログから複数の要素を解析するには、必要な要素を fields オプションのパラメータとしてリストし、カンマで区切って指定する必要があります。次の例を参照してください。
    {"operation" : {"timestamp" :
            "2018-11-22T15:28:58.094000", "thread_id" : "0x05673", "initiator" : "connector",
            "log_severity" : "info", "log_message" : "Requested connection to the server."},
            "operation_result" : "success"}
  • timestamplog_severity、および log_message など、最も内側の JSON オブジェクトのみを解析するには、次の例を参照してください。この構成例では、次のようなフィールド結果が生成されます:operation_timestamp ="2018-11-22T15:28:58.094000" and operation_log_severity ="info"
    [parser|json_parser]
    base_parser=json
    fields=operation.timestamp,operation.log_severity, operation.log_message
  • JSON オブジェクト全体を解析するには、オブジェクトへのパスと、その後にアスタリスク (*) 文字を指定します。
    {"product_name" : "LI Agent",
            "operation" : {"timestamp" : "2018-11-22T15:28:58.094000", "thread_id" :
            "0x05673", "initiator" : "connector", "log_severity" : "info", "log_message" :
            "Requested connection to the server."}, "operation_result" :
          "success"}
  • operation オブジェクトのみを解析するには、次の構成を使用します:
    [parser|json_parser]
    base_parser=json
    fields=operation.*
  • JSON ログに配列が含まれていて、配列の特定の要素のみを解析する場合は、構成内の配列の要素インデックスを次の例のように使用します:
    {           
          "Records": [{                                 
                 "object":{                                               
                    "key": "/events/mykey",                                               
                    "size": 502,                                               
                    "eTag": "091820398091823",                                               
                    "sequencer": "1123123"                                   
                }                       
           },                       
          {                                  
                "object":{                                               
                      "key": "/events/user_key",                                               
                      "size": 128,                                               
                      "eTag": "09182039000001",                                               
                      "sequencer": "1123231"                                   
                }                        
            },                        
            {                                   
               "object":{                                               
                     "key": "/events/admin_key",                                               
                     "size": 1024,                                               
                     "eTag": "09182039547241",                                               
                     "sequencer": "1123213"                                   
                }                      
            }           
         ] 
    }
  • 同じログから key および size 要素のみを解析するには、次の構成を使用して次のフィールドを生成します:

    records0_object_key="/events/mykey"

    records0_object_size=502

    records2_object_key="/events/admin_key"

    records2_object_size=1024

    [parser|json_parser]
    base_parser=json
    fields = Records0.object.key Records0.object.size, Records2.object.key, Records2.object.size
  • すべての配列要素の key フィールドを解析するには、次の構成を使用します:
    [parser|json_parser]
    base_parser=json
    fields=Records.#.object.key
  • すべてのフィールドを解析するには、フィールド オプションにアスタリスク (*) 文字を指定します。この構成は、デフォルトの JSON パーサ構成と同じです。
    [parser|json_parser]
    base_parser=json
    fields=*