parse - 아마존 CloudWatch 로그

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

parse

parse를 사용하여 로그 필드에서 데이터를 추출하고 쿼리에서 처리할 수 있는 추출된 필드를 생성합니다. parse는 와일드카드를 사용하는 글로브 모드와 정규 표현식을 모두 지원합니다.

정규 표현식을 사용하여 중첩된 JSON 필드를 구문 분석할 수 있습니다.

예: 중첩된 JSON 필드 구문 분석

아래 코드 조각은 수집 중에 평면화된 JSON 로그 이벤트를 구문 분석하는 방법을 보여줍니다.

{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}

아래 코드 조각은 추출된 필드 fldarray를 생성하기 위해 fieldsAfieldsB에 대한 값을 추출하는 정규식이 포함된 쿼리를 보여줍니다.

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, loggingTypeloggingMessage 필드를 추출하고 ERROR 또는 INFO 문자열이 포함된 이벤트를 기록하도록 필터링한 다음 ERROR 문자열이 포함된 이벤트에 대해 loggingMessage 및 loggingType 필드만 표시합니다.

FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError