[WhaTap] RDS Failover / Reboot 관제 1 – Describe RDS

안녕하세요 오늘은 BESPIN GLOBAL SRE실 지봉근님이 작성해주신 ‘[WhaTap] RDS Failover / Reboot 관제 1 – Describe RDS’ 에 대해 소개해드리도록 하겠습니다.

목차

  1. 개요
  2. 세부 내용
  3. 마치며

1. 개요

  • 목적: 본 문서는 WhaTap Failover / Reboot 관제를 위해 작성되었습니다.

    2. 세부 내용

    • 적용 배경
      • WhaTap에서는 RDS Failover / Reboot을 감지할 수 있는 지표(Metric)이 별도로 존재하지 않습니다.
        • Failover / Reboot은 정확히는 지표(Metric)가 아닌 이벤트(Event)로 분류됩니다.
      • Failover / Reboot을 감지할 수 있도록 자동화 Script를 작성했으며, 대상 자동화를 통해 신규 RDS의 생성 혹은 삭제 등이 발생할 경우에도 자동으로 관제 가능하도록 구성했습니다.
    • 주의 사항
      • 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가 수행될 때마다 ‘덮어쓰기’되어 갱신하는 구조입니다.
    #!/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