JSON 구문 분석기 구성을 사용자 지정하여 JSON 로그를 선택적으로 구문 분석할 수 있습니다.

FileLogWinLog 수집기 둘 다에 대해 CSV(쉼표로 구분된 값) 구문 분석기를 구성할 수 있습니다. 올바른 JSON 로그만 Log Insight 에이전트 JSON 구문 분석기를 통해 구문 분석됩니다. 잘못된 JSON 로그 구문 분석기는 빈 결과를 반환합니다.

기본 JSON 구문 분석기 구성은 Log Insight 에이전트를 통해 JSON 로그에서 모든 필드를 추출합니다. JSON 로그가 자신을 JSON 개체를 포함할 수 있는 복잡한 JSON 개체로 나타내면 구문 분석기는 밑줄(_) 문자를 사용하여 중첩된 상위 계층 JSON 개체의 이름을 연결합니다. 그러면 해당 요소에 대해 설명이 포함된 필드 이름이 생성됩니다. JSON 로그에 어레이도 포함된 경우 멤버 요소 이름 뒤에 어레이 이름과 어레이의 요소 인덱스가 차례로 포함됩니다.

JSON 구문 분석기는 fields라고도 하는 특정 옵션도 제공합니다.

JSON 구문 분석기 '필드’ 옵션

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"}
  • timestamp, log_severitylog_message와 같은 맨 안쪽에 있는 JSON 개체만 구문 분석하려면 아래 예를 참조합니다. 이 예 구성에서는 다음 필드 결과를 생성합니다. 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=*