AWS

[Re18특집] CloudWatch Logs에서 직접 로그를 분석 – CloudWatch Logs Insights 기능 출시

여기서 다루는 내용

· 개요
· 대화형 분석
· 시각화
· 대시보드 등록
· 정리


들어가며


안녕하십니까, GS네오텍 김범환입니다.

리인벤트에서 신기능들이 쏟아져 나오고 있습니다. 와 진짜 너무 많아요
이번 포스팅에서는 그 중 “CloudWatch Logs Insights” 기능을 살펴보려고 합니다.

기존 CloudWatch Logs에서는 단순히 로그를 수집, 저장 하고 열람하는 기능 (+간단한 필터링) 정도만 제공했는데요.
이 로그들을 분석하고 시각화하기 위해서는 다른 저장소로 옮기는 등의 추가 작업이 필요했습니다.

이번에 새로 출시된 Logs Insights 기능을 이용하면
“CloudWatch 콘솔에서 바로 로그를 분석하고 시각화해서 대시보드에까지 등록”까지의 작업을 손쉽게 할 수 있습니다.

오늘 포스팅에서는 CloudWatch Logs 데이터를 대상으로

  • 대화형으로 분석하고
  • 보기쉽게 시각화하고
  • 대시보드에 등록

하는 것까지 단계적으로 실습해 보도록 하겠습니다.


대화형 분석


CloudWatch Logs에는 다양한 로그들이 쌓입니다.
VPC Flow logs, Route53 Log, Lambda Log, CloudTrail Log 등이 대표적이고
RDS, IOT, ECS, API Gateway, S3 Access Log 등 설정하기에 따라 수많은 로그를 CloudWatch Logs에 쌓을 수 있습니다.

“대화형 분석”은 이렇게 쌓여있는 로그들에게 대화를 걸어서 이것저것 물어보는 분석일텐데요.
Athena와 같은 Ad-hoc 분석툴을 생각하시면 됩니다.
Athena도 생소하시다면.. 말 그대로 “대화형”으로 데이터를 분석하는 개념이라고 생각하시면 됩니다.

자 그러면. 제가 가진 로그 중 그나마 로그량이 많은 VPC Flow log와 한번 대화를 나눠보도록 하겠습니다.

어떤 쿼리를 날릴까 고민하고 있었는데. 고맙게도 AWS에서 예제쿼리를 작성해 놓았네요.

“거부된 요청수가 가장 많은 상위 20개 소스IP 주소”를 한번 쿼리해보도록 하겠습니다.

나쁜놈들
※ VPC Flow Log 중 Reject된 로그의 Source IP 상위 20개

간단하게 쿼리를 만들었지만 유용한 결과가 나왔네요. 예제에 있는 다른 쿼리들도 유용한 것 같습니다.
필요하면 커스텀하게 쿼리를 만들어 사용해야 할텐데 콘솔창을 살펴보니 마침 화면 오른쪽에 쿼리 도움말이 있네요.

쿼리도움말

저 6가지 명령어를 통해서 로그들과 대화를 나눌 수 있습니다.
어려운 영어단어들은 아니지만. 생소한 명령어로 보이는데요. 커서를 대보면 약간의 설명과 예제를 보실 수 있습니다.

이해를 돕기위해 조금 더 간략하게 정리해보았습니다.

제공하는 명령어 목록


명령어기능
fields로그에서 필드를 검색해서 자동으로 뽑아주네요. 열람할 필드를 적으면 해당 필드를 가져옵니다.
filter여기에 조건을 걸어서 필드들의 데이터를 걸러낼수 있겠네요.
sql문의 'where' 와 비슷한 기능인 것 같습니다.(문법은 다릅니다)
limitsql의 limit과 같습니다.
parse메세지 필드등을 parse할 때 사용할수 있는 명령어 같습니다.
예를들어, 아파치 로그같은게 들어온다고 하면 parse를 통해 필드를 나눠주는 명령어입니다.
sortsql의 sort와 비슷합니다. 정렬할 필드와 정렬방식을 선택할 수 있습니다.
stats집계를 도와주는 명령어입니다.
sum(), avg(), count(), min(), max() 등의 연산자가 지원됩니다.

공식문서에 들어가보시면 조금 더 디테일하게 쿼리문을 다루는 법을 설명해 놓았습니다.

아쉽게도 아직 한글번역은 안되어 있기 때문에. 영문 페이지로 확인하셔야 합니다.


보기쉽게 시각화


Logs Insights는 쿼리한 데이터를 시계열 그래프로 바로 시각화할 수 있습니다.

다음처럼 간단하게 VPC Flow Logs를 1분 간격으로 갱신하여 시각화할 수 있습니다.


※ 1분 간격으로 본 VPC Flow Logs

여기에 추가로 특정 IP만 필터를 걸어서 유입추이를 확인하는 것도 가능합니다.


※ Reject 횟수가 가장 많은 IP의 활동 추이

손쉽게 시계열 그래프를 그릴수 있게 도와주는 편리한 기능인것 같습니다.
분단위, 초단위로 쉽게 단위변경이 되는 것도 좋구요. 누적 면적으로 보기 쉽게 정리할 수도 있습니다.

다만 아쉬운 점은
’18년 12월 기준 아직 시계열그래프만 지원한다는 점입니다.
이것저것 비교할 수있게 막대그래프, 히트맵 이런것들까지 지원해주면 좋을텐데요. 아마 개선이 될 것으로 보입니다.

또 하나 아쉬운 부분은
시각화에서 바로 상세자료(해당 로그)로 넘어갈 수 없다는 점입니다.
시각화해서 직관적으로 데이터를 확인하고 바로 디테일한 로그를 봐서 데이터를 이해할 수 있으면 좋을텐데.
이 부분 또한 사용성 측면에서 조금 아쉬움이 남습니다.


대시보드에 등록


쿼리의 결과를 CloudWatch Dashboard에 등록할 수도 있습니다.

아까 그 Reject SourceIP 상위 20명을 등록해볼까요?


기존에 대시보드에 추가할 수도. 새로운 대시보드를 생성할 수도 있습니다.
또한 추가된 대시보드에서 새로고침 버튼을 눌러서 쿼리를 갱신할 수도 있네요.
대시보드 전체를 자동 새로고침 상태로 만들어 놓으면 그 주기에 따라서도 자동-갱신이 됩니다.

여기서도 아쉬운 점은
Log Insight에서 열심히 만든 시각화 결과물을 Dashboard에 등록할 수 없다는 점입니다.

곧 업데이트 되지 않을까 기대를 해봅니다.


정리


요즘 새로 나오는 AWS 서비스를 보면.
기존에 각종 데이터가 놓인 영역(S3, CloudWatch Logs)을 대상으로
바로 쿼리를 하고. 분석을 하고. 재가공할 수 있게끔 쉽고 편리한 방식을 제공하고 있습니다.

이전에 나온 S3 Select나 Athena 서비스를 보면. 별다른 선작업 없이 S3 데이터에 바로 쿼리해서 응답을 받을 수 있도록.
또한 그 로그가 AWS에서 Generate한 로그일 경우 로그 필드까지 고려해서 바로 사용할 수 있게 접근성을 매우 높여 놓았습니다.

오늘 소개드린 내용도 이 연장선상에서 CloudWatch Logs에 쌓인 데이터를 바로 분석할 수 있게 만든 기능이라고 이해하시면 되겠죠?

참고로 요금은 스캔한 로그 데이터 크기에 비례해 과금됩니다. Athena 서비스와 비슷한 과금 구조를 갖고 있네요.

그럼 마치겠습니다.

끝!

Related Post

태그 : , , ,

필자: 김 범환

전체 게시물수 : 2

전체 조회수 : 1258

게시물 공유하기