cloudwithbass

[AWS] Cloud Watch 워크숍 예제 테라폼 코드 공유 본문

AWS

[AWS] Cloud Watch 워크숍 예제 테라폼 코드 공유

여영클 2024. 10. 19. 17:27

다음 웹사이트의 아키텍처를 실습할 테라폼 코드를 공유합니다: https://catalog.workshops.aws/general-immersionday/ko-KR/basic-modules/40-monitoring/monitoring

 

General Immersion Day - Basic

The content contained in the module is considered foundational, 100 level labs covering AWS core services.

catalog.workshops.aws

EC2의 CPU 사용량이 평균 60%가 넘을 경우 CloudWatch가 Amazon SNS에 게시하고, 등록한 이메일로 메일을 보내는 아키텍처입니다.

 

전체 코드는 아래 git에서 확인할 수 있습니다.

https://github.com/Dminus251/workshop_cloudwatch/tree/main

목차


    실습 방법

    • terraform.tfvars 파일을 만들어 아래 내용만 자신의 상황에 맞게 수정하면 재사용할 수 있습니다.
    • sns_topic_subscription-endpoint는 알림 메일을 받을 이메일 주소입니다.
    • 테라폼으로 vpc와 subnet을 추가로 관리하지 않아도 될 것 같아 default vpc와 subnet을 이용했습니다.


    주의사항

    1. ec2 프로비저닝 중  에러가 발생할 경우

    • modules/t-aws-ec2/vars.tf에서 적절한 amazon linux의 ami로 변경해야 합니다.  (또는 서브넷의 az를 아래 az로 변경)
    • ec2의 ami가 ap-northeast-2a와 ap-northeast-2c에서만 사용할 수 있으며, 만료일이 2025년 1월 9일이기 때문입니다.
    • ec2에서 yum 명령어를 사용하기 때문에 amazon linux OS를 사용해야 합니다.

     

    2. 문서 내용과 다르게, ec2의 userdata에 sudo를 붙여야 합니다.

    • su 권한이 없으면 명령을 실행할 수 없습니다.
    • 또한 ec2에 public ip를 할당했더라도 인터넷 게이트웨이가 있어야 yum update 명령을 실행할 수 있습니다.
    • userdata는 30분 간 0.3초마다 하나의 스레드로 부하를 생성하는 명령입니다.


    실습 결과

    CloudWatch에서 정상적으로 메트릭을 수집합니다.

     

    경보가 울리면 main.tf의 module.cloudwatch_metric_alarm의 alarm_actions에서 정의한 행동을 합니다.

    alarm_action에서 sns_topic을 설정했으므로 SNS로 경보가 전송되고, 이에 따라 sns subscription에서 정의한 행동인 이메일 전송을 실행합니다.