終了した EC2 のメトリクス(モニタリングデータ)が見つからないときの対処方法
困っていた内容
約一ヶ月前に終了した EC2 のメトリクスを確認しようと思ったのですが、CloudWatch メトリクスに見当たりません。メトリクスは15ヶ月は保持される認識ですが、EC2 は別なのでしょうか。メトリクスを確認する方法を教えてください
[CloudWatch] メトリックの保持期間が14日→15ヶ月に延長されて、グラフ機能も強化されました | DevelopersIO
どう対応すればいいの?
AWS CLI をご使用ください。
ご認識の通り、メトリクスは15ヶ月間保持されますが、マネジメントコンソールからは、メトリクスが最後に登録されてから2週間以内のものしか表示できません。そのため、2週間前以上に終了した EC2 のメトリクスを取得するには、AWS CLI をご使用ください。
メトリクスの取得は複数のコマンドが用意されているため、取得内容に合わせてご選択ください。
- get-metric-data — AWS CLI 2.7.3 Command Reference
- get-metric-statistics — AWS CLI 2.7.3 Command Reference
- get-metric-widget-image — AWS CLI 2.7.3 Command Reference
参考:GetMetricData または GetMetricStatistics を使用して CloudWatch メトリクスからデータポイントを取得する
やってみた(画像で取得)
取得例(※起動時間が短いため、一部時間帯のみ表示されています)
取得したい EC2 インスタンスの「インスタンスID」を確認します。
Amazon EC2 コンソールでは、終了したインスタンスはしばらくすると非表示となるため、CloudTrailを利用するなどして確認します。
CloudTrail コンソールを使用した取得例
取得範囲や取得項目のフォーマットを取得するため、CloudWatch コンソールを表示します。
「取得したい期間」や「メトリクス項目」を選択して、「発信元」タブを選択します。
※実際に取得するインスタンスは後ほど変更するため、インスタンス名の選択は適当で構いません。
「イメージAPI」を選択して、「ソースのコピー」をクリックします。
テキストエディタを使用し、コピーした内容をmetrics.json
という名前のテキストファイルとして保存します。
3行目の【インスタンスID】は確認したインスタンスIDに置き換えてください。
{ "metrics": [ [ "AWS/EC2", "CPUUtilization", "InstanceId", "【インスタンスID】" ] ], "view": "timeSeries", "stacked": false, "width": 1130, "height": 250, "start": "2021-06-22T15:00:00.000Z", "end": "2021-06-23T14:59:59.999Z", "timezone": "+0900" }
次のコマンドを実施します。
$ aws cloudwatch get-metric-widget-image --metric-widget file://metrics.json --query MetricWidgetImage --output text | base64 --decode > ./metrics.png
metrics.png
という名前の画像形式でメトリクスデータが取得されました。
取得範囲等をカスタマイズしたい場合は、次のドキュメントを参照し、metrics.json
を変更してください。
GetMetricWidgetImage:メトリックウィジェットの構造と構文-Amazon CloudWatch
参考資料
CloudWatch コンソールでのメトリクスの検索は、メトリクスが最後に取り込まれてから 2 週間に制限され、名前空間で最新のインスタンスが表示されるようにします。