Amazon Virtual Private Cloud(Amazon VPC) 피어링 연결을 통해 전송되는 바이트 수를 모니터링하려고 합니다.
해결 방법
Amazon CloudWatch Logs Insights와 Amazon Athena를 사용하여 Amazon VPC 흐름 로그를 쿼리합니다.
사전 요구 사항
활성 Amazon VPC 피어링 연결을 생성합니다.
최소한 소스 VPC에서 Amazon VPC 흐름 로그를 활성화합니다. VPC 흐름 로그를 CloudWatch Logs 또는 Amazon Simple Storage Service(Amazon S3) 버킷에 게시할 수 있습니다.
다음 예제 사용자 지정 VPC 흐름 로그 형식에서는 ${traffic-path} 및 ${bytes} 필드를 사용합니다.
${interface-id} ${vpc-id} ${srcaddr} ${dstaddr} ${pkt-srcaddr} ${pkt-dstaddr} ${traffic-path} ${bytes} ${log-status}
피어링 연결을 통해 전송되는 바이트 수를 확인하려면 ${traffic-path} 및 ${bytes} 필드를 지정하고 쿼리하십시오. traffic-path는 송신 트래픽이 대상으로 이동하는 경로를 식별합니다.
참고: Amazon VPC 피어링 연결의 트래픽 경로 값은 내부 AWS 리전의 경우 4이고 AWS 리전 간에는 5입니다.
자세한 내용은 사용 가능한 필드를 참조하십시오.
CloudWatch Insights를 사용하여 흐름 로그 쿼리
CloudWatch Logs Insights를 사용하여 흐름 로그를 쿼리하려면 다음 단계를 따르십시오.
-
CloudWatch 콘솔을 엽니다.
-
탐색 창에서 Logs Insights를 선택합니다.
-
Logs Insights 대시보드에서 로그 그룹을 선택합니다.
-
다음 쿼리를 실행하여 VPC 로그 내의 모든 리전 내부 및 리전 간 VPC 피어링 연결을 통해 전송되는 전체 바이트 수를 계산합니다.
fields @timestamp, bytes
|filter trafficPath in ['4','5']
| stats sum(bytes) as
TotalBytesTransferred
-
다음 쿼리를 실행하여 모든 리전 내부 및 리전 간 VPC 피어링 연결을 통해 소스와 대상 간에 전송되는 전체 바이트 수를 계산합니다. 결과는 전송된 바이트 수를 기준으로 내림차순으로 나열됩니다.
fields @timestamp, bytes, srcAddr, dstAddr
| sort srcAddr, dstAddr
| filter trafficPath in ['4', '5']
| stats sum(bytes) as TotalBytesTransferred by srcAddr, dstAddr
| sort -TotalBytesTransferred
-
다음 쿼리를 실행하여 소스 및 대상 IP 주소별로 검색합니다.
fields @timestamp, bytes, srcAddr, dstAddr
| sort @timestamp desc
| filter trafficPath in ['4', '5']
| filter srcAddr = "x.x.x.x" and dstAddr = "x.x.x.x"
| stats sum(bytes) as TotalBytesTransferred by srcAddr, dstAddr
| sort -TotalBytesTransferred
사용자 지정 쿼리는 자습서: 집계 함수를 사용하여 쿼리 실행을 참조하십시오. 쿼리 구문에 대한 자세한 내용은 CloudWatch Logs Insights 쿼리 구문을 참조하십시오.
CloudWatch Logs Insights 쿼리를 사용하는 방법에 대한 자세한 내용은 VPC 흐름 로그와 함께 CloudWatch Logs Insights 쿼리를 사용하려면 어떻게 해야 합니까?를 참조하십시오.
Amazon Athena를 사용하여 VPC 흐름 로그 쿼리
Amazon Athena를 사용하여 VPC 흐름 로그를 쿼리하려면 다음 단계를 따르십시오.
참고: 기본적으로 VPC 흐름 로그는 Amazon S3 버킷을 대상으로 하여 텍스트 형식으로 활성화됩니다.
-
Amazon Athena 콘솔을 열고 쿼리 편집기를 실행합니다.
-
Amazon VPC 흐름 로그용 Athena 테이블을 생성합니다.
-
DDL 문을 사용하여 VPC 흐름 로그의 데이터와 일치하는 열이 포함된 테이블을 생성합니다. 행 번호가 Amazon S3 파일 출력의 열 번호와 일치해야 합니다. 위치 소스에 Amazon S3 버킷 URI를 사용하십시오.
-
Amazon S3 기본 텍스트 형식 쿼리의 경우 다음 DDL 문을 사용합니다.
CREATE EXTERNAL TABLE IF NOT EXISTS `vpc_flow_logs` (
interface_id string,
vpc_id string,
srcaddr string,
dstaddr string,
pkt_srcaddr string,
pkt_dstaddr string,
traffic_path int,
bytes bigint,
log_status string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
LOCATION 's3://EXAMPLE_BUCKET/REGION/'
TBLPROPERTIES ("skip.header.line.count"="1");
참고: 각 테이블 열은 항목 순서대로 추가됩니다. 첫 번째 열은 interface_id string으로, 마지막 줄은 카운트에서 헤더를 생략하기 때문입니다.
-
다음 쿼리를 실행하여 리전 내부 또는 리전 간 피어링 연결을 통해 전송되는 전체 바이트 수를 확인합니다.
SELECT sum(bytes) as total_bytes_transferred
FROM vpc_flow_logs
WHERE traffic_path IN (4, 5);
-
다음 쿼리를 실행하여 리전 내부 또는 리전 간 피어링 연결을 통해 전송되는 전체 바이트 수를 계산합니다.
SELECT
srcaddr,
dstaddr,
SUM(bytes) AS total_bytes_transferred
FROM
vpc_flow_logs
WHERE traffic_path IN (4,5)
GROUP BY
srcaddr, dstaddr
ORDER BY
total_bytes_transferred DESC;
참고: 데이터는 소스 및 대상 IP 주소별로 분류되며 전송된 바이트 수를 기준으로 내림차순으로 나열됩니다.
자세한 내용은 사용자 지정 VPC 흐름 로그용 테이블 생성 및 쿼리를 참조하십시오.
관련 정보
VPC 흐름 로그를 사용하여 IP 주소 트래픽 로깅
흐름 로그를 CloudWatch 로그에 게시
흐름 로그를 Amazon S3에 게시