끄적이는 보송

[AWS] 모든 RDS의 FreeStorageSpace를 불러오는 쉘 스크립트 작성해보기 본문

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에 부족한 것은 없는지 등을 확인해보자.

 

참고 자료

반응형
Comments