您可以自訂 JSON 剖析器組態,以便有選擇性地剖析 JSON 記錄。

您可以為 FileLogWinLog 收集器設定逗點分隔值 (CSV) 剖析器。Log Insight 代理程式 JSON 剖析器只會剖析有效的 JSON 記錄。無效的 JSON 記錄剖析器會傳回空值結果。

預設的 JSON 剖析器組態會透過 Log Insight 代理程式來擷取 JSON 記錄中的所有欄位。當 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"}
  • 若只要剖析最內層的 JSON 物件 (如 timestamplog_severitylog_message),請參閱以下範例。此範例組態會產生下列欄位結果:operation_timestamp ="2018-11-22T15:28:58.094000",且 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"                                   
                }                      
            }           
         ] 
    }
  • 若只要剖析同一記錄中的 keysize 元素,請使用下列組態來產生下列欄位:

    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
  • 若要剖析所有欄位,請使用 fields 選項與星號 (*) 字元。此組態相當於預設的 JSON 剖析器組態。
    [parser|json_parser]
    base_parser=json
    fields=*