필터
filter 명령을 사용하여 하나 이상의 조건과 일치하는 로그 이벤트를 가져올 수 있습니다.
예: 하나의 조건을 사용한 로그 이벤트 필터링
아래 코드 조각은 range에 대한 값이 3000보다 큰 모든 로그 이벤트를 반환하는 쿼리의 예를 보여줍니다. 쿼리는 결과를 20개의 로그 이벤트로 제한하며, 로그 이벤트를 내림차순의 @timestamp로 정렬합니다.
fields @timestamp, @message | filter (range>3000) | sort @timestamp desc | limit 20
예: 둘 이상의 조건을 사용한 로그 이벤트 필터링
키워드 and 및 or을 사용하여 둘 이상의 조건을 결합할 수 있습니다.
아래 코드 조각은 range에 대한 값이 3000보다 크고 accountId에 대한 값이 123456789012와 동일한 로그 이벤트를 반환하는 쿼리의 예를 보여줍니다. 쿼리는 결과를 20개의 로그 이벤트로 제한하며, 로그 이벤트를 내림차순의 @timestamp로 정렬합니다.
fields @timestamp, @message | filter (range>3000 and accountId=123456789012) | sort @timestamp desc | limit 20
인덱싱된 필드 및 필터 명령
로그 그룹에 대한 필드 인덱스를 생성한 경우 해당 필드 인덱스를 활용하여 filter 쿼리를 더 효율적으로 만들고 스캔 볼륨을 줄일 수 있습니다. 예를 들어, requestId에 대한 필드 인덱스를 생성했다고 가정해 보겠습니다. 그런 다음 filter requestId = 또는 valuefilter requestId IN [을 포함하는 로그 그룹에 대한 모든 CloudWatch Logs 인사이트 쿼리는 인덱스 필드를 포함하지 않는 것으로 알려진 로그 이벤트 처리를 건너뛰려고 시도합니다. 인덱싱된 필드를 포함하는 것으로 알려진 로그 이벤트만 스캔하려고 하면 스캔 볼륨을 줄일 수 있으며 쿼리 속도가 빨라집니다.value,
value, ...]
필드 인덱스와 필드 인덱스 생성 방법에 대한 자세한 내용은 쿼리 성능을 개선하고 스캔 볼륨을 줄이기 위한 필드 인덱스 생성 섹션을 참조하세요.
중요
filter
및 fieldName =...filter 을 사용하는 쿼리만 필드 인덱스 개선의 이점을 누릴 수 있습니다. fieldName IN...filter 을 사용하는 쿼리는 인덱스를 사용하지 않으며 항상 선택한 로그 그룹의 모든 로그 이벤트를 스캔합니다.fieldName like
예: 인덱스를 사용하여 특정 요청 ID와 관련된 로그 이벤트 찾기
이 예제에서는 requestId에서 필드 인덱스를 생성했다고 가정합니다. 이 필드 인덱스를 사용하는 로그 그룹의 경우 쿼리는 필드 인덱스를 활용하여 최소한의 로그 이벤트를 스캔하여 값이 123456인 requestId이 있는 이벤트를 찾으려고 시도합니다.
fields @timestamp, @message | filter requestId = "1234656" | limit 20
필터 명령의 일치 항목 및 정규식
필터 명령은 정규 표현식 사용을 지원합니다. 비교 연산자(=, !=, <, <=, >, >=) 및 부울 연산자(and, or, not)를 사용할 수 있습니다.
in 키워드를 사용하여 설정된 멤버십을 테스트하고 배열의 요소를 확인할 수 있습니다. 배열에서 요소를 확인하려면 in 뒤에 해당 배열을 넣습니다. in과 함께 부울 연산자 not을 사용할 수 있습니다. in을 사용하여 필드가 문자열과 일치하는 로그 이벤트를 반환하는 쿼리를 생성할 수 있습니다. 필드는 완전한 문자열이어야 합니다. 예를 들어, 다음 코드 조각은 in을 사용하여 logGroup 필드가 완전한 문자열 example_group인 로그 이벤트를 반환하는 쿼리를 보여줍니다.
fields @timestamp, @message | filter logGroup in ["example_group"]
키워드 구문 like 및 not
like를 사용하여 하위 문자열을 일치시킬 수 있습니다. 정규 표현식 연산자 =~를 사용하여 하위 문자열을 일치시킬 수 있습니다. like 및 not like로 하위 문자열을 일치시키려면, 일치해야 하는 하위 문자열을 큰따옴표 또는 작은따옴표로 둘러쌉니다. like 및 not
like와 함께 정규식 패턴을 사용할 수 있습니다. 하위 문자열을 정규식 연산자와 일치시키려면 원하는 하위 문자열을 슬래시로 둘러쌉니다. 다음 예제에는 filter 명령을 사용하여 하위 문자열을 일치시키는 방법을 보여주는 코드 조각이 포함되어 있습니다.
예: 하위 문자열 일치
다음 예제에서는 f1에 단어 Exception이 포함된 모든 이벤트를 반환합니다. 세 예제 모두 대/소문자를 구별합니다.
첫 번째 예제에서는 like를 사용하여 하위 문자열과 일치시킵니다.
fields f1, f2, f3 | filter f1 like "Exception"
두 번째 예제에서는 like 및 정규 표현식 패턴을 사용하여 하위 문자열을 일치시킵니다.
fields f1, f2, f3 | filter f1 like /Exception/
세 번째 예제에서는 정규 표현식을 사용하여 하위 문자열을 일치시킵니다.
fields f1, f2, f3 | filter f1 =~ /Exception/
예: 와일드카드를 사용하여 하위 문자열 일치
정규 표현식에서 마침표 기호(.)를 와일드카드로 사용하여 하위 문자열을 일치시킬 수 있습니다. 다음 예에서 쿼리는 f1에 대한 값이 ServiceLog 문자열로 시작하는 일치 항목을 반환합니다.
fields f1, f2, f3 | filter f1 like /ServiceLog./
마침표 기호(.*) 뒤에 별표 기호를 배치하여 가능한 한 많은 일치 항목을 반환하는 탐욕적 수량자(Greedy Quantifier)를 생성할 수 있습니다. 예를 들어, 다음 쿼리는 f1 값이 ServiceLog 문자열로 시작할 뿐만 아니라 ServiceLog 문자열도 포함하는 일치 항목을 반환합니다.
fields f1, f2, f3 | filter f1 like /ServiceLog.*/
가능한 일치 항목은 다음과 같습니다.
-
ServiceLogSampleApiLogGroup -
SampleApiLogGroupServiceLog
예제: 일치 항목에서 하위 문자열 제외
다음 예제에서는 f1에 단어 Exception이 포함되지 않은 모든 로그 이벤트를 반환하는 쿼리를 보여줍니다. 이 예제에서는 대/소문자를 구분합니다.
fields f1, f2, f3 | filter f1 not like "Exception"
예제: 대/소문자를 구분하지 않는 패턴으로 하위 문자열 일치
대/소문자를 구분하지 않는 하위 문자열을 like 및 정규 표현식을 사용하여 일치시킬 수 있습니다. 일치시키려는 하위 문자열 앞에 다음 파라미터(?i)를 입력합니다. 다음 예제에서는 f1에 단어 Exception 또는 exception이 포함된 모든 로그 이벤트를 반환하는 쿼리를 보여줍니다.
fields f1, f2, f3 | filter f1 like /(?i)Exception/