본문 바로가기

Mornitoring/CloudWatch

Cloudwatch 경보 설정 - 1. 기본 SNS를 통한 알림

Cloudwatch Alert은 Cloudwatch에서 수집 되고 있는 지표에 대해서만 설정이 가능합니다.

이를 SNS연동 혹은 Lambda와의 연동을 통해서 수집된 지표의 임계값이 설정된 값에 대한 조건을 만족하면,

알림을 받을 수 있도록 설정하는 부분입니다.

 

먼저 SNS부터 생성해보도록 하겠습니다.

SNS는 주제, 구독의 개념으로 이루어져있습니다.

만들어진 주제에 대해서, 구독을 생성하고 이를 통해 구독되어있는 Email 주소들에 대해서 이메일을 전송하게끔 구성해보도록 하겠습니다.

기본값으로 주제를 만들겠습니다.

 

 

만들어진 주제에 대해서 구독을 생성해서 어떤 이벤트가 발생하면 구독되어있는 모두에게 SNS를 통해 알림을 보낼 수 있습니다.

메일 커스터마이징이나 SMS같은 경우는 람다에서 구성을 해야하기 때문에 다음 포스터들에서 할 것이며,

이 글에서는 먼저 이메일을 선택해주시면 됩니다.

 

 

구독을 생성하게 되면 아래와 같이 메일이 오고, Confirm subscription 링크를 클릭하면 구독되게 됩니다.

 

 

 

위와 같이 정상적으로 구독되었다면, 주제에서도 컨펌된 것을 보실 수 있습니다.

 

자 이제, 경보를 만들어 보도록 하겠습니다.

보통 인프라 구성을하고 경보설정을 해줄 때, 아래와 같은 지표들에 대해 알람 혹은 대시보드 구성을 해줍니다.

기본 인프라 구성 시 필요한 요소들 기준으로 아래와 같습니다.

- EC2

  • CPUUtilization
  • mem_used_percent (CWAgent)
  • disk_used_percent (CWAgent)
  • NetworkIn / Out
  • StatusCheckFailed

- ELB

  • HTTPCode_Target_5XX_Count
  • HTTPCode_Target_4XX_Count
  • HTTPCode_Target_3XX_Count
  • TargetResponseTime
  • RequestCount
  • HealthyHostCount

- NAT

  • ActiveConnectionCount
  • ErrorPortAllocation

경보 설정 방법은 모두 같기 때문에, CPU만 구성한 후 테스트해보도록 하겠습니다.

경보 생성 -> 지표를 선택해주시고, CPU Utilization, 그리고 원하는 서버를 골라주세요

 

 

이후 체크하고자 하는 값과 조건을 골라주시면 됩니다.

저는 평균 5분, 70%보다 클 경우에 경보설정이 되도록 설정하겠습니다.

 

 

작업 구성에서 아까 위에서 만들었던 SNS를 선택해주시면 됩니다.

오토스케일링 카테고리의 글에서 설정할 때, 설정할 수 있었던 부분이 여기서 구성한 알람을 가지고 설정할 수 있는 것입니다.

 

 

마지막으로 이름 및 설명을 적고 만들어 주시면 몇 분 시간이 지난 후 정상적으로 체크되고 있는 것을 보실 수 있습니다.

 

 

 

자, 이제 서버에 들어가서 CPU에 부하를 주도록 하겠습니다.

서버에 스트레스를 주어 테스트 하는 명령어는 아래와 같습니다.

sudo yum -y install stress

- CPU 부하 주기
grep -c processor /proc/cpuinfo (전체 코어 개수 확인)
stress -c 2 (코어수)

- Memory, Disk 부하 주기
stress --vm 3 (프로세스 수) --vm-bytes 1024m (사용할 크기)
stress --hdd 3 (hdd 수) -hdd-bytes 1024m (사용할 크기)

 

아래와 같이 수행하겠습니다.

 

그럼 아래와 같이 CPU가 치면서 경보 값이 바뀌고,

 

 

 

아래와 같은 메일을 받을 수 있습니다.

 

다음 게시글에서는 위와 같은 메일이 직관적으로 알아보기 어렵기 때문에 쉽게 알아볼 수 있는 형태로 구성하는 것과,

SMS메세지로 전송하는 법을 알아보도록 하겠습니다.