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

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
以上です。
誰かの参考になれば幸いです。
- タグ:
- AWS CLI