BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT
최신 리포트 다운로드 지금 바로 문의하기
BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT
최신 리포트 다운로드 지금 바로 문의하기
BESPIN Tech Blog
BESPIN Tech Blog
  • Tech
    • CSP
      • AWS
      • GCP
      • NCP
    • Cloud
      • Migration
      • LZ, Control Tower
      • Backup
      • Monitoring
      • Container
    • Infra
      • OS
      • Middleware
    • Data
      • RDB
      • Big Data Platform
    • Application
      • CI/CD
  • Trend
  • IT
  • Contact US
Monitoring

[WhaTap] RDS Failover/Reboot 관제 2 – RDS Failover

by 민우 서 2025년 05월 30일
2025년 05월 30일
43

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

목차

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

1. 개요

  • 목적: 본 문서는 WhaTap Failover / Reboot 관제를 위해 2

2. 세부 내용:

2-1. 적용 배경:

  • WhaTap에서는 RDS Failover / Reboot을 감지할 수 있는 지표(Metric)이 별도로 존재하지 않습니다.
    • Failover / Reboot은 정확히는 지표(Metric)가 아닌 이벤트(Event)로 분류됩니다.
  • Failover / Reboot을 감지할 수 있도록 자동화 Script를 작성했으며, 대상 자동화를 통해 신규 RDS의 생성 혹은 삭제 등이 발생할 경우에도 자동으로 관제 가능하도록 구성했습니다.

2-2. 주의 사항:

  • IAM Role / Access Key를 혼용해서 사용하는 경우에는 ‘권한’ 충돌이 발생하지 않도록 ‘Profile’ 등을 통해 구분해야 합니다. (RDS Describe 권한이 필요)
  • 해당 Script들은 AWS CLI를 통해 Query하는 부분이 있어 리소스를 과점유할 수 있으니, Crontab에는 ‘5분’ 정도의 여유 시간을 할애하는 것을 권장합니다.
  • 해당 Script는 ‘describe RDS’ Script가 선 실행되어 List 파일이 존재해야 합니다.
  • Script의 결과값을 WhaTap에 ‘json’ 형식으로 보낼 ‘focus’라는 WhaTap에서 제공하는 툴 다운로드가 필요합니다
    • 별도의 설치 과정은 없습니다.
    • WhaTap Focus: https://docs.whatap.io/focus/introduction

2-3. 코드 내용:

  • RDS_Failover_v2.0.sh:
#!/bin/bash
# Amazon Linux 1 / Amazon Linux 2 / CentOS / Redhat
# Aurora RDS(Cluster) / RDS(Instance) - Failover Monitoring
# License Key of the project to be installed
# Type: String
WHATAP_LICENSE=''
# Project Code of the project to be installed
# Type: Integer
WHATAP_PCODE=
# If it is a 'Proxy' configuration, the proxy server IP.
# If it is a WhaTap collection server, the collection server IP listed in the WhaTap pr
# Type: String
WHATAP_HOST=''
# Collect/save results with the 'Category' name specified below.
# Type: String
CATEGORY=''
# Enter the 'Full Path' where 'Focus' file is located.
# Type: String
FOCUS_PATH=''
# Enter the path where 'Script' will be located/operated.
LOCATE_PATH=""
# AWS CLI Output Type
OUTPUT="text"
# AWS CLI Target Region
REGION="ap-northeast-2"
EVENT="failover"
# for Aurora RDS
CLUSTER_KEYWORD="Completed"
# for RDS(Instance)
INSTANCE_KEYWORD="completed"
# === Do not change the variables below. ===
K_DATE='"Date"'
K_TIME='"Time"'
K_TZ='"Time Zone"'
K_TARGET1='"DB Cluster"'
K_TARGET2='"DB Identifier"'
K_FAILOVER='"Failover"'
V_DATE='"-"'
V_TIME='"-"'
V_TZ='"UTC"'
V_TARGET1='"-"'
V_TARGET2='"-"'
V_FAILOVER=0
# === Do not change the variables over. ===
##### Run Command #####
echo `aws rds describe-events --output ${OUTPUT} --region ${REGION} --duration 5 --even
echo `aws rds describe-events --output ${OUTPUT} --region ${REGION} --duration 5 --even
sleep 5;
SIZE_CHECK1=`ls -la ${LOCATE_PATH} | grep Cluster_Failover_Event | awk '{ print $5 }'`
if [ "${SIZE_CHECK1}" != 0 ]; then
 for LINES in $(cat ${LOCATE_PATH}RDS_Cluster_List);
 do
 EVENT_READ1=`cat ${LOCATE_PATH}Cluster_Failover_Event | grep ${LINES}`
 if [ -n "${EVENT_READ1}" ]
then
 V_DATE=`cat ${LOCATE_PATH}Cluster_Failover_Event | grep ${LINES
 V_DATE='"'${V_DATE}'"'
 V_TIME=`cat ${LOCATE_PATH}Cluster_Failover_Event | grep ${LINES
 V_TIME='"'${V_TIME}'"'
 V_TARGET1=${LINES}
 V_TARGET1='"'${V_TARGET1}'"'
 #V_TARGET2=${LINES}
 V_FAILOVER=1
 echo "{"${K_DATE}":"${V_DATE}","${K_TIME}":"${V_TIME}","${K_TZ}
 fi
done
else echo "{"${K_DATE}":"${V_DATE}","${K_TIME}":"${V_TIME}","${K_TZ}":"
fi
SIZE_CHECK2=`ls -la ${LOCATE_PATH} | grep Instance_Failover_Event | awk '{ print $5 }'`
if [ "${SIZE_CHECK2}" != 0 ]; then
 for LINES in $(cat ${LOCATE_PATH}RDS_Instance_List);
 do
 EVENT_READ2=`cat ${LOCATE_PATH}Instance_Failover_Event | grep ${LINES}`
 if [ -n "${EVENT_READ2}" ]
 then
 V_DATE=`cat ${LOCATE_PATH}Instance_Failover_Event | grep ${LINE
 V_DATE='"'${V_DATE}'"'
 V_TIME=`cat ${LOCATE_PATH}Instance_Failover_Event | grep ${LINE
 V_TIME='"'${V_TIME}'"'
 V_TARGET1='"-"'
 V_TARGET2=${LINES}
 V_TARGET2='"'${V_TARGET2}'"'
 V_FAILOVER=1
 echo "{"${K_DATE}":"${V_DATE}","${K_TIME}":"${V_TIME}","${K_TZ}
 fi
 done
else echo "{"${K_DATE}":"${V_DATE}","${K_TIME}":"${V_TIME}","${K_TZ}":"${V_TZ}","${K_TA
fi
  • WHATAP_LICENSE:
    • WhaTap을 설치할 고객사 프로젝트의 ‘에이전트 설치’ 항목으로 이동하면 License Key 값을 확인할 수 있습니다
    • 해당 License Key 값을 변수로 할당합니다.
    • String 타입으로 ‘ ‘로 감싸야 합니다.

String 타입으로 ‘ ‘로 감싸야 합니다.

  • WHATAP_PCODE:
    • WhaTap을 설치할 고객사의 프로젝트 코드(Project CODE)입니다.
    • 설치할 고객사 프로젝트 선택 시, ‘주소표시줄’에서 확인 가능합니다.

설치할 고객사 프로젝트 선택 시, ‘주소표시줄’에서 확인 가능합니다.

  • 혹은 [ 관리 ] – [ 프로젝트 관리 ] 항목으로 이동해도 확인 가능합니다.

혹은 [ 관리 ] - [ 프로젝트 관리 ] 항목으로 이동해도 확인 가능합니다.

  • 해당 pcode 값을 변수로 할당합니다.
  • Integer 타입으로 숫자만 기입합니다.
  • WHATAP_HOST:
    • 각 WhaTap Infra Agent 지표(Metric)을 수집할 WhaTap 서버의 공인 IP 입니다.

각 WhaTap Infra Agent 지표(Metric)을 수집할 WhaTap 서버의 공인 IP 입니다

  • 해당 공인 IP 주소값을 변수로 할당합니다.
  • String 타입으로 ‘ ‘로 감싸야 합니다.
  • CATEGORY
    • ‘메트릭스 조회’, ‘알람 설정’을 진행하기에 지표(Metric)가 수집/분류되는 네임 스페이스입니다. (입력하는 이름으로 Custom하게 저장 가능)
    • String 타입으로 ‘ ‘로 감싸야 합니다

‘메트릭스 조회’, ‘알람 설정’을 진행하기에 지표(Metric)가 수집/분류되는 네임 스페이스 입니다. (입력하는 이름으로 Custom하게 저장 가능)

  • FOCUS_PATH
    • Script 결과값(Customized)을 ‘focus’를 통해 전송이 필요합니다.
    • 주석과 같이 ‘focus’를 포함한 ‘Full Path’ 정보를 기입합니다.
      • 해당 Script와 ‘focus’는 동일한 디렉토리에 있는 것을 권장합니다
  • LOCATE_PATH: 해당 Script가 위치할 Path를 변수로 할당합니다. (마지막에 ‘/’ 포함 필수)
  • OUTPUT: ‘text’ 형식으로 AWS CLI 결과를 출력합니다. (변경 X)
  • REGION: AWS CLI로 검색할 리전 코드를 변수로 할당합니다.
  • 36 ~ 59번 줄까지의 내용은 수정할 필요가 없습니다.
  • ‘Run Command’ 이하 내용은 수정할 필요가 없습니다.
    • ‘Profile’을 이용하여 모니터링 할 경우에는 62, 63번 줄의 AWS CLI 명령어 중간에 ‘–profile=[Profile User]’ 가 추가되어야 합니다

2-4. Script 실행(Test):

  • Script가 위치한 디렉토리로 이동하여 해당 Script를 실행합니다.
  • 다음 2가지 내용으로 Script 정상 동작 여부를 확인합니다.
    • Script 수행 시, Terminal에 별도 Error 메세지 없이 WhaTap Logo와 Session Closed 확인 여부
      • Error 발생 시에는 Script 혹은 AWS CLI 수행을 위한 권한 확인 필요
    • WhaTap Browser에서 [ 메트릭스 조회 ]를 통해 Script에 지정한 ‘CATEGORY’ 항목이 ‘카테고리’에서 보이는지 확인

2-5. Script 등록:

  • Crontab에 해당 Script를 실행할 User로 ‘5분’ 간격으로 실행될 수 있도록 등록합니다.

3. 마치며

  • 동작 관련:
    • 정상적으로 Script가 동작하여 지표가 수집된다면, ‘Failover’ 컬럼에 ‘0’으로만 집계되고 나머지 컬럼은 ‘-’ 지표만 수집합니다.
    • 실제 Failover Event 발생 시, ‘Failover’ 컬럼이 ‘1’로 기입되며, 나머지 컬럼에 자동적으로 Event 발생한 대상 리소스 정보가 표시됩니다.
  • 알람 설정을 위해서는 해당 ‘카테고리’를 선택 후, ‘Failover > 0’로만 선택해도 전체 RDS의 Failover 감지가 가능합니다
  • 타 모니터링 솔루션과 다르게 WhaTap에서는 RDS Failover / Reboot을 Integration으로 관제할 수 있는 방안이 없어 해당 Script를 구현하여 고객사에 적용했습니다.
  • 해당 Script는 describe RDS Script와 하나의 세트입니다.
    • 대상 자동화를 위한 세트 구성이기에 각 Script별로 올바른 설정이 필요합니다.

여기까지 ‘[WhaTap] RDS Failover/Reboot 관제 2 – RDS Failover’에 대해 소개해드렸습니다. 유익한 정보가 되셨길 바랍니다. 감사합니다. 

Written by 지 봉근 / SRE실

BESPIN GLOBAL

관련

RDSbespin globalFailoverRebootRDS Failover

HOT Trend

Recent Posts

  • 딜로이트도, 맥킨지도, 베스핀글로벌도: AI 에이전트로 일 바꾸는 시대

    2025년 07월 04일 cloud베스핀글로벌클라우드data데이터AI인공지능HelpNow AIbespinglobalAI에이전트helpnow업무자동화딜로이트
  • ⚔️데이터센터에서 시작된 전쟁? 요즘 뜨는 AIDC 개념부터 트렌드까지!

    2025년 06월 27일 data데이터AI데이터센터클라우드 데이터센터bespinglobalAIDCAI 인프라cloud베스핀글로벌클라우드
  • 구글부터 엔비디아까지, 빅테크 기업들의 AI 전략 최신본📖

    2025년 06월 20일 베스핀글로벌클라우드clouddata데이터AI구글마이크로소프트엔비디아AI에이전트google I/OMicrosoft build 2025NVIDIA GTC 2025
  • AI를 연결한다고? 업계가 주목하는 ‘MCP’ 알아보기🔍

    2025년 06월 13일 베스핀글로벌클라우드AIMCPcloud
  • [WhaTap] RDS Failover/Reboot 관제 2 – RDS Failover

    2025년 05월 30일 RDSbespin globalFailoverRebootRDS Failover

베스핀글로벌은 모든 기업의 AI 혁신을 실현하기 위해, 세상에서 가장 혁신적이고 자동화된 AI 서비스와 솔루션을 만들어갑니다.
상호 : 베스핀글로벌 주식회사 ㅣ 대표자명 : 김써니, 허양호 ㅣ 사업자등록증번호 : 638-87-00223 ㅣ 통신판매번호 : 2019-서울서초-0347 ㅣ 대표전화 : 1668-1280
사업장주소지 : 서울특별시 서초구 강남대로 327, 13,14,15,16층(서초동,대륭서초타워) ㅣ 이메일 : info@bespinglobal.com ㅣ 개인정보 처리방침 ㅣ 개인정보 처리방침 안내

© 2026 BESPIN GLOBAL, All Rights Reserved.

BESPINGLOBAL
패밀리 사이트
China MEA SEA US

BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT