만자의 개발일지

[AWS] CloudWatch Logs Metric filter 생성하기 본문

AWS

[AWS] CloudWatch Logs Metric filter 생성하기

박만자 2022. 1. 26. 15:29

이번 포스팅에서는 CloudWatch Logs에서 로그를 분석할 수 있는 기능인 Metric filter 사용방법에 대해 포스팅 하도록 하겠습니다.

 

Metric filter

Metric filter 기능을 사용하면 로그에 있는 특정 값을 추출할 수 있고, Dashboard에서 그 값을 가지고 시각화 하거나, Alarm기능으로도 사용할 수 있습니다.


Custom Metric 만드는 방법 

 

먼저 AWS 콘솔에서 검색창에 CloudWatch를 검색합니다.

 

CloudWatch를 클릭한 후 왼쪽 메뉴에 Logs -> Log groups를 선택합니다.

 

자신의 Log group을 선택한 후 중앙 메뉴바에서 Metric filters를 선택해줍니다.

 

오른쪽에 Create metric filter 버튼을 클릭한 후 Filter pattern을 정의해 줍니다.

 

log data는 제 웹서버의 로그를 가지고 테스트 하겠습니다. log data는 달라도 방법은 똑같으니 달라도 괜찮습니다.

우선 Filter pattern에 "[]" 를 입력해 주고 Test pattern 버튼을 눌러주면 아래와 같이 결과가 뜨게됩니다.

보시다시피 제 log data 기준으로 공백을 기준으로 10개의 열(column)으로 나눠주는 것을 보실 수 있습니다.

** 괄호 ( [], {}, () ) 나 따음표 ( "" , '' )안에 있는 공백은 무시하고 하나로 칩니다 **

빨간색으로 줄친 부분에 $1, $10, $2, $3, $4... 라고 적혀있는것을 보실 수 있습니다. 공백을 기준으로 나눠준 열(column)의 순서입니다.

Fillter pattern의 역할은 저 열(column)의 이름을 정의해주는 역할입니다.

 

Filter pattern에 다음과 같이 입력해 주었습니다. [Date, Time, UserInfo, IP,,, Timestamp, RequestInfo, StatusCode,]

보시다시피 아까는 없었던 열(column)이름이 생긴 것을 보실 수 있습니다.

열이름은 앞에서부터 순서대로 ($1 -> Date, $2 -> Time, $3 - UserInfo, ... ) 적용됩니다.

빈칸을 둔 이유는 log data에 하이픈(-) 이 있어서 걸러주기 위해 빈칸을 두었습니다.

 

만약 private IP가 10.0.2.47인 인스턴스의 log data만 조회하고 싶다면, 다음과 같이 Filter pattern을 정의해 주시면 됩니다. [Date, Time, UserInfo, IP=10.0.2.47,,, Timestamp, RequestInfo, StatusCode,]

열에 특정 값을 주면 해당하는 값에 대한 log data를 조회합니다.

 

아래는 AWS 공식문서에서 제공하는 예제인 StatusCode가 404인 log data를 조회하는 방법입니다.

https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Counting404Responses.html

 

Example: Count HTTP 404 codes - Amazon CloudWatch Logs

Example: Count HTTP 404 codes Using CloudWatch Logs, you can monitor how many times your Apache servers return a HTTP 404 response, which is the response code for page not found. You might want to monitor this to understand how often your site visitors do

docs.aws.amazon.com

 

Filter pattern을 정의해 주셨다면 하단에 Next 버튼을 눌러 다음으로 넘어가 줍니다.

그 다음 Filter name과 Metric details를 정의해줍니다. 저는 다음과 같이 정의해 주었습니다.

Metric value의 경우 Filter pattern 에서 정의했던 열이름을 사용하시면 됩니다.

 

그 다음 하단에 Next 버튼을 누른후 Create metric filter 버튼을 눌러줍니다.

 

잘 생성된 것을 볼 수 있습니다.

 

이제 이 metric filter를 가지고 Dashboard나 Alarm에서 사용하실 수 있습니다.

Dashboard나 Alarm에 적용하는 방법은 조만간 포스팅하도록 하겠습니다.

Comments