티스토리 뷰

AWS

AWS cloudwatch 지표필터 만들기

나를찾는아이 2024. 6. 20. 08:08
728x90
반응형

지표 필터를 사용하면 CloudWatch 들어오는 로그 데이터를 검색 및 필터링할수 있습니다

 

이때 CloudWatch Logs로 전송되는 로그 데이터에서 검색할 용어(= 패턴)의 정의가 필요합니다

 

 

먼저 지표필터를 만들 로그그룹을 cloudwatch에서 선택합니다

 

로그그룹을 선택하면 "지표 필터"탭에서 "지표 필터 생성" 버튼을 클릭하여 지표 필터를 생성할수 있습니다

 

 

 

지표필터를 어떻게 활용할수 있는지 예를 들어보겠습니다

 

 

여러분이 nodejs 프레임워크인 express를 사용하고 있다고 가정해보겠습니다

 

가장 흔하게 사용하는 morgan 패키지를 이용하여 http 호출 로그를 기록합니다

 

app.use(morgan(':method :url :status :res[content-length] - :user-agent :remote-addr - :response-time ms'));

 

 

이런식으로 어떻게 http 요청 로그를 출력할지 지정할수 있습니다 로그포맷은 기본값을 사용해도 좋구요

 

POST /api/product/3246 200 8266 - axios 155.165.3.55 - 33.580 ms


실제 http 요청이 접수되었을때 위와 같은 로그가 작성됩니다

 

 

이렇게 계속해서 누적되는 http 요청에 대해서 cloudwatch 로그스트림에 로그가 차곡차곡 쌓일텐데요

 

cloudwatch 로그그룹에 생성된 이 로그들중에서 http status code가 400, 404인 데이터의 지표를 보고자합니다

 

그래프를 통해서 추이를 본다거나, 특정 갯수 이상일때 경보를 생성할수도 있겠죠?

 

 

 

"지표 필터 생성" 버튼을 클릭하면

 

먼저 필터 패턴을 생성해야합니다

 

 

 

로그그룹에 쌓인 수많은 로그들이 어떠한 패턴으로 저장되는지 알려주어서 분석할수 있도록 하는것이죠

 

 

[method, path, statusCode, ...]

 

이렇게 패턴 필터링에 입력을 하면 하나의 line에서

공백을 기준으로 method, path, statusCode로 구분을하게 됩니다

 

물론 JSON 형태의 로그도 분석이 가능합니다

 

아래의 패턴 테스트를 통해서 샘플 로그 이벤트 메시지를 입력하고

 

내가 입력한 패턴 필터링대로 필터가 되는지 확인해볼수 있습니다

 

 

 

 

만약 특정 http status code만 필터링 하고자하는 경우에는

[method, path, statusCode=400, ...]

 

이렇게 작성할수 있습니다

 

정규식을 이용해서도 패턴필터링을 할수 있는데 자세한 내용은 이 링크를 참고하세요

 

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

 

지표 필터, 구독 필터, 필터 로그 이벤트 및 Live Tail에 대한 필터 패턴 구문 - 아마존 CloudWatch 로그

IP 주소와 일치하는 정규식을 생성하는 경우 . 연산자를 이스케이프 처리하지 않아야 합니다. 예를 들어, %10.10.0.1%는 '10010,051'과 일치할 수 있으며, 이는 식의 의도된 실제 용도가 아닐 수 있습니

docs.aws.amazon.com

 

 

이후 작업을 진행해보겠습니다

 

이 필터링의 이름을 무엇으로 할지 정합니다

 

 

 

그리고 지표 네임스페이스와 지표 이름을 지어야 하는데

 

본인이 해당 지표를 알수 있는 쉬운이름이면 좋습니다

 

지표값은 대부분의 케이스에서 1을 선택하시면 됩니다

 

1이 의미하는바는 하나의 패턴이 검출되었을때 1의 숫자로 기록하겠다는 것이라서

 

횟수를 셀때는 기본값을 1로 설정하여 사용하시면 됩니다

 

기본값과 unit도 설정하실수 있는데 데이터는 보는데 있어서는 크게 중요하지는 않습니다

 

 

 

작성한 지표필터는 이렇게 생성이 되었습니다

 

생성 이후에 해당 필터와 매칭되는 데이터가 인입되는 경우

 

해당 지표에 대한 결과를 조회할수 있습니다

 

 

 

그래서 약간 시간이 걸린 뒤에 볼수 있는 경우도 있습니다

 

여기에 더해서 차원이라는 기능을 잘쓰면 좀 더 여러가지를 쉽게 설정할수 있어서 좋습니다

 

지표필터 생성시의 하단에 "차원"이라는 섹션이 있는데

 

"차원"이라는 이름이 해석이 좋은것 같기도하면서도 다소 어렵습니다

 

차원이 뭔가 하면, 위의 예제에 차원에 statusCode를 지정했습니다

 

이렇게 차원을 지정하여 지표 필터를 생성하면 지표를 확인할때

 

 

차원(statusCode)을 기준으로 지표를 확인할수 있습니다

 

이런면에서는 "차원"이라는게 맞는 말인데 단어가 다소어렵네요

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함