안녕하세요 오늘은 BESPIN GLOBAL SRE실 지봉근님이 작성해주신 ‘[WhaTap] RDS Failover / Reboot 관제 1 – Describe RDS’ 에 대해 소개해드리도록 하겠습니다.
목차
- 개요
- 세부 내용
- 마치며
1. 개요
- 목적: 본 문서는 WhaTap Failover / Reboot 관제를 위해 작성되었습니다.
2. 세부 내용
- 적용 배경
- WhaTap에서는 RDS Failover / Reboot을 감지할 수 있는 지표(Metric)이 별도로 존재하지 않습니다.
- Failover / Reboot은 정확히는 지표(Metric)가 아닌 이벤트(Event)로 분류됩니다.
- Failover / Reboot을 감지할 수 있도록 자동화 Script를 작성했으며, 대상 자동화를 통해 신규 RDS의 생성 혹은 삭제 등이 발생할 경우에도 자동으로 관제 가능하도록 구성했습니다.
- WhaTap에서는 RDS Failover / Reboot을 감지할 수 있는 지표(Metric)이 별도로 존재하지 않습니다.
- 주의 사항
- IAM Role / Access Key를 혼용해서 사용하는 경우에는 ‘권한’ 충돌이 발생하지 않도록 ‘Profile’ 등을 통해 구분해야 합니다. (RDS Describe 권한이 필요)
- 해당 Script들은 AWS CLI를 통해 Query하는 부분이 있어 리소스를 과점유할 수 있으니, Crontab에는 ‘5분’ 정도의 여유 시간을 할애하는 것을 권장합니다.
- 해당 Script는 선행 작업되어야 Failover / Reboot 대상을 관제할 수 있습니다.
- 코드 내용
- describe_RDS.sh:
- LOCATE_PATH: 해당 Script가 위치할 Path를 변수로 할당합니다. (마지막에 ‘/’ 포함 필수)
- OUTPUT: ‘json’ 형식으로 AWS CLI 결과를 출력합니다. (변경 X)
- REGION: AWS CLI로 검색할 리전 코드를 변수로 할당합니다.
- ‘Run Command’ 이하 내용은 수정할 필요가 없습니다
- ‘Profile’을 이용하여 모니터링 할 경우에는 17, 18번 줄의 AWS CLI 명령어 중간에 ‘–profile=[Profile User]’ 가 추가 되어야 합니다.
- 해당 Script를 실행하여 생성되는 ‘RDS_Instance_List’ / ‘RDS_Cluster_List’는 Script가 수행될 때마다 ‘덮어쓰기’되어 갱신하는 구조입니다.
- describe_RDS.sh:
#!/bin/bash
# Amazon Linux 1 / Amazon Linux 2 / CentOS / Redhat
# List creation script for detecting RDS Reboot / Failover
# Enter the path where 'Script' will be located/operated.
LOCATE_PATH=""
# AWS CLI Output Type
OUTPUT="json"
# AWS CLI Target Region
REGION="ap-northeast-2"
##### Run Command #####
echo `aws rds describe-db-instances --output ${OUTPUT} --region ${REGION} | grep '"DBIn
echo `aws rds describe-db-clusters --output ${OUTPUT} --region ${REGION} | grep "DBClus
echo `cat ${LOCATE_PATH}describe_RDS_Instances | awk '{ gsub(" ","\n",$0); print }' > $
echo `cat ${LOCATE_PATH}describe_RDS_Clusters | awk '{ gsub(" ","\n",$0); print }' > ${
echo `rm -rf ${LOCATE_PATH}describe_RDS_Instances`
echo `rm -rf ${LOCATE_PATH}describe_RDS_Clusters
- Script 실행(Test)
- Script가 위치한 디렉토리로 이동하여 해당 Script를 실행합니다.
- 다음 2가지 내용으로 Script 정상 동작 여부를 확인합니다.
- 동일한 디렉토리에 ‘RDS_Instance_List’ / ‘RDS_Cluster_List’ 파일 생성 여부
- 각 List 파일 확인 시, RDS Console에서 확인 가능한 리소스 일치 여부
- Script 등록
- Crontab에 해당 Script를 실행할 User로 매일 1회 실행될 수 있도록 등록합니다.
3. 마치며
- 타 모니터링 솔루션과 다르게 WhaTap에서는 RDS Failover / Reboot을 Integration으로 관제할 수 있는 방안이 없어 해당 Script를 구현하여 고객사에 적용했습니다.
- 해당 Script는 Failover / Reboot Script와 하나의 세트입니다.
- 대상 자동화를 위한 세트 구성이기에 각 Script별로 올바른 설정이 필요합니다.
여기까지 ‘[WhaTap] RDS Failover / Reboot 관제 1 – Describe RDS’에 대해 소개해드렸습니다. 유익한 정보가 되셨길 바랍니다. 감사합니다.
Written by 지 봉근 / SRE실
BESPIN GLOBAL