ハンズオン(学習用) はじめてのCloudWatch

2.2. CloudWatchメトリクスの統計の取得 (SQS キュー: ApproximateNumberOfMessagesVisible)

手順の目的

SQSキュー"handson-cli-cloudwatch-1st-queue"のCloudWatchメトリクス"ApproximateNumberOfMessagesVisible"の統計を取得します。

設定値の指定

設定値の指定

手順に必要な設定値を変数に格納をします。

0. リージョン

リージョンを指定します。

環境変数の設定:

export AWS_DEFAULT_REGION='ap-northeast-1'

1. CloudWatchメトリクス統計期間の終了時刻

CloudWatchメトリクスの統計期間の終了時刻を指定します。

変数の設定:

time_current_iso860_utc=$( \
  date -u '+%FT%TZ' \
) \
  && echo ${time_current_iso860_utc}

結果(例):

YYYY-mm-ddTHH:MM:SSZ

変数の設定:

CLOUDWATCH_METRIC_TIME_END="${time_current_iso860_utc}" \
  && echo ${CLOUDWATCH_METRIC_TIME_END}

結果(例):

YYYY-mm-ddTHH:MM:SSZ

2. CloudWatchメトリクス統計期間の開始時刻

CloudWatchメトリクスの統計期間の開始時刻を指定します。

変数の設定:

TIME_OFFSET_PAST_MIN='30'

変数の設定:

time_past_iso860_utc=$( \
  date -u -d "${TIME_OFFSET_PAST_MIN} mins ago" '+%FT%TZ' \
) \
  && echo ${time_past_iso860_utc}

結果(例):

YYYY-mm-ddTHH:MM:SSZ

変数の設定:

CLOUDWATCH_METRIC_TIME_START="${time_past_iso860_utc}" \
  && echo ${CLOUDWATCH_METRIC_TIME_START}

結果(例):

YYYY-mm-ddTHH:MM:SSZ

3. CloudWatchメトリクスの統計周期

CloudWatchメトリクスの統計周期を指定します。

統計周期を指定します。

変数の設定:

CLOUDWATCH_METRIC_PERIOD="60"

4. CloudWatch名前空間

CloudWatch名前空間を指定します。

変数の設定:

CLOUDWATCH_NAMESPACE="AWS/SQS"

5. CloudWatchメトリクス名

CloudWatchメトリクス名を指定します。

変数の設定:

CLOUDWATCH_METRIC_NAME="ApproximateNumberOfMessagesVisible"

6. CloudWatchディメンション

CloudWatchディメンション名を指定します。

変数の設定:

CLOUDWATCH_DIMENSION_NAME="QueueName"

SQSキュー名を指定します。

変数の設定:

SQS_QUEUE_NAME="handson-cli-cloudwatch-1st-queue"

ディメンション文字列を生成します。

変数の設定:

STRING_CLOUDWATCH_DIMENSIONS="Name=${CLOUDWATCH_DIMENSION_NAME},Value=${SQS_QUEUE_NAME}" \
  && echo ${STRING_CLOUDWATCH_DIMENSIONS}

結果(例):

Name=QueueName,Value=handson-cli-cloudwatch-1st-queue

7. CloudWatchメトリクスの統計種別

CloudWatchメトリクスの統計種別を指定します。

変数の設定:

CLOUDWATCH_METRIC_STATISTICS="Sum"

設定値の確認

各変数に正しい設定値が格納されていることを確認します。

変数の確認:

cat << END

  # 0.  AWS_DEFAULT_REGION:"ap-northeast-1"
        AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"

  # 1.  CLOUDWATCH_METRIC_TIME_END:"YYYY-mm-ddTHH:MM:SSZ"
        CLOUDWATCH_METRIC_TIME_END="${CLOUDWATCH_METRIC_TIME_END}"
  # 2.  CLOUDWATCH_METRIC_TIME_START:"YYYY-mm-ddTHH:MM:SSZ"
        CLOUDWATCH_METRIC_TIME_START="${CLOUDWATCH_METRIC_TIME_START}"
  # 3.  CLOUDWATCH_METRIC_PERIOD:"60"
        CLOUDWATCH_METRIC_PERIOD="${CLOUDWATCH_METRIC_PERIOD}"
  # 4.  CLOUDWATCH_NAMESPACE:"AWS/SQS"
        CLOUDWATCH_NAMESPACE="${CLOUDWATCH_NAMESPACE}"
  # 5.  CLOUDWATCH_METRIC_NAME:"ApproximateNumberOfMessagesVisible"
        CLOUDWATCH_METRIC_NAME="${CLOUDWATCH_METRIC_NAME}"
  # 6.  STRING_CLOUDWATCH_DIMENSIONS:"Name=QueueName,Value=handson-cli-cloudwatch-1st-queue"
        STRING_CLOUDWATCH_DIMENSIONS="${STRING_CLOUDWATCH_DIMENSIONS}"
  # 7.  CLOUDWATCH_METRIC_STATISTICS:"Sum"
        CLOUDWATCH_METRIC_STATISTICS="${CLOUDWATCH_METRIC_STATISTICS}"

END

下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

CloudWatchメトリクスの統計の取得

CloudWatchメトリクスを取得します。

変数の確認:

cat << END

  # CLOUDWATCH_METRIC_TIME_START:"YYYY-mm-ddTHH:MM:SSZ"
    CLOUDWATCH_METRIC_TIME_START="${CLOUDWATCH_METRIC_TIME_START}"
  # CLOUDWATCH_METRIC_TIME_END:"YYYY-mm-ddTHH:MM:SSZ"
    CLOUDWATCH_METRIC_TIME_END="${CLOUDWATCH_METRIC_TIME_END}"
  # CLOUDWATCH_METRIC_PERIOD:"60"
    CLOUDWATCH_METRIC_PERIOD="${CLOUDWATCH_METRIC_PERIOD}"
  # CLOUDWATCH_NAMESPACE:"AWS/SQS"
    CLOUDWATCH_NAMESPACE="${CLOUDWATCH_NAMESPACE}"
  # CLOUDWATCH_METRIC_NAME:"ApproximateNumberOfMessagesVisible"
    CLOUDWATCH_METRIC_NAME="${CLOUDWATCH_METRIC_NAME}"
  # STRING_CLOUDWATCH_DIMENSIONS:"Name=QueueName,Value=handson-cli-cloudwatch-1st-queue"
    STRING_CLOUDWATCH_DIMENSIONS="${STRING_CLOUDWATCH_DIMENSIONS}"
  # CLOUDWATCH_METRIC_STATISTICS:"Sum"
    CLOUDWATCH_METRIC_STATISTICS="${CLOUDWATCH_METRIC_STATISTICS}"

END

コマンド:

aws cloudwatch get-metric-statistics \
  --start-time ${CLOUDWATCH_METRIC_TIME_START} \
  --end-time ${CLOUDWATCH_METRIC_TIME_END} \
  --period ${CLOUDWATCH_METRIC_PERIOD} \
  --namespace ${CLOUDWATCH_NAMESPACE} \
  --metric-name ${CLOUDWATCH_METRIC_NAME} \
  --dimensions ${STRING_CLOUDWATCH_DIMENSIONS} \
  --statistics ${CLOUDWATCH_METRIC_STATISTICS} \
  --query 'Datapoints' \
  --output text \
| sort -k2

結果(例):

0.0     2023-03-27T05:45:00Z    Count
1.0     2023-03-27T05:46:00Z    Count

注釈

実行するタイミングによって、表示される行数や値は異なります。

完了確認

本手順の主処理は、以下の完了条件を満たしたときに成功したものとします。

完了条件1: SQSキューのCloudWatchメトリクス"ApproximateNumberOfMessagesVisible"を確認できている。

「SQSキューのCloudWatchメトリクス"ApproximateNumberOfMessagesVisible"を確認できている。」ことを確認します。

注釈

「主処理」が正常に完了していればOKです。

手順の完了