본문 바로가기
Cloud

[AWS] VPC Flow Logs를 Logs Insights를 활용해 쉽게 확인하기

by C곰군 2025. 2. 13.

안녕하세요?

곰군입니다.

 

본 글에서는 AWS CloudWatch Logs Insights에서 VPC Flow Logs에 저장된 네트워크 트레픽을 쉽게 쿼리하는 방법에 대해서 소개하고 사용하는 시간을 가져보겠습니다.

AWS VPC FLOW LOGS가 뭔가요?

VPC의 네트워크 인터페이스의 인-아웃 IP 트래픽에 대한 정보를 캡쳐해주는 기능이며, Amazon CloudWatch Logs, Amazon S3, Amazon Kinesis Data Firehose의 위치로 데이터를 수집할 수 있습니다.

이러한 VPC Flow Logs는 네트워크 트래픽 경로 외부에서 수집되기 때문에, 네트워크 성능에 영향을 미칠 위험 없이 로그를 생성하거나 삭제할 수 있습니다.

AWS에서는 다음과 같은 작업에 도움이 될 수 있다고 안내하고 있습니다.

  • 지나치게 제한적인 보안 그룹 규칙 진단
  • 인스턴스에 도달하는 트래픽 모니터링
  • 네트워크 인터페이스에서 들어오고 나가는 트래픽 방향 결정

Athena를 활용해서 FlowLogs의 내용 확인이 가능하지만, 로그를 CloudWatch에만 쌓고 있는 경우나 athena를 활용하기 어려운 상황에서는 CloudWatch Logs Insights를 활용해서 다른 설정없이 간단하게 쿼리할 수 있습니다.

CloudWatch Logs Insights란?

Amazon CloudWatch Logs의 로그 데이터를 대화형 방식으로 검색하고 분석할 수 있는 서비스 입니다.
AWS의 사용자 가이드에 따른 내용은 하기와 같습니다.

CloudWatch Logs Insights를 사용하면 Amazon CloudWatch Logs의 로그 데이터를 대화형 방식으로 검색하고 분석할 수 있습니다. 운영상의 문제에 보다 효율적이고 효과적으로 대처할 수 있도록 쿼리를 수행할 수 있습니다. 문제가 발생하는 경우 CloudWatch Logs Insights를 사용하여 잠재적 원인을 식별하고 배포된 수정 사항을 검증할 수 있습니다.

CloudWatch Logs Insights에는 몇 가지 간단하지만 강력한 명령을 포함하는 용도에 맞게 구축된 쿼리 언어가 포함되어 있습니다. CloudWatch Logs Insights는 시작하는 데 도움이 되는 샘플 쿼리, 명령 설명, 쿼리 자동 완성 및 로그 필드 검색을 제공합니다. 여러 가지 유형의 AWS 서비스 로그에 대한 샘플 쿼리가 포함되어 있습니다.

CloudWatch Logs Insights는 Amazon Route 53, AWS Lambda AWS CloudTrail, Amazon 등의 AWS 서비스와 로그 이벤트를 생성하는 애플리케이션 또는 사용자 지정 로그의 로그 필드를 자동으로 검색합니다. VPC JSON

CloudWatch Logs Insights를 사용하여 2018년 11월 5일 이후에 CloudWatch Logs로 전송된 로그 데이터를 검색할 수 있습니다.

중요

CloudWatch Logs Insights는 로그 그룹 생성 시간보다 오래된 타임스탬프가 있는 로그 이벤트에 액세스할 수 없습니다.

자연어를 사용하여 CloudWatch Logs Insights 쿼리를 만들 수도 있습니다. 그러려면 찾고 있는 데이터에 대해 질문하거나 설명합니다. 이 AI 지원 기능은 프롬프트를 기반으로 쿼리를 생성하고 쿼리 작동 방식에 line-by-line 대한 설명을 제공합니다. 자세한 내용은 자연어를 사용하여 CloudWatch Logs Insights 쿼리 생성 및 업데이트를 참조하십시오.

CloudWatch 교차 계정 Observability에서 모니터링 계정으로 설정된 계정에 로그인한 경우 이 모니터링 계정에 연결된 소스 계정의 CloudWatch 로그 그룹에서 Logs Insights 쿼리를 실행할 수 있습니다. 다른 계정에 있는 여러 로그 그룹을 쿼리하는 쿼리를 실행할 수 있습니다. 자세한 내용은 계정 CloudWatch 간 옵저버빌리티를 참조하세요.

하나의 요청으로 최대 50개의 로그 그룹을 쿼리할 수 있습니다. 쿼리가 완료되지 않은 경우 60분 후에 쿼리가 시간 초과됩니다. 쿼리 결과는 7일 동안 사용할 수 있습니다.

생성한 쿼리를 저장할 수 있습니다. 그러면 복잡한 쿼리를 실행해야 할 때마다 다시 만들지 않고도 실행할 수 있습니다.

CloudWatch Logs Insights 쿼리에는 쿼리된 데이터 양에 따라 요금이 부과됩니다. 자세한 내용은 Amazon CloudWatch 요금을 참조하십시오.

중요

네트워크 보안 팀에서 웹 소켓 사용을 허용하지 않는 경우, 현재 CloudWatch 콘솔의 CloudWatch Logs Insights 부분에 액세스할 수 없습니다. 를 사용하여 CloudWatch 로그 인사이트 쿼리 기능을 사용할 수 있습니다. APIs 자세한 내용은 Amazon CloudWatch 로그 API 참조를 참조하십시오 StartQuery.

CloudWatch Logs Insights로 VPCFlowLogs 쿼리하기

CloudWatch Logs Insights를 활용하는 방법은 먼저 콘솔에서 CloudWatch서비스를 찾아서 LogsInsights를 찾아서 들어가면 됩니다. 접속하면 하기와 같은 화면을 만나게 됩니다.

로그 그룹을 선택하는 체크박스에서 VPCFlowLogs를 선택하시고 쿼리실행만 진행하셔도 하기와 같은 결과를 볼 수 있습니다.

하지만 전체 내역을 뽑는 것은 네트워트 트렉픽을 분석하는데 큰 도움이 되지 않습니다. 확인이 필요한 대상지IP, 목적지IP등으로 제한해서 쿼리하는 것이 필요합니다. 하지만 쿼리하는 방법이 기존에 Athena나 SQL과는 조금 달라서 사용에 익숙한 Athena 형식과 비슷하게 쿼리하는 것이 편리합니다. 그 방법은 parse를 활용하는 겁니다.
Logs Insights는 CloudWatch에 저장된 message내용을 쿼리하기 편하고 보기 편하게 파싱하는 기능을 제공합니다. 하기 이미지는 VPCFlowLogs내용을 각 필드로 구분하고 그 필드 별로 조회조건을 걸어서 결과를 쿼리한 예시입니다.

관련한 파싱 코드 예제는 하기와 같습니다.

fields @timestamp, @message | 
parse @message "* * * * * * * * * * * * * *" as version, accountId, interfaceId, srcAddr, dstAddr, srcPort, dstPort, protocol, packets, bytes, start, end, action, logStatus | 
filter action = 'REJECT' 
and srcPort = '원하는포트'
->그 외 and, like 조건 모두 사용 가능
 | limit 10

위와 같이 Athena 형식으로 변환하여 filter를 하면 쉽고 간단하게 원하는 결과를 찾을 수 있습니다.

CloudWatch Logs Insights유의사항

CloudWatch Logs Insights는 큰 사전 작업없이 파워풀한 쿼리 및 분석을 제공하지만 무료서비스는 아닙니다.

2024년 9월 서울리젼을 기준으로 GB당 USD 0.0076의 요금이 발생합니다. 때문에 필터를 잘 활용하여 불필요한 과금이 발생하지 않도록 효율적으로 사용하는 것이 중요합니다.

레퍼런스
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/AnalyzingLogData.html
https://aws.amazon.com/ko/cloudwatch/pricing/

댓글