AWSCLIを使ってメトリクスをJSONで保存する【AWS】

AWS CLIアイキャッチ画像

CloudWatch上にある1分間隔のメトリクスデータはデフォルトでは15日間で消えてしまうので、JSONファイルに出力する方法を紹介します。

ちなみに、今回はWC2(Windows server)にIAMロールをアタッチし、コマンドプロンプト上から実行します。

・AWS CLIを使ってCloudWatch上のメトリクスデータを保存したい

権限の付与

今回はAWS CLIを使ってALBのリクエスト数を取得するため、
実行する主体(IAMロールまたはIAMユーザ)には下記の権限を付与してく必要があります。

CloudWatchReadOnlyAccess

ElasticLoadBalancingReadOnly

下記コマンドより取得したいロードバランサー名と名前空間、metrics名が存在するか確認します。
今回はALBのリクエスト数があるか確認します。

aws cloudwatch list-metrics ^
  --namespace AWS/ApplicationELB ^
  --region ap-northeast-1

先ほど取得した情報参考に下記コマンドを打ちます。

aws cloudwatch get-metric-statistics ^
  --namespace AWS/ApplicationELB ^
  --metric-name RequestCount ^
  --dimensions Name=LoadBalancer,Value=app/test-ALB/3e42f8b952d8a5c7 ^
  --start-time 2024-12-03T00:00:00Z ^
  --end-time 2024-12-03T09:00:00Z ^
  --period 60 ^
  --statistics Sum ^
  --region ap-northeast-1 ^
  > alb_request_count.json

無事取得できました。

実行結果

取得したJSONファイル(一部抜粋)

このままではタイムスタンプがぐちゃぐちゃなので、下記コマンドでソートできます。

# ソート処理を実行
$datapoints = (Get-Content alb_request_count.json | ConvertFrom-Json).Datapoints
$sorted = $datapoints | Sort-Object Timestamp
$sorted | ConvertTo-Json -Depth 10

以上です。
誰かの参考になれば幸いです。