인스턴스를 중지·종료·재부팅·복구하는 알람 만들기
인스턴스를 중지·종료·재부팅·복구하는 알람 만들기 (Create alarms that stop, terminate, reboot, or recover an instance)
Amazon CloudWatch 알람 작업을 사용해 인스턴스를 자동으로 중지, 종료, 재부팅, 복구하는 알람을 만들 수 있어요. 중지·종료 작업은 인스턴스가 더 이상 실행될 필요가 없을 때 비용을 절약하는 데 도움이 돼요. 재부팅·복구 작업은 시스템 손상이 발생할 때 인스턴스를 자동으로 재부팅하거나 새 하드웨어로 복구해요.
출처: 문서
본문
AWSServiceRoleForCloudWatchEvents 서비스 연결 역할을 통해 AWS가 사용자를 대신해 알람 작업을 수행할 수 있어요. AWS Management Console, AWS CLI, 또는 IAM API에서 처음 알람을 만들 때 CloudWatch가 이 서비스 연결 역할을 만들어줘요.
배치 급여 처리 작업이나 과학 컴퓨팅 작업에 전용된 인스턴스처럼 일정 기간 실행 후 작업을 완료하는 인스턴스가 있다면, 유휴 상태로 두고(비용이 발생하는) 대신 중지하거나 종료해 비용을 절약할 수 있어요. 중지와 종료의 주요 차이는 중지된 인스턴스는 나중에 다시 실행할 수 있고 인스턴스 ID와 루트 볼륨을 유지하지만, 종료된 인스턴스는 다시 실행할 수 없고 새 인스턴스를 실행해야 한다는 점이에요. 인스턴스가 중지되거나 종료되면 인스턴스 저장 볼륨의 데이터가 손실돼요.
중지, 종료, 재부팅, 복구 작업은 AWS/EC2 네임스페이스의 기본·상세 모니터링 메트릭과 InstanceId 차원이 유효한 실행 중 EC2 인스턴스를 가리키는 커스텀 메트릭을 포함해 Amazon EC2 인스턴스별 메트릭에 설정된 모든 알람에 추가할 수 있어요.
중요: 상태 검사 알람은 메트릭 데이터 포인트가 누락되면 일시적으로
INSUFFICIENT_DATA상태에 들어갈 수 있어요. 드물지만 인스턴스가 정상일 때도 메트릭 보고 시스템 중단 시 발생할 수 있어요. 특히 알람이 인스턴스를 중지·종료·재부팅·복구하도록 구성할 때 이 상태를 알람 위반이 아닌 누락된 데이터로 취급할 것을 권장해요.
권한 – EC2 알람 작업을 수행하는 알람을 만들거나 수정하려면 iam:CreateServiceLinkedRole 권한이 필요해요.
중지 작업 추가 (Stop actions)
특정 임계값에 도달하면 EC2 인스턴스를 중지하는 알람을 만들 수 있어요. 예를 들어 개발·테스트 인스턴스를 실행하고 가끔 끄는 것을 잊을 때, 평균 CPU 사용률이 24시간 동안 10% 미만이면(유휴 상태 신호) 알람이 트리거되도록 만들 수 있어요. 임계값, 기간, period를 조정하고 Amazon SNS 알림을 추가해 알람 트리거 시 이메일을 받을 수 있어요.
EBS 볼륨을 루트 볼륨으로 사용하는 인스턴스는 중지·종료할 수 있지만, 인스턴스 저장소를 루트 볼륨으로 사용하는 인스턴스는 종료만 가능해요. 인스턴스 저장 볼륨의 데이터는 인스턴스가 종료·중지될 때 손실돼요.
유휴 인스턴스를 중지하는 알람 만들기(콘솔):
- EC2 콘솔을 열고 Instances를 선택해요.
- 인스턴스를 선택하고 Actions, Monitor and troubleshoot, Manage CloudWatch alarms을 선택해요.
- Create an alarm을 선택해요.
- 알람 트리거 시 이메일을 받으려면 Alarm notification에서 기존 Amazon SNS 주제를 선택해요.
- Alarm action을 켜고 Stop을 선택해요.
- Group samples by와 Type of data to sample에서 Average와 CPU utilization을 선택해요.
- Alarm When과 Percent에서 메트릭 임계값을 지정해요. 이 예제에서는
<=와 10%를 지정해요. - Consecutive period와 Period에서 평가 기간을 지정해요. 이 예제에서는 5분의 1 연속 기간을 지정해요.
- 알람 이름은 자동으로 생성되며 변경할 수 있어요(이름은 ASCII 문자만 포함해야 함). 알람 생성 후에는 이름을 편집할 수 없어요.
- Create를 선택해요.
종료 작업 추가 (Terminate actions)
특정 임계값에 도달하면(인스턴스에 종료 방지가 활성화되어 있지 않은 한) EC2 인스턴스를 자동으로 종료하는 알람을 만들 수 있어요. 나중에 인스턴스를 사용할 가능성이 있으면 종료 대신 중지해야 해요.
유휴 인스턴스를 종료하는 알람 만들기: 중지 절차와 같지만 Alarm action에서 Terminate를 선택하고, 이 예제에서는 임계값 => 10%, 1시간의 24 연속 기간을 지정해요.
재부팅 작업 추가 (Reboot actions)
EC2 인스턴스를 모니터링하고 자동으로 재부팅하는 CloudWatch 알람을 만들 수 있어요. 재부팅 알람 작업은 인스턴스 상태 검사(Instance Health Check) 실패에 권장돼요(시스템 상태 검사 실패에는 복구 알람이 적합). 인스턴스 재부팅은 운영 체제 재부팅과 동일하며 대부분 몇 분이면 완료돼요. 재부팅 시 인스턴스는 같은 물리 호스트에 유지되므로 공개 DNS 이름, 사설 IP 주소, 인스턴스 저장 볼륨 데이터를 유지해요.
재부팅은 중지·재시작과 달리 새 인스턴스 요금 기간(최소 1분 요금)을 시작하지 않아요. 인스턴스 저장 볼륨 데이터는 재부팅 시 유지되지만, 재부팅 후 파일시스템에 다시 마운트해야 해요.
중요: 재부팅과 복구 작업 사이의 경쟁 조건을 피하려면 재부팅 알람과 복구 알람에 같은 평가 기간 수를 설정하지 마세요. 재부팅 알람은 각각 1분의 평가 기간 3개로 설정할 것을 권장해요.
인스턴스를 재부팅하는 알람 만들기: 중지 절차와 같지만 Alarm action에서 Reboot를 선택하고, Status check failed: instance 메트릭, 1분의 3 연속 기간을 지정해요.
복구 작업 추가 (Recover actions)
EC2 인스턴스를 모니터링하는 CloudWatch 알람을 만들 수 있어요. 기본 하드웨어 장애나 AWS 개입이 필요한 문제로 인스턴스가 손상되면 인스턴스를 자동으로 복구할 수 있어요. 종료된 인스턴스는 복구할 수 없어요. 복구된 인스턴스는 인스턴스 ID, 사설 IP 주소, Elastic IP 주소, 모든 인스턴스 메타데이터를 포함해 원래 인스턴스와 동일해요.
StatusCheckFailed_System 알람이 트리거되고 복구 작업이 시작되면, 알람 생성 시 선택한 Amazon SNS 주제로 알림을 받아요. 복구 중 인스턴스는 재부팅 중 마이그레이션되고 메모리의 데이터는 손실돼요. 프로세스가 완료되면 SNS 주제에 정보가 게시돼요.
참고: 복구 작업은
StatusCheckFailed_System에서만 사용할 수 있고StatusCheckFailed_Instance에서는 사용할 수 없어요.
시스템 상태 검사 실패를 일으키는 문제: 네트워크 연결 손실, 시스템 전원 손실, 물리 호스트의 소프트웨어 문제, 물리 호스트의 네트워크 연결성에 영향을 주는 하드웨어 문제.
인스턴스에 공개 IP 주소가 있으면 복구 후에도 유지돼요.
중요: 재부팅·복구 알람에 같은 평가 기간 수를 설정하지 마세요. 복구 알람은 각각 1분의 평가 기간 2개로 설정할 것을 권장해요.
인스턴스를 복구하는 알람 만들기: 중지 절차와 같지만 Alarm action에서 Recover를 선택하고, Status check failed: system 메트릭, 1분의 2 연속 기간을 지정해요. SNS 주제에 구독한 사용자만 이메일 알림을 받으며, 자동 인스턴스 복구가 발생하면 SNS 주제를 지정하지 않았거나 루트 사용자가 구독하지 않아도 AWS 계정 루트 사용자는 항상 이메일 알림을 받아요.