#!/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 타입으로 ‘ ‘로 감싸야 합니다.
WHATAP_PCODE:
WhaTap을 설치할 고객사의 프로젝트 코드(Project CODE)입니다.
설치할 고객사 프로젝트 선택 시, ‘주소표시줄’에서 확인 가능합니다.
혹은 [ 관리 ] – [ 프로젝트 관리 ] 항목으로 이동해도 확인 가능합니다.
해당 pcode 값을 변수로 할당합니다.
Integer 타입으로 숫자만 기입합니다.
WHATAP_HOST:
각 WhaTap Infra Agent 지표(Metric)을 수집할 WhaTap 서버의 공인 IP 입니다.
해당 공인 IP 주소값을 변수로 할당합니다.
String 타입으로 ‘ ‘로 감싸야 합니다.
CATEGORY
‘메트릭스 조회’, ‘알람 설정’을 진행하기에 지표(Metric)가 수집/분류되는 네임 스페이스입니다. (입력하는 이름으로 Custom하게 저장 가능)
String 타입으로 ‘ ‘로 감싸야 합니다
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분’ 간격으로 실행될 수 있도록 등록합니다.