지표 필터에 대한 필터 패턴 구문 - 아마존 CloudWatch 로그

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

지표 필터에 대한 필터 패턴 구문

참고

측정항목 필터의 차이점 - CloudWatch Logs Insights 쿼리

지표 필터는 일치하는 CloudWatch 로그를 찾을 때마다 지표 필터에 지정된 숫자 값이 추가된다는 점에서 Logs Insights 쿼리와 다릅니다. 자세한 정보는 지표 필터에 대한 지표 값 구성을 참조하세요.

Amazon CloudWatch Logs Insights 쿼리 언어를 사용하여 로그 그룹을 쿼리하는 방법에 대한 자세한 내용은 을 참조하십시오CloudWatch 로그 인사이트 쿼리 구문.

일반 필터 패턴 예제

지표 필터와 구독 필터필터 로그 이벤트에 적용할 수 있는 일반 필터 패턴 구문에 대한 자세한 내용은 지표 필터, 구독 필터 및 필터 로그 이벤트의 필터 패턴 구문을 참조하세요. 여기에 다음 예제가 포함되어 있습니다.

  • 지원되는 정규식 구문

  • 비정형 로그 이벤트에서 일치하는 용어 검색

  • JSON 로그 이벤트에서 일치하는 단어 검색

  • 공백으로 구분된 로그 이벤트에서 일치하는 용어 검색

지표 필터를 사용하면 Logs로 CloudWatch 들어오는 로그 데이터를 검색 및 필터링하고, 필터링된 로그 데이터에서 지표 관찰을 추출하고, 데이터 포인트를 CloudWatch Logs 지표로 변환할 수 있습니다. CloudWatch Logs로 전송되는 로그 데이터에서 검색할 용어와 패턴을 정의합니다. 지표 필터는 로그 그룹에 할당이 되고, 로그 그룹에 할당된 모든 필터는 로그 스트림에 적용됩니다.

지표 필터와 일치하는 용어가 검색되면 지표 개수가 지정된 숫자 값만큼 증가합니다. 예를 들어 지표 필터를 생성하여 로그 이벤트에서 ERROR라는 단어의 개수를 계산할 수 있습니다.

지표에 측정 단위 및 차원을 할당할 수 있습니다. 예를 들어 로그 이벤트 내 ERROR라는 단어의 개수를 계산하는 지표 필터를 만드는 경우, ErrorCode라는 차원을 지정하여 단어 ERROR를 포함하는 총 로그 이벤트 수를 표시하고 보고된 오류 코드를 기준으로 데이터를 필터링할 수 있습니다.

작은 정보

지표에 측정 단위를 할당하는 경우 올바른 단위를 지정해야 합니다. 나중에 단위를 변경하면 변경 사항이 적용되지 않을 수 있습니다. CloudWatch 지원하는 장치의 전체 목록은 Amazon CloudWatch API 참조를 참조하십시오 MetricDatum.

지표 필터에 대한 지표 값 구성

지표 필터를 생성할 때 필터 패턴을 정의하고 지표의 값과 기본값을 지정합니다. 지표 값을 숫자, 명명된 식별자 또는 숫자 식별자로 설정할 수 있습니다. 기본값을 지정하지 않으면 메트릭 필터가 일치하는 값을 찾지 못해도 데이터를 보고하지 않습니다. CloudWatch 값이 0인 경우에도 기본값을 지정하는 것이 좋습니다. 기본값을 설정하면 데이터를 더 정확하게 CloudWatch 보고할 수 있고 지표가 잘못 집계되는 것을 CloudWatch 방지할 수 있습니다. CloudWatch 1분마다 지표 값을 집계하고 보고합니다.

지표 필터가 로그 이벤트에서 일치하는 항목을 찾으면 지표 값을 기준으로 지표 수가 증가합니다. 지표 필터가 일치하는 항목을 찾지 못하면 지표의 기본값을 CloudWatch 보고합니다. 예를 들어 로그 그룹이 1분마다 두 개의 레코드를 게시하고, 지표 값은 1, 기본값은 0입니다. 처음 1분 동안 지표 필터가 두 로그 레코드 모두에서 일치하는 항목을 찾을 경우 이 기간(분)의 지표 값은 2입니다. 두 번째 1분 동안 지표 필터가 두 레코드 모두에서 일치하는 항목을 찾지 못할 경우 해당 기간(분)의 기본값은 0입니다. 지표 필터가 생성하는 지표에 차원을 할당하는 경우 해당 지표에 대한 기본값을 지정할 수 없습니다.

정적 값 대신 로그 이벤트에서 추출한 값으로 지표를 증가시키도록 지표 필터를 설정할 수도 있습니다. 자세한 내용은 로그 이벤트의 값을 사용하여 지표 값 증가 섹션을 참조하세요.

JSON 값 또는 공백으로 구분된 로그 이벤트의 지표로 차원 게시

CloudWatch 콘솔 또는 AWS CLI를 사용하여 JSON 및 공백으로 구분된 로그 이벤트가 생성하는 지표와 함께 차원을 게시하는 지표 필터를 생성할 수 있습니다. 차원은 이름/값 쌍이며 JSON 및 공백으로 구분된 필터 패턴에만 사용할 수 있습니다. JSON 및 공백으로 구분된 지표 필터를 최대 3개의 차원으로 생성할 수 있습니다. 차원에 대한 자세한 내용 및 지표에 차원을 할당하는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.

중요

차원에는 사용자 지정 지표와 동일한 요금을 수집하는 값이 포함되어 있습니다. 예기치 않은 요금이 청구되는 것을 방지하려면 IPAddress 또는 requestID처럼 높은 카디널리티 필드를 차원으로 지정하지 마세요.

로그 이벤트에서 지표를 추출하면 사용자 지정 지표에 대한 요금이 청구됩니다. 실수로 높은 요금이 부과되는 것을 방지하기 위해 일정 시간 내에 지정한 차원에 대해 1000개의 다른 이름/값 쌍을 생성하는 경우 Amazon이 지표 필터를 사용 중지할 수 있습니다.

예상 요금을 알려주는 결제 경보를 생성할 수 있습니다. 자세한 내용은 예상 AWS 요금 모니터링을 위한 결제 경보 생성을 참조하십시오.

다음 예제에는 JSON 지표 필터에서 차원을 지정하는 방법을 설명하는 코드 조각이 포함되어 있습니다.

Example: JSON log event
{ "eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": [ "value", "another value" ], "objectList": [ {"name": "a", "id": 1 }, {"name": "b", "id": 2 } ] }
참고

예제 JSON 로그 이벤트로 예제 지표 필터를 테스트하는 경우, 예제 JSON 로그를 한 줄에 입력해야 합니다.

Example: Metric filter

지표 필터는 JSON 로그 이벤트에 속성 eventType"sourceIPAddress"가 포함될 때마다 지표를 증가시킵니다.

{ $.eventType = "*" && $.sourceIPAddress != 123.123.* }

JSON 지표 필터를 생성할 때 지표 필터에 있는 어떤 속성도 차원으로 지정할 수 있습니다. 예를 들어, eventType을 차원으로 설정하려면 다음을 사용합니다.

"eventType" : $.eventType

예제 지표에는 이름이 "eventType"인 차원이 포함되어 있고, 예제 로그 이벤트의 차원 값은 "UpdateTrail"입니다.

다음 예제에는 공백으로 구분된 지표 필터에서 차원을 지정하는 방법을 설명하는 코드 조각이 포함되어 있습니다.

Example: Space-delimited log event
127.0.0.1 Prod frank [10/Oct/2000:13:25:15 -0700] "GET /index.html HTTP/1.0" 404 1534
Example: Metric filter
[ip, server, username, timestamp, request, status_code, bytes > 1000]

지표 필터는 공백으로 구분된 로그 이벤트에 필터에 지정된 필드가 포함된 경우 지표를 증가시킵니다. 예를 들어 지표 필터는 공백으로 구분된 로그 이벤트 예제에서 다음 필드 및 값을 찾습니다.

{ "$bytes": "1534", "$status_code": "404", "$request": "GET /index.html HTTP/1.0", "$timestamp": "10/Oct/2000:13:25:15 -0700", "$username": "frank", "$server": "Prod", "$ip": "127.0.0.1" }

공백으로 구분된 지표 필터를 생성할 때 지표 필터에 있는 어떤 속성도 차원으로 지정할 수 있습니다. 예를 들어, server을 차원으로 설정하려면 다음을 사용합니다.

"server" : $server

예제 지표 필터에는 이름이 server인 차원이 있고, 예제 로그 이벤트의 차원 값은 "Prod"입니다.

Example: Match terms with AND (&&) and OR (||)

논리 연산자 AND('&&') 및 OR('||')를 사용하여 조건을 포함하는 공백으로 구분된 지표 필터를 생성할 수 있습니다. 다음 지표 필터는 이벤트의 첫 번째 단어가 WARN을 포함하는 모든 상위 문자열 또는 ERROR인 로그 이벤트를 반환합니다.

[w1=ERROR || w1=%WARN%, w2]

로그 이벤트의 값을 사용하여 지표 값 증가

로그 이벤트에서 찾은 숫자 값을 게시하는 지표 필터를 생성할 수 있습니다. 이 섹션의 절차에서는 다음 예제 지표 필터를 사용하여 JSON 로그 이벤트의 숫자 값을 지표에 게시하는 방법을 보여 줍니다.

{ $.latency = * } metricValue: $.latency
로그 이벤트에 값을 게시하는 지표 필터 생성
  1. https://console.aws.amazon.com/cloudwatch/ 에서 CloudWatch 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 로그(Logs)를 선택한 다음, 로그 그룹(Log groups)을 선택합니다.

  3. 로그 그룹을 선택하거나 생성합니다.

    로그 그룹을 생성하는 방법에 대한 자세한 내용은 Amazon Logs 사용 설명서의 CloudWatch Logs에서 CloudWatch 로그 그룹 생성을 참조하십시오.

  4. 작업(Actions)을 선택한 후 지표 필터 생성(Create metric filter)을 선택합니다.

  5. 필터 패턴(Filter Pattern){ $.latency = * }를 입력하고 다음(Next)을 선택합니다.

  6. 지표 이름(Metric Name)myMetric을 입력합니다.

  7. 지표 값(Metric Value)$.latency를 입력합니다.

  8. (선택 사항) 기본값(Default Value)0을 입력하고 다음(Next)을 선택합니다.

    값이 0인 경우에도 기본값을 지정하는 것이 좋습니다. 기본값을 설정하면 데이터를 더 정확하게 CloudWatch 보고하고 지표가 불안정하게 집계되는 것을 CloudWatch 방지할 수 있습니다. CloudWatch 1분마다 지표 값을 집계하고 보고합니다.

  9. 지표 필터 생성(Create metric filter)을 선택합니다.

예제 지표 필터가 예제 JSON 로그 이벤트의 용어 "latency"와 일치하고 숫자 값 50을 지표 myMetric에 게시합니다.

{ "latency": 50, "requestType": "GET" }