BLOG

Amazon CloudWatch Logs로 Amazon EC2 기반 VPN 지표 시각화
작성일: 2022-03-30

조직에는 AWS Site-to-Site VPN을 포함하여 온프레미스 네트워크 또는 타사에 연결할 수 있는 다양한 옵션이 있습니다. 그러나 일부 조직에서는 여전히 strongSwan과 같은 VPN 소프트웨어를 실행하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 사용해야 합니다.

 

Amazon CloudWatch 통합 기능이 있는 AWS 기본 VPN 서비스와 비교할 때 Amazon EC2 기반 VPN 지표에 대한 통찰력을 얻는 것은 어려울 수 있습니다. 오늘 포스팅에서는 관리자가 EC2 기반 VPN의 상태와 성능을 더 잘 모니터링할 수 있도록 중요한 지표를 표시하는 데 도움을 드리고자 합니다.

 

이러한 지표를 게시하면 관리자가 CloudWatch에 의미 있는 네트워크 지표를 유지하여 잠재적인 VPN 문제를 다른 AWS 지표 및 로그와 연관시킬 수 있습니다.

EC2 인스턴스에서 strongSwan을 실행하는 방법에 대해 자세히 알아보려면 이 블로그 게시물을 참조하십시오.

 

 

솔루션 개요

 

이 시나리오에서는 VPN 대상에 대한 지연 시간과 수신된 BGP 접두사 수를 포함하여 strongSwan 및 FRRouting을 실행하는 EC2 인스턴스에서 CloudWatch로 주요 지표를 내보냅니다. 또한 EC2 인스턴스의 라우팅 테이블에 있는 실제 BGP 접두사를 Amazon CloudWatch Logs로 내보냅니다. 이를 통해 관리자는 EC2 인스턴스에 로그인할 필요 없이 잠재적인 VPN 및 라우팅 문제를 해결할 수 있습니다.

 

FRR은 strongSwan과 함께 작동하며 동적 라우팅을 관리하는 데 사용됩니다. 이 경우 BGP 프로토콜을 사용하지만 다른 동적 라우팅 프로토콜을 수용하기 위해 간단한 수정을 할 수 있습니다.

 

 

자세한 설명

 

AWS CloudFormation 템플릿이 배포되면 지정한 EC2 인스턴스에 연결된 AWS Identity and Access Management(IAM) 역할이 생성됩니다. 권한에는 CloudWatch에 지표를 입력하고 특정 CloudWatch Logs 로그 스트림에 데이터를 입력할 수 있는 액세스 권한이 포함됩니다.

 

 

전제 조건

 

오늘 실습에 앞서 다음과 같은 준비가 필요합니다.

  • AWS 계정
  • FRR 또는 Quagga와 같은 동적 BGP 라우팅을 관리할 수 있는 소프트웨어 및 strongSwan과 함께 Ubuntu 또는 Amazon Linux 2를 실행하는 EC2 인스턴스
  • EC2 인스턴스에서 다른 VPN 디바이스로의 활성 VPN 연결
  • ICMP 트래픽을 수신할 수 있는 VPN의 원격 끝에 있는 대상 IP 주소

 

 

단계

 

아래의 순서로 진행됩니다.

  • CloudFormation 템플릿 배포
  • IAM 인스턴스 프로파일을 EC2 인스턴스에 연결
  • strongSwan을 실행하는 EC2 인스턴스에 bash 파일을 복사합니다.
  • EC2 인스턴스에 명령줄 인터페이스(AWS CLI) 설치
  • CloudWatch 및 CloudWatch Logs에 대한 지표 전달을 예약하는 cron 작업 생성
  • CloudWatch 대시보드를 보고 지표를 시각화하고 지표 전달을 확인합니다.

 

CloudFormation 스택 시작

 

  1. 이 포스팅과 연결된 CloudFormation 템플릿을 다운로드합니다.
  2. AWS 콘솔에 로그인하고 CloudFormation 콘솔로 이동합니다.
  3. Create stack(스택 생성) 버튼을 선택합니다.
  4. 이전에 저장한 템플릿 파일을 업로드하고 Next(다음)를 선택합니다.
  5. CloudFormation 스택의 이름을 입력하고 템플릿에 필요한 매개변수를 입력합니다.

 

그림 1: CloudFormation 스택 시작

 

6. 다음을 선택하고 선택적으로 적용할 태그를 지정합니다.

7. Next(다음)를 한 번 더 선택하고 세부 정보를 검토하고 CloudFormation 템플릿이 IAM 리소스를 생성할 것임을 확인하는 확인란을 선택하고 Create stack(스택 생성)을 선택합니다.

8. 이벤트 화면에서 자원 생성 진행 상황을 모니터링할 수 있습니다.

 

 

EC2 인스턴스에 인스턴스 프로파일 연결

 

  1. EC2 콘솔에서 strongSwan을 실행하는 인스턴스를 선택합니다.
  2. 오른쪽 상단 모서리에 있는 Actions(작업) 드롭다운에서 Security(보안)를 선택한 다음 Modify IAM role (IAM 역할 수정)을 선택합니다.
  3. 그림 2와 같이 드롭다운 메뉴에서 “EC2-CloudWatch-Metrics”라는 역할을 선택합니다(CloudFormation 템플릿을 배포할 때 기본 옵션을 수정한 경우 이 이름이 다를 수 있음).

 

그림 2: EC2 인스턴스에서 IAM 역할 수정

 

EC2 인스턴스에서 bash 스크립트 생성

 

그림 3: EC2 인스턴스에서 vpn-metrics.sh 스크립트 생성

  1. strongSwan을 실행하는 EC2 인스턴스에 로그인합니다.
  2. 위의 그림 3과 같이 새 파일을 만들고 아래 스크립트를 복사합니다

        ✅스크립트는 여기에서 다운로드할 수 있습니다. 

 

    1. $ nano vpn-metrics.sh
    2. 스크립트를 파일에 붙여넣기
    3. target_ip 변수를 수정하고 VPN의 다른 쪽 끝에 있는 대상 IP 주소를 지정합니다. ICMP 에코 요청 메시지를 수락하는지 확인하십시오. 또한 source_ip 변수에 대해 로컬 EC2 인스턴스의 소스 IP 주소를 지정합니다. 여기에서 ICMP 메시지가 소싱됩니다.
    4. 파일 저장
      1. ctrl-X를 눌러 편집기를 종료합니다.
      2. Y를 눌러 변경 사항을 저장하십시오
  1. 새 파일에 실행 권한 부여
    1. $ chmod +x vpn-metrics.sh

 

AWS CLI 설치

 

Amazon Linux 2 이외의 운영 체제를 사용하는 경우 AWS CLI를 설치해야 합니다.

$ sudo apt install awscli

 

크론 작업 만들기

 

cron 작업은 지정된 시간 또는 간격으로 실행되는 예약된 작업을 생성합니다.

Amazon Linux 2의 경우 다음 단계를 따르십시오:

  1. $ crontab -e
  2. 다음 줄을 추가하여 5분마다 스크립트를 실행합니다:
    1. */5 * * * * /home/ec2-user/vpn-metrics.sh

Ubuntu의 경우 다음 단계를 따르십시오:

  1. $ crontab -e
  2. 다음 줄을 추가하여 5분마다 스크립트를 실행합니다.
    1. */5 * * * * /home/ubuntu/vpn-metrics.sh

crontab이 저장되면 crontab: installing new crontab(crontab: 새 crontab 설치)가 나타납니다.

 

CloudWatch 대시보드 보기

 

  1. CloudWatch 콘솔로 이동하여 대시보드를 선택합니다.
  2. “EC2-VPN-Dashboard”라는 대시보드를 선택합니다.
  3. 크론 작업이 이미 실행된 경우 3개의 대시보드 위젯에 채워진 메트릭이 표시됩니다(아직 메트릭이 표시되지 않으면 CloudWatch에서 채울 때까지 몇 분 기다리십시오).
  4. cron 작업이 실행되고 스크립트를 실행한 후에도 새 메트릭이 계속 표시됩니다. CloudWatch 콘솔의 오른쪽 상단에 있는 새로 고침 아이콘을 사용하여 대시보드 위젯에 나타나는 새 지표를 확인하십시오. 그림 4는 세 가지 위젯 모두에 대한 메트릭을 보여줍니다.

 

그림 4: CloudWatch 대시보드 보기

 

그림 4의 왼쪽 하단에 있는 Amazon CloudWatch Contributor Insights 위젯은 BGP 접두사가 EC2 인스턴스의 BGP 라우팅 테이블에 더 이상 존재하지 않을 때 표시됩니다. 이는 여러 BGP 소스의 경로가 있는 시나리오 문제를 해결하는 데 매우 유용할 수 있습니다. 그림 4의 ReceivedBGPRouteCount 위젯의 하락은 그림 5의 BGP Prefix Insights 위젯에 표시된 것처럼 접두사 10.26.0.0/23의 일시적인 손실과 관련이 있습니다.

 

그림 5: BGP 접두사 인사이트

 

Contributor Insights 규칙은 CloudWatch 서비스 페이지 아래의 Contributor Insights 링크를 방문하여 독립 실행형 방식으로 볼 수도 있습니다.

 

정리하기

 

비용이 발생하지 않도록 EC2 인스턴스에서 실행 중인 크론 작업을 비활성화합니다. 이렇게 하려면 아래 단계를 실행하십시오:

  1. $ crontab -e
  2. 다음 줄을 제거합니다: */5 * * * * /home/ec2-user/vpn-metrics.sh (EC2 인스턴스가 Ubuntu를 실행 중인 경우 ec2-user를 ubuntu로 교체)

CloudWatch 대시보드, 로그 그룹 및 IAM 역할의 프로비저닝을 해제하려면 배포된 CloudFormation 스택을 삭제합니다.

 

 

결론

 

이번 포스팅에서는 EC2 인스턴스에서 CloudWatch 대시보드 및 사용자 지정 네임스페이스로 사용자 지정 CloudWatch 지표를 게시하는 방법을 알아보았습니다. 이러한 지표를 게시하면 관리자가 EC2 기반 VPN에 대한 주요 성능 지표를 보고 원하는 경우 CloudWatch 경보를 생성할 수 있습니다.

 

오늘 포스팅에서 다루지 않은 다른 EC2 지표를 게시하려면 CloudWatch 에이전트를 살펴보고 게스트 내 시스템 수준 지표를 게시하십시오.

원문URL: https://aws.amazon.com/ko/blogs/mt/visualize-amazon-ec2-based-vpn-metrics-with-amazon-cloudwatch-logs/

메가존클라우드 TechBlog는 AWS BLOG 영문 게재 글이나 관련 기사 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.