기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
parse
parse
를 사용하여 로그 필드에서 데이터를 추출하고 쿼리에서 처리할 수 있는 추출된 필드를 생성합니다. parse
는 와일드카드를 사용하는 글로브 모드와 정규 표현식을 모두 지원합니다.
정규 표현식을 사용하여 중첩된 JSON 필드를 구문 분석할 수 있습니다.
예: 중첩된 JSON 필드 구문 분석
아래 코드 조각은 수집 중에 평면화된 JSON 로그 이벤트를 구문 분석하는 방법을 보여줍니다.
{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}
아래 코드 조각은 추출된 필드 fld
및 array
를 생성하기 위해 fieldsA
및 fieldsB
에 대한 값을 추출하는 정규식이 포함된 쿼리를 보여줍니다.
parse @message "'fieldsA': '*', 'fieldsB': ['*']" as fld, array
이름이 지정된 캡처 그룹
정규 표현식과 parse
을(를) 함께 사용하는 경우 이름이 지정된 캡처 그룹을 사용하여 패턴을 필드에 캡처할 수 있습니다. 구문은 parse @message (?<Name>pattern).
입니다.
다음 예에서는 VPC 흐름 로그의 캡처 그룹을 사용하여 NetworkInterface
(이)라는 이름의 필드에 ENI를 추출합니다.
parse @message /(?<NetworkInterface>eni-.*?) / display @timestamp, NetworkInterface
참고
JSON 로그 이벤트는 수집 중에 평면화됩니다. 현재 글로브(glob) 표현식을 사용하여 중첩 JSON 필드를 구문 분석하는 것은 지원되지 않습니다. 200개 이하의 로그 이벤트 필드를 포함하는 JSON 로그 이벤트만 구문 분석할 수 있습니다. 중첩된 JSON 필드를 구문 분석할 때 JSON 로그 이벤트의 형식과 일치하도록 쿼리의 정규식 형식을 지정해야 합니다.
분석 명령의 예제
glob 표현식을 사용하여 로그 필드 @message
에서 필드 @user
, @method
및 @latency
를 추출하고 @method
및 @user
의 고유한 개별 조합에 대한 평균 지연 시간을 반환합니다.
parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user
정규식을 사용하여 로그 필드 @message
에서 필드 @user2
, @method2
및 @latency2
를 추출하고 @method2
및 @user2
의 고유한 개별 조합에 대한 평균 지연 시간을 반환합니다.
parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2
loggingTime
, loggingType
및 loggingMessage
필드를 추출하고 ERROR
또는 INFO
문자열이 포함된 이벤트를 기록하도록 필터링한 다음 ERROR
문자열이 포함된 이벤트에 대해 loggingMessage
및 loggingType
필드만 표시합니다.
FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError