DevOps BootCamp/모니터링

Auto Scaling + CloudWatch를 이용한 알림 with terraform

cloudmaster 2023. 6. 1. 14:05

Getting Started

 

 

 

0. terraform 기본 정의문 작성

 

 

1. vpc

 

autoscaling에 사용할 vpc 생성

 

 

2. subnet와 라우팅 테이블 생성

 

1. autoscaling에 사용할 public subnet 생성

 

2. 라우팅 테이블에 연결할 인터넷 게이트웨이 생성

 

3. 라우팅 테이블 생성

 

4. public subnet과 라우팅 테이블 연결

 

 

4. security-group 생성

 

 

 

3. Autoscaling

시작 템플릿 구성

ASG를 위한 시작 템플릿 구성은 다음을 따릅니다.

  • 그룹 정보
    • 원하는 용량: 1
    • 최소 용량: 1
    • 최대 용량: 3
  • 시작 템플릿은 다음 구성을 따릅니다.
    • Ubuntu Server (LTS)
    • t2.nano
    • 기존 혹은 신규 키 페어를 사용합니다
    • 보안 그룹: 인바운드 HTTP 및 SSH 허용
    • 사용자 데이터 
    • #!/bin/bash echo "Hello, World" > index.html sudo apt update sudo apt install stress nohup busybox httpd -f -p 80 &

 

1. 인스턴스를 만들 때 필요한 키페어 생성

 

2. template과 autoscaling group 생성

 

3.  autoscaling group에 지표 수집 활성화

 

3. cloudwatch 로그 그룹 생성

 

4. autoscaling에 대한 조정 정책 생성

단계 조정 정책과 단순 조정 정책의 차이점

1. 단계 조정 정책
 : 단계 조절이 적용되고 Auto Scaling 그룹의 현재 용량을 늘리거나 줄이는 경우 조절은 경보 위반의 크기에 따라 달라집니다.
 : 대부분의 경우에는 단계 조정 정책이 단순 조정 정책보다 더 낫습니다
 : 크기 조정 활동 또는 상태 확인 교체가 진행 중인 동안에도 정책이 추가 경보에 계속 응답할 수 있습니다. 따라서 위반된 모든 경보는 경보 메시지 수신 시 Amazon EC2 Auto Scaling에 의해 평가됩니다.
 : 단계 조정 정책을 생성할 때 경보 위반의 크기에 따라 인스턴스 수를 동적으로 자동 조정되도록 하나 이상의 단계 조정을 지정합니다.

2. 단순 조정 정책
 : 주요 문제는 크기 조정 활동이 시작된 후 정책은 크기 조정 활동 또는 상태 확인 교체가 완료되고 휴지 기간이 끝날 때까지 기다린 후 추가 경보에 응답해야 한다는 것입니다. 
 : 휴지 기간을 지정하여 이전 활동의 효과가 표시되기 전에 에서 추가 크기 조정 활동을 시작하지 않도록 할 수 있습니다.

 

조정 조절 유형

  • ChangeInCapacity - 그룹의 현재 용량을 지정된 값만큼 늘리거나 줄입니다. 양의 값은 용량을 늘리고, 음의 조절 값은 용량을 줄입니다. 예제: 그룹의 현재 용량이 3개의 인스턴스이고 조절이 5개인 경우 이 정책이 수행되면 용량 단위가 총 8개가 되도록 용량에 5개의 용량 단위를 추가합니다.
  • ExactCapacity - 그룹의 현재 용량을 지정된 값으로 변경합니다. 이 조정 유형으로 음수가 아닌 값을 지정하십시오. 예제: 그룹의 현재 용량이 3개의 인스턴스이고 조절이 5개인 경우 이 정책이 수행되면 용량을 5개의 용량 단위로 변경합니다.
  • PercentChangeInCapacity - 그룹의 현재 용량을 지정된 퍼센트만큼 늘리거나 줄입니다. 양의 값은 용량을 늘리고, 음의 값은 용량을 줄입니다. 예제: 현재 용량이 10개이고 조절이 10%인 경우 이 정책이 수행되면 용량 단위가 총 11개가 되도록 용량에 1개의 용량 단위를 추가합니다.

 

1. scaleout 정책 생성

 

2. sacle-in 정책 생성

 

5. cloudwatch 메시지를 보내기 위한 sns와 sns의 메시지를 받아서 처리하기 위한 Lambda 생성

 

1. Lambda의 실행 역할과 정책 생성

 

2. sns 생성

 

3. Lambda에서 sns의 데이터를 처리하기 위해서 sns 정책 생성, Lambda의 실행 역할과 연결

 

4. Lambda 실행에 필요한 코드 작성

 

 > terraform의 실행 경로가 있는 폴더 내에서 작성해야 함

 > 코드의 내용은 cloudwatch 알림이 발생하면 discord webhook로 보내줌

 

5.. Lambda와 Lambda log group 생성

 

6. sns와 lambda 연결

 

 

6. cloudwatch alarm 생성

 

1. scale-out

 

2. scale-in

 

[출처]

 

codestates

 

https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/as-scaling-simple-step.html#SimpleScaling

 

Amazon EC2 Auto Scaling의 단계 조정 및 단순 조정 정책 - Amazon EC2 Auto Scaling

PercentChangeInCapacity - 그룹의 현재 용량을 지정된 퍼센트만큼 늘리거나 줄입니다. 양의 값은 용량을 늘리고, 음의 값은 용량을 줄입니다. 예제: 현재 용량이 10개이고 조절이 10%인 경우 이 정책이

docs.aws.amazon.com

 

https://gist.github.com/gotoweb/0f993bdc19833e76f7860608181bedac

 

SNS 메시지를 Discord 웹훅을 통해 전달하는 람다 함수입니다.

SNS 메시지를 Discord 웹훅을 통해 전달하는 람다 함수입니다. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

'DevOps BootCamp > 모니터링' 카테고리의 다른 글

Prometheus + Grafana  (0) 2023.06.02
쿠버네티스 클러스터 모니터링  (0) 2023.06.02
모니터링의 목표와 측정 항목  (0) 2023.05.31
쿠버네티스 모니터링  (0) 2023.05.31
lambda 모니터링 주요 메트릭  (0) 2023.05.31