필터 및 패턴 구문 - Amazon CloudWatch Logs

필터 및 패턴 구문

로그 이벤트의 용어를 일치시키는 지표 필터를 생성하고 로그 데이터를 지표로 변환할 수 있습니다. 지표 필터가 용어와 일치하면 지표의 개수가 증가합니다. 예를 들어 지표 필터를 생성하여 로그 이벤트에서 ERROR라는 단어의 개수를 계산할 수 있습니다.

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

참고

지표에 단위를 할당할 때는 올바른 단위를 지정해야 합니다. 나중에 단위를 변경하면 변경 사항이 적용되지 않을 수 있습니다.

필터 패턴을 사용하여 로그 이벤트의 용어 일치

필터 패턴은 지표 필터가 로그 이벤트의 용어를 일치시키는 데 사용하는 구문을 구성합니다. 용어는 단어, 정확한 문구 또는 숫자 값일 수 있습니다. 일치시키려는 용어를 사용하여 필터 패턴을 생성합니다. 필터 패턴은 정의한 용어가 포함된 로그 이벤트만 반환합니다. CloudWatch 콘솔에서 필터 패턴을 테스트할 수 있습니다. 다음 예제에는 필터 패턴을 사용하여 로그 이벤트의 용어를 일치시키는 방법을 보여주는 코드 조각이 포함되어 있습니다.

참고

필터 패턴은 대/소문자를 구분합니다. 영숫자가 아닌 문자가 포함된 정확한 문구 및 용어를 큰따옴표("")로 묶습니다.

예제: 단일 용어 일치

다음 코드 조각은 메시지에 ERROR라는 단어가 포함된 모든 로그 이벤트를 반환하는 단일 용어 필터 패턴의 예를 보여 줍니다.

ERROR

필터 패턴은 다음과 같이 로그 이벤트 메시지와 일치합니다.

  • [ERROR 400] BAD REQUEST

  • [ERROR 401] UNAUTHORIZED REQUEST

  • [ERROR 419] MISSING ARGUMENTS

  • [ERROR 420] INVALID ARGUMENTS

예제: 다중 용어 일치

다음 코드 조각은 메시지에 ERRORARGUMENTS라는 단어가 포함된 모든 로그 이벤트를 반환하는 다중 용어 필터 패턴의 예를 보여 줍니다.

ERROR ARGUMENTS

필터는 다음과 같은 로그 이벤트 메시지를 반환합니다.

  • [ERROR 419] MISSING ARGUMENTS

  • [ERROR 420] INVALID ARGUMENTS

필터 패턴에 지정된 두 용어를 모두 포함하지 않기 때문에 필터 패턴이 다음의 로그 이벤트 메시지를 반환하지 않습니다.

  • [ERROR 400] BAD REQUEST

  • [ERROR 401] UNAUTHORIZED REQUEST

예제: 단일 및 다중 용어 일치

패턴 일치를 사용하여 단일 및 다중 용어가 포함된 로그 이벤트를 반환하는 필터 패턴을 생성할 수 있습니다. 일치시키려는 용어 앞에 물음표('?')를 입력합니다. 다음 코드 조각은 메시지에 ERROR 또는 ARGUMENTS라는 단어와 ERRORARGUMENTS라는 단어가 포함된 모든 로그 이벤트를 반환하는 필터 패턴의 예를 보여 줍니다.

?ERROR ?ARGUMENTS

필터 패턴은 다음과 같이 로그 이벤트 메시지와 일치합니다.

  • [ERROR 400] BAD REQUEST

  • [ERROR 401] UNAUTHORIZED REQUEST

  • [ERROR 419] MISSING ARGUMENTS

  • [ERROR 420] INVALID ARGUMENTS

예제: 정확한 문구 일치

다음 코드 조각은 메시지에 INTERNAL SERVER ERROR라는 정확한 구가 포함된 모든 로그 이벤트를 반환하는 필터 패턴의 예를 보여 줍니다.

"INTERNAL SERVER ERROR"

필터는 다음과 같은 로그 이벤트 메시지를 반환합니다.

  • [ERROR 500] INTERNAL SERVER ERROR

예제: 용어 포함 및 제외

메시지에 일부 용어가 포함되고 다른 용어가 제외된 로그 이벤트를 반환하는 필터 패턴을 만들 수 있습니다. 제외하려는 용어 앞에 빼기 기호('-')를 입력합니다. 다음 코드 조각은 메시지에 ERROR라는 용어를 포함하고 ARGUMENTS라는 용어를 제외한 로그 이벤트를 반환하는 필터 패턴의 예를 보여 줍니다.

ERROR -ARGUMENTS

필터 패턴은 다음과 같은 로그 이벤트 메시지를 반환합니다.

  • [ERROR 400] BAD REQUEST

  • [ERROR 401] UNAUTHORIZED REQUEST

이 필터 패턴은 단어 ARGUMENTS가 포함되어 있으므로 다음 로그 이벤트 메시지를 반환하지 않습니다.

  • [ERROR 419] MISSING ARGUMENTS

  • [ERROR 420] INVALID ARGUMENTS

예제: 모든 항목 일치

로그 이벤트의 모든 항목을 큰따옴표로 일치시킬 수 있습니다. 다음 코드 조각은 모든 로그 이벤트를 반환하는 필터 패턴의 예를 보여 줍니다.

" "

지표 필터를 사용하여 JSON 로그 이벤트에서 용어 일치 및 값 추출

지표 필터는 필터 패턴을 포함하는 구성입니다. 로그 이벤트의 용어를 일치시키는 지표 필터를 생성하고 로그 데이터를 지표로 변환할 수 있습니다. 지표 필터가 용어와 일치하면 지표의 수를 늘릴 수 있습니다. 지표 필터는 필터 패턴에서 정의한 용어에만 일치합니다. CloudWatch 콘솔에서 지표 필터를 테스트할 수 있습니다. 또한 지표 필터를 생성하여 JSON 로그 이벤트에서 용어를 일치시키고 값을 추출할 수 있습니다. 다음 예제에서는 문자열 및 숫자 값을 포함하는 JSON 용어와 일치하는 지표 필터에 대한 구문을 설명합니다.

예제: 문자열과 일치하는 지표 필터

JSON 로그 이벤트의 문자열과 일치하도록 지표 필터를 생성할 수 있습니다. 다음 코드 조각은 문자열 기반 지표 필터에 대한 구문의 예를 보여줍니다.

{ PropertySelector EqualityOperator String }

지표 필터를 중괄호('{}')로 묶습니다. 문자열 기반 지표 필터에는 다음 부분이 포함되어야 합니다.

  • 속성 선택기

    뒤에 마침표가 있는 달러 기호('$.')로 속성 선택기를 설정합니다. 속성 선택기는 하이픈('-') 및 밑줄('_') 문자도 지원하는 영숫자 문자열입니다. 문자열은 과학적 표기법을 지원하지 않습니다. 속성 선택기는 JSON 로그 이벤트의 값 노드를 가리킵니다. 값 노드는 문자열이나 숫자일 수 있습니다. 속성 선택기 뒤에 배열을 배치합니다. 배열에는 0부터 시작하는 정렬 시스템(0 = 1, 1 = 2 등)을 따르는 요소가 포함됩니다. 요소를 대괄호('[]')로 묶습니다. 속성 선택기가 배열이나 객체를 가리킬 경우 지표 필터가 로그 형식과 일치하지 않습니다.

  • 같음 연산자

    같음('=') 또는 같지 않음('!=') 기호 중 하나를 사용하여 같음 연산자를 설정합니다. 같음 연산자는 부울 값(true 또는 false)을 반환합니다.

  • 문자열

    문자열을 큰따옴표("")로 묶을 수 있습니다. 영숫자 이외의 형식과 밑줄 기호가 포함된 문자열은 큰따옴표로 묶어야 합니다. 별표('*')를 와일드카드로 사용하여 텍스트와 일치시킵니다.

다음 코드 조각에는 JSON 용어와 문자열과 일치하도록 지표 필터의 서식을 지정하는 방법을 보여주는 지표 필터의 예가 포함되어 있습니다.

{ $.eventType = "UpdateTrail" }

예제: 숫자 값과 일치하는 지표 필터

JSON 로그 이벤트의 숫자 값과 일치하도록 지표 필터를 생성할 수 있습니다. 다음 코드 조각은 문자열 기반 지표 필터에 대한 구문의 예를 보여줍니다.

{ PropertySelector NumericOperator Number }

지표 필터를 중괄호('{}')로 묶습니다. 숫자 값과 일치하는 지표 필터에는 다음 부분이 있어야 합니다.

  • 속성 선택기

    뒤에 마침표가 있는 달러 기호('$.')로 속성 선택기를 설정합니다. 속성 선택기는 하이픈('-') 및 밑줄('_') 문자도 지원하는 영숫자 문자열입니다. 문자열은 과학적 표기법을 지원하지 않습니다. 속성 선택기는 JSON 로그 이벤트의 값 노드를 가리킵니다. 값 노드는 문자열이나 숫자일 수 있습니다. 속성 선택기 뒤에 배열을 배치합니다. 배열에는 0부터 시작하는 정렬 시스템(0 = 1, 1 = 2 등)을 따르는 요소가 포함됩니다. 요소를 대괄호('[]')로 묶습니다. 속성 선택기가 배열이나 객체를 가리킬 경우 지표 필터가 로그 형식과 일치하지 않습니다.

  • 숫자 연산자

    다음 기호 중 하나를 사용하여 숫자 연산자를 설정합니다. 보다 큼('>'), 보다 작음('<'), 같음('='), 같지 않음('!='), 이상('>=') 또는 이하('<=') 등.

  • 숫자

    더하기('+') 또는 빼기('-') 기호를 포함하는 정수를 사용하고 과학적 표기법을 따를 수 있습니다. 별표('*')를 와일드카드로 사용하여 숫자와 일치시킵니다.

다음 코드 조각에는 JSON 용어와 숫자 값이 일치하도록 지표 필터의 서식을 지정하는 방법을 보여주는 예가 포함되어 있습니다.

// Metric filter with greater than symbol { $.bandwidth > 75 } // Metric filter with less than symbol { $.latency < 50 } // Metric filter with greater than or equal to symbol { $.refreshRate >= 60 } // Metric filter with less than or equal to symbol { $.responseTime <= 5 } // Metric filter with equal sign { $.errorCode = 400} // Metric filter with not equal sign and scientific notation { $.errorCode != 500 } // Metric filter with scientific notation and plus symbol { $.number[0] = 1e-3 } // Metric filter with scientific notation and minus symbol { $.number[0] != 1e+3 }

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

다음 예에는 지표 필터가 JSON 로그 이벤트의 용어를 일치시키는 방법을 보여주는 코드 조각이 포함되어 있습니다.

예제: JSON 로그 이벤트

{ "eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": [ "value", "another value" ], "objectList": [ { "name": "a", "id": 1 }, { "name": "b", "id": 2 } ], "SomeObject": null }
참고

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

예제: 문자열과 일치하는 지표 필터

지표 필터가 속성 "eventType"의 문자열 "UpdateTrail"과 일치합니다.

{ $.eventType = "UpdateTrail" }

예제: 숫자와 일치하는 지표 필터

지표 필터는 와일드카드를 포함하며 "123.123" 접두사가 있는 숫자가 포함되어 있지 않기 때문에 "sourceIPAddress" 속성과 일치합니다.

{ $.sourceIPAddress != 123.123.* }

예제: 배열의 요소와 일치하는 지표 필터

지표 필터가 "arrayKey" 배열의 "value" 요소와 일치합니다.

{ $.arrayKey[0] = "value" }

예제: 배열의 객체와 일치하는 지표 필터

지표 필터가 "objectList" 배열의 "id":2 객체와 일치합니다.

{ $.objectList[1].id = 2 }

예제: IS를 사용하여 JSON 로그와 일치하는 지표 필터

JSON 로그의 필드가 IS 변수와 일치하는 지표 필터를 생성할 수 있습니다. IS 변수는 NULL, TRUE 또는 FALSE 값을 포함하는 필드와 일치할 수 있습니다. 다음 지표 필터는 SomeObject 값이 NULL인 JSON 로그를 반환합니다.

{ $.SomeObject IS NULL }

예제: NOT EXISTS를 사용하여 JSON 로그와 일치하는 지표 필터

로그 데이터에 특정 필드를 포함하지 않는 JSON 로그를 반환하는 NOT EXISTS 변수를 사용하여 지표 필터를 생성할 수 있습니다. 다음 지표 필터는 SomeOtherObject 필드를 포함하지 않는 JSON 로그를 반환하는 NOT EXISTS를 사용합니다.

{ $.SomeOtherObject NOT EXISTS }
참고

변수 IS NOTEXISTS는 현재 지원되지 않습니다.

복합 표현식을 사용하여 JSON 객체의 용어 일치

지표 필터에서 논리 연산자 AND('&&') 및 OR('||')를 사용하여 둘 이상의 조건이 참인 로그 이벤트와 일치하는 복합 표현식을 만들 수 있습니다. 복합 표현식은 괄호('()') 사용과 () > && > || 표준 연산 순서를 지원합니다. 다음 예제에는 지표 필터와 복합 표현식을 사용해 JSON 객체의 용어를 일치시키는 방법을 보여주는 코드 조각이 포함되어 있습니다.

예제: JSON 객체

{ "user": { "id": 1, "email": "John.Stiles@example.com" }, "users": [ { "id": 2, "email": "John.Doe@example.com" }, { "id": 3, "email": "Jane.Doe@example.com" } ], "actions": [ "GET", "PUT", "DELETE" ], "coordinates": [ [0, 1, 2], [4, 5, 6], [7, 8, 9] ] }

예제: AND(&&)를 사용하여 일치하는 표현식

지표 필터에는 숫자 값이 1"user""id"와 일치하고 문자열이 "John.Doe@example.com""email""users"와 일치하는 복합 표현식이 포함되어 있습니다.

{ ($.user.id = 1) && ($.users[0].email = "John.Doe@example.com") }

예제: OR(||)를 사용하여 일치하는 표현식

지표 필터에는 문자열이 "John.Stiles@example.com""user""email"과 일치하는 복합 표현식이 포함되어 있습니다.

{ $.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch" && $.actions[2] = "nonmatch" }

예제: AND(&&)를 사용하여 일치하지 않는 표현식

지표 필터에는 표현식이 "coordinates"의 첫 번째 및 두 번째 좌표와 "actions"의 세 번째 작업과 일치하지 않기 때문에 일치 항목을 찾지 못하는 복합 표현식이 포함되어 있습니다.

{ ($.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch") && $.actions[2] = "nonmatch" }

예제: OR(||)를 사용하여 일치하지 않는 표현식

지표 필터에는 표현식이 "users"의 첫 번째 속성 또는 "actions"의 세 번째 작업과 일치하지 않기 때문에 일치 항목을 찾지 못하는 복합 표현식이 포함되어 있습니다.

{ ($.user.id = 2 && $.users[0].email = "nonmatch") || $.actions[2] = "GET" }

지표 필터를 사용하여 공백으로 구분된 로그 이벤트에서 값을 추출

지표 필터를 생성하여 공백으로 구분된 로그 이벤트의 필드에 매핑하고 필드로부터 값을 추출할 수 있습니다. 다음 예제에는 공백으로 구분된 로그 이벤트를 보여주는 코드 조각, 공백으로 구분된 로그 이벤트의 필드에 매핑되는 지표 필터 및 공백으로 구분된 로그 이벤트의 필드에서 지표 필터가 추출하는 값이 포함되어 있습니다.

예제: 공백으로 구분된 로그 이벤트

다음 코드 조각은 7개의 필드(ip, user, username, timestamp, request, status_code, bytes)를 포함하는 공백으로 구분된 로그 이벤트를 보여 줍니다.

127.0.0.1 Prod frank [10/Oct/2000:13:25:15 -0700] "GET /index.html HTTP/1.0" 404 1534
참고

대괄호('[]') 와 큰따옴표("") 사이의 문자는 단일 필드로 간주됩니다.

예제: 지표 필터

공백으로 구분된 로그 이벤트의 필드에 매핑하고 필드로부터 값을 추출하는 지표 필터를 만들려면 지표 필터를 대괄호('[]')로 묶고 쉼표(',')로 구분된 이름으로 필드를 지정합니다. 다음 지표 필터는 7개의 필드를 구문 분석합니다.

[ip, user, username, timestamp, request =*.html*, status_code = 4*, bytes]

숫자 연산자( >, <, =, !=, >>=, 또는 <=) 및 별표(*) 를 와일드카드로 사용하여 지표 필터에 조건을 제공할 수 있습니다. 예제 지표 필터에서 request에는 .html이 들어 있는 값을 추출해야 한다는 와일드카드가 포함되며, status_code에는 4로 시작하는 값을 추출해야 한다는 와일드 카드를 포함합니다.

공백으로 구분된 로그 이벤트에서 구문 분석하는 필드 수를 모르는 경우 줄임표(...)를 사용하여 이름이 지정되지 않은 필드를 참조할 수 있습니다. 줄임표는 필요 시 많은 필드를 참조할 수 있습니다. 다음 예에서는 이전 예제 지표 필터에 표시된 이름 없는 처음 네 개의 필드를 나타내는 줄임표가 있는 지표 필터를 보여 줍니다.

[..., request =*.html*, status_code = 4*, bytes]

논리 연산자 AND(&&) 및 OR(||)를 사용하여 복합 표현식을 만들 수도 있습니다. 다음 지표 필터에는 status_code의 값은 반드시 404 또는 410이어야 한다는 복합 표현식이 포함되어 있습니다.

[ip, user, username, timestamp, request =*.html*, status_code = 404 || status_code = 410, bytes]

예제: 추출된 필드 및 값

다음 코드 조각은 지표 필터가 공백으로 구분된 로그 이벤트의 필드에서 추출하는 값을 보여 줍니다.

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

패턴 일치를 사용하여 공백으로 구분된 로그 이벤트의 용어 일치

패턴 일치를 사용하여 특정 순서로 용어와 일치하는 공백으로 구분된 지표 필터를 만들 수 있습니다. 표시기를 사용하여 용어의 순서를 지정합니다. 첫 번째 용어를 나타낼 때는 w1을 사용하고 후속 용어의 순서를 나타낼 때는 w2 등을 사용합니다. 용어 사이에 쉼표(',')를 입력합니다. 다음 예제에는 공백으로 구분된 지표 필터와 패턴 일치를 사용하는 방법을 보여주는 코드 조각이 포함되어 있습니다.

예제: 용어를 순서대로 일치

다음 공백으로 구분된 지표 필터는 로그 이벤트의 첫 번째 단어가 ERROR인 로그 이벤트를 반환합니다.

[w1=ERROR, w2]
참고

패턴 일치를 사용하는 공백으로 구분된 지표 필터를 생성하는 경우, 용어 순서를 지정한 후 빈 표시기를 포함해야 합니다. 예를 들어, 첫 번째 단어가 ERROR인 로그 이벤트를 반환하는 지표 필터를 생성하는 경우 w1 용어 뒤에 빈 w2 표시기를 추가합니다.

예제: AND(&&) 및 OR(||)와 용어 일치

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

[w1=ERROR || W1=WARNING, w2]

예제: 일치 항목에서 용어 제외

하나 이상의 용어를 제외한 로그 이벤트를 반환하는 공백으로 구분된 지표 필터를 생성할 수 있습니다. 제외하려는 용어 앞에 같지 않음 기호('!=')를 입력합니다. 다음 코드 조각은 첫 번째 단어가 ERRORWARNING이 아닌 로그 이벤트를 반환하는 지표 필터의 예를 보여줍니다.

[w1!=ERROR && w1!=WARNING, w2]

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

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

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

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

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

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

중요

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

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

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

JSON 로그 이벤트에서 지표로 차원 게시

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

예제: JSON 로그 이벤트

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

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

예제: 지표 필터

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

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

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

"eventType" : $.eventType

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

공백으로 구분된 로그 이벤트에서 지표로 차원 게시

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

예제: 공백으로 구분된 로그 이벤트

127.0.0.1 Prod frank [10/Oct/2000:13:25:15 -0700] "GET /index.html HTTP/1.0" 404 1534

예제: 지표 필터

[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"입니다.

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

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

{ $.latency = * } metricValue: $.latency

로그 이벤트에 값을 게시하는 지표 필터 생성

  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

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

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

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

  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는 매분마다 지표 값을 집계하고 보고합니다.

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

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

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