最近、仕事でCloudWatchのダッシュボードを設定する機会がありました。
しかし、Webコンソールで一つずつ設定するのはとても面倒に感じたので、aws cli
を使用して設定していきます!
前提
今回は、事前にElastic Beanstalkで作成した環境(下記2点)をダッシュボードに設定する。
(こちらの監視対象環境はEC2でもRDSでも何でも良い)
EC2 (Elastic Beanstalkで作成されたEC2)
json作成
widgetsという配列変数に、モニタリングしたい分だけ設定。
今回はメモリとディスクの統計情報をモニタリングできるようにする。
{
"widgets": [
{
"type": "metric",
"x": 0,
"y": 0,
"width": 6,
"height": 6,
"properties": {
"view": "timeSeries",
"stacked": false,
"metrics": [
[
"AWS/EC2",
"MemoryUtilization",
"InstanceId",
"i-0accd6fcf9ecc2d61"
]
],
"region": "us-east-2"
}
},
{
"type": "metric",
"x": 6,
"y": 0,
"width": 6,
"height": 6,
"properties": {
"view": "timeSeries",
"stacked": false,
"metrics": [
[
"AWS/EC2",
"DiskUsage",
"InstanceId",
"i-0accd6fcf9ecc2d61"
]
],
"region": "us-east-2"
}
}
]
}
コマンド実行
サブコマンドput-dashboardでダッシュボードを登録し、--dashboard-nameオプションでダッシュボード名指定、--dashboard-bodyオプションで先ほど作成したjsonファイルを指定。
jsonファイルを指定方法は「file://ファイルパス」という形式。
そうじゃないと以下のエラーが出る。
An error occurred (InvalidParameterInput) when calling the PutDashboard operation: The field DashboardBody must be a valid JSON object
$ aws cloudwatch put-dashboard --dashboard-name test --dashboard-body file://test.json
{
"DashboardValidationMessages": []
}
ダッシュボードを確認
testダッシュボードが作成されている。
testダッシュボードの中に先ほど設定したメモリとディスクの統計情報のモニタリングができるようになっている。
※インスタンスに何もしてないのでデータは無いが・・
終わりに
とりあえず、CLIでCloudWatchのダッシュボードを作成できました。
しかし、そもそもCloudWatchに関しての理解が乏しいので、そこをしっかり勉強して使いこなせるようになりたいです。
参考
https://dev.classmethod.jp/articles/cloudwatch-dashboard-api-using-awscli/
https://aws.amazon.com/jp/blogs/news/new-api-cloudformation-support-for-amazon-cloudwatch-dashboards/