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 흐름 로그의 캡처 그룹을 사용하여 이름이 지정된 필드로 추출합니다. 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, 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