STUDY/스크립트&코드
[AWS] 모든 RDS의 FreeStorageSpace를 불러오는 쉘 스크립트 작성해보기
끄적이는 보송
2023. 2. 13. 14:59
반응형
모든 RDS의 FreeStorageSpace를 출력하는 방법을 찾다 쉘스크립트를 작성하게 돼, 여기에 남겨본다. 지금까지 확인해 본 결과 내 예상과는 달리 rds describe로 FreeStorageSpace를 출력할 수 없었다. 그래서 나의 경우, cloudwatch get-metric-statistics를 이용하였다.
모든 RDS의 FreeStorageSpace 불러오기 (byte 단위)
#!/bin/bash
#Get time
STARTTIME="$(date -u -d '5 minutes ago' '+%Y-%m-%dT%T')"
ENDTIME="$(date -u '+%Y-%m-%dT%T')"
# Get a list of all RDS instances
instances=$(aws rds describe-db-instances --query 'DBInstances[*].DBInstanceIdentifier' --output text)
# Loop through each instance and get the free storage space
for instance in $instances
do
free_storage=$(aws cloudwatch get-metric-statistics --namespace AWS/RDS \
--metric-name FreeStorageSpace \
--start-time $STARTTIME \
--end-time $ENDTIME --period 300 \
--statistics Average \
--dimensions="Name=DBInstanceIdentifier, Value=$instance" \
--query "Datapoints"[0].Average \
--output text)
echo "Instance: $instance, Free Storage: $free_storage byte"
done
반응형
모든 RDS의 FreeStorageSpace 불러오기 (GB 단위 및 소수점 3자리 올림)
#!/bin/bash
#Get time
STARTTIME="$(date -u -d '5 minutes ago' '+%Y-%m-%dT%T')"
ENDTIME="$(date -u '+%Y-%m-%dT%T')"
# Get a list of all RDS instances
instances=$(aws rds describe-db-instances --query 'DBInstances[*].DBInstanceIdentifier' --output text)
# Loop through each instance and get the free storage space
for instance in $instances
do
free_storage=$(aws cloudwatch get-metric-statistics --namespace AWS/RDS \
--metric-name FreeStorageSpace \
--start-time $STARTTIME \
--end-time $ENDTIME --period 300 \
--statistics Average \
--dimensions="Name=DBInstanceIdentifier, Value=$instance" \
--query "Datapoints"[0].Average \
--output text)
free_storage_GB=$(echo "scale=3; $free_storage / 1024 / 1024 / 1024" | bc)
echo "Instance: $instance, Free Storage: $free_storage_GB GB"
done
만약 문제가 발생한다면, 쉘 스크립트의 권한 및 사용자에는 문제는 없는지, AWS 자격증명 관련하여 IAM Policy에 부족한 것은 없는지 등을 확인해보자.
참고 자료
반응형