기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 흐름 로그의 캡처 그룹을 사용하여 라는 필드에 ENI 를 추출합니다NetworkInterface
.
parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
참고
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