전체 구성된 EC2 Instance에 CPU 70% 이상 알람 생성(사전 CloudWatch Role 필요)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #!/bin/bash #CREATE SNS TOPIC ##name에 사용할 SNS 이름 등록 $(aws sns create-topic --name xxxx-topic) #CREATE SUBSCRIBE ##topic-arn에 생성한 accountID:topic이름설정 / e-mail 등록 다수 등록 시 아래 명령어 추가 $(aws sns subscribe --topic-arn arn:aws:sns:ap-northeast-2:5576xxxx:xxxx-topic --protocol email --notification-endpoint mom@my.com) #GET EC2 LIST ##tag:Name, Valuese 태그 이름 등록 ec2List=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=wisen-autoscaling"\ |jq '.Reservations[].Instances[0] | select(.State.Name == "running")' \ |jq '.InstanceId') #CREATE ALARM ##alarm-describption 알람명 등록 ##period 기간 ##threshold 임계치 ##comparison-operator 임계치 조건 ##alarm-actions SNS TOPIC ARN 등록 ##아래 예시의 경우 CPU 0 이상 일 경우 알람 발생 for ec2Id in ${ec2List[*]} do aws cloudwatch put-metric-alarm\ --alarm-name "wisen-autoscaling_${ec2Id:1:19}"\ --alarm-description "Alarm when CPU exceeds 70 percent"\ --metric-name CPUUtilization\ --namespace AWS/EC2\ --statistic Average\ --period 300\ --threshold 70\ --comparison-operator GreaterThanThreshold\ --dimensions "Name=InstanceId,Value=${ec2Id:1:19}"\ --evaluation-periods 1\ --alarm-actions arn:aws:sns:ap-northeast-2:557652101750:hxxxn-topic\ --unit Percent echo ${ec2Id:1:19} done | cs |
개별 EC2 Instance 런칭 시 User-Data(사전 Role 및 리전 등록 필요)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #!/bin/bash #CREATE SNS TOPIC ##name에 사용할 SNS 이름 등록 #$(aws sns create-topic --name xxxx-topic) #CREATE SUBSCRIBE ##topic-arn에 생성한 accountID:topic이름설정 / e-mail 등록 다수 등록 시 아래 명령어 추가 #$(aws sns subscribe --topic-arn arn:aws:sns:ap-northeast-2:557652101750:xxxx-topic --protocol email --notification-endpoint lluckyy@gscdn.com) #GET EC2 LIST ec2Id=$(curl http://169.254.169.254/latest/meta-data/instance-id) #CREATE ALARM ##alarm-describption 알람명 등록 ##period 기간 ##threshold 임계치 ##comparison-operator 임계치 조건 ##alarm-actions SNS TOPIC ARN 등록 ##아래 예시의 경우 CPU 0 이상 일 경우 알람 발생 aws cloudwatch put-metric-alarm\ --alarm-name "wisen-autoscaling_${ec2Id}"\ --alarm-description "Alarm when CPU exceeds 70 percent"\ --metric-name CPUUtilization\ --namespace AWS/EC2\ --statistic Average\ --period 300\ --threshold 70\ --comparison-operator GreaterThanThreshold\ --dimensions "Name=InstanceId,Value=$ec2Id"\ --evaluation-periods 1\ --alarm-actions arn:aws:sns:ap-northeast-2:557652101750:xxxx-topic\ --unit Percent echo ${ec2Id:1:19} | cs |
CloudWatch 알람은 SNS와 연동이 되며, SNS은 Lambda와 연동이 되고, Lambda는 Slack과 Integration 된 템플릿 샘플 코드를 제공(https://aws.amazon.com/ko/blogs/korea/slack-devops-with-aws-lambda-and-eb/)
현재 업데이트 된 것은 KMS를 이용하여 디코딩 된 URL을 소스코드에 입력하는 것이 아니라, 환경 변수를 웹에서 입력하여 사용 가능. 샘플 코드 수정이 전혀 없이 CloudWatch 알람을 Slack과 연동할 수 있음.
약 20분 정도 투자하면 현재 구성된 EC2 Instance 모두에 대한 알람을 Slack을 통해 확인할 수 있음.
생성된 EC2 내의 User Data 수정을 위해서는 EC2 Hook 을 사용해야 한다.
#!/bin/bash
#cloud-boothook
#!/bin/bash
'Management > CloudWatch' 카테고리의 다른 글
AWS CloudWatch Custom Metric 생성 (0) | 2016.10.27 |
---|---|
AWS CloudWatch Data Point API(PHP, Javascript) (0) | 2016.07.28 |
AWS CloudWatch (0) | 2016.01.08 |