2021. 7. 22. 09:26ㆍDevOps/AWS
UseCase
- CloudWatch Alarm을 사용하여 EC2 인스턴스를 자동 복구하려면 어떻게 해야 하는가?
- CloudWatch Events를 사용하여 데이터베이스 rollover등의 Cron job을 정기적으로 수행하기 위해서는 어떻게 해야 하는가?
CloudWatch Alarm
CloudWatch Alarm은 AWS 리소스에 대한 실시간 모니터링을 제공하고, Alarm 하나당 CloudWatch Metric하나를 모니터링하다가 사용자가 설정한 임계치를 돌파했을 경우 "In Alarm" 상태로 바뀌어 이후 동작을 수행하게 됩니다. SNS Topic을 사용해서 Slack, Email등을 통해 알림을 주기도 하고 기본적으로 제공하는 Action을 통해 인스턴스를 복구하거나, 재시작하는 등의 동작을 수행할 수 있습니다.
AWS에서는 "인스턴스의 상태 확인 실패" 가 아닌 "시스템 상태 확인 실패" 의 경우에 대해서 Recover Action을 제공합니다. 아래와 같이 CloudWatch Metric을 StatusCheckFailed_System으로 설정하고, 이에 대한 Action을 Recover로 설정하게 되면 시스템이 손상되거나 인스턴스가 시스템의 상태 확인에 실패했을 경우 자동으로 인스턴스를 복구할 수 있습니다.
시스템이 손상되거나, 상태가 확인이 되지 않는 경우는 다음의 경우를 의미합니다 (공식문서 인용)
- Loss of network connectivity
- Loss of system power
- Software issues on the physical host
- Hardware issues on the physical host that impact network reachability
The recover action can be used only with StatusCheckFailed_System, not with StatusCheckFailed_Instance.
Recover Action을 지원하는 인스턴스의 종류 및 환경은 다음으로 제한됩니다
- The A1, C3, C4, C5, C5a, C5n, C6g, Inf1, M3, M4, M5, M5a, M5n, M5zn, M6g, P3, P4, R3, R4, R5, R5a, R5b, R5n, T2, T3, T3a, T4g, X1, and X1e instance types
- Instances in a VPC
- Instances with default or dedicated instance tenancy
- Instances that use Amazon EBS volumes only (do not configure instance store volumes)
위와 같이 Alarm을 설정할 경우, StatusCheckFailed_System 이벤트가 트리거될 경우, 해당 인스턴스를 자동으로 복구시킬 수 있습니다.
CloudWatch Events
특정 Metric 하나에 대한 모니터링을 수행하고 알람 기능을 수행하는 것과 다르게 CloudWatch Events는 조금 더 폭넓은 기능을 제공합니다. 주목할 만한 기능은 Custom Rule을 생성하여 Cron, Rate등 주기적으로 이벤트를 발생시켜 LambdaFunction 등을 트리거할 수 있다는 점입니다. 특정 리소스의 상태를 모니터링하고 임계치를 넘겼을때만 생성되는 Alarm과는 다르게, 주기적인 Cronjob을 수행할 수 있도록 한다는 것입니다. CloudWatch > Events > Rules > CreateRule을 통해 Event Source를 Schedule로 설정하고 Event의 Target을 Lambda Function 혹은 SNS Topic등 원하는 Target으로 설정하면, 주기적으로 트리거되어야 하는 작업들을 수행할 수 있습니다.
References
https://aws.amazon.com/ko/premiumsupport/knowledge-center/automatic-recovery-ec2-cloudwatch/
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/UsingAlarmActions.html
'DevOps > AWS' 카테고리의 다른 글
[ELB] Connection Draining (0) | 2021.07.28 |
---|---|
[SQS] Long Polling & Short Polling (0) | 2021.07.27 |
[Global Accelerator] Introduction & Usecases (1) | 2021.07.25 |
[Lambda@Edge] Signed Cookie를 사용한 인증 구현 (0) | 2021.04.08 |