radiosondeを使ってCloudWatch Alarmを簡単に設定する
はじめに
先日radiosondeというツールがリリースされていることを知りました。DSLを使ってCloudWatch Alarmを簡単に設定/更新するツールです。CloudWatch AlarmはAWSマネージメントコンソールで直感的に簡単に設定が出来ますが、同じような設定を大量に作成するのは結構大変です。このツールを使うととても楽に設定出来るのでは?と思ってやってみました!
インストール
私の環境はMacBook Air(OS X 10.9.4)です。bundleを使ってさくっとインストールしてみます。
$ bundle init $ vi Gemfile gem 'radiosonde' $ bundle
使ってみる
radiosondeを使うためには認証情報を設定しておく必要があります。
$ export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY" $ export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_KEY" $ export AWS_REGION="ap-northeast-1"
まずは現在設定されているCloudWatch Alarmをファイルとしてアウトプットします。
$ bundle exec radiosonde -e -o Alarmfile
アウトプットされたアラーム定義ファイルを見ると、定義されているAlarmがDSLになっているのが分かります。
$ cat Alarmfile alarm "awsec2-i-XXXXXXX-CPU-Utilization" do description "Created from EC2 Console" namespace "AWS/EC2" metric_name "CPUUtilization" dimensions "InstanceId"=>"i-XXXXXXX" period 300 statistic :average threshold ">=", 90.0 evaluation_periods 3 actions_enabled true alarm_actions ["arn:aws:sns:ap-northeast-1:XXXXXXXXXXX:Critical-Notification"] ok_actions [] insufficient_data_actions [] end
あとはこの内容を修正したりコピーしたりすれば、簡単に設定が出来ますね!早速定義の変更をしてみましょう。現時点では以下のように、CPU Utilizationが90%を越えた場合にアラームが発生するように定義されています。
これを85%に変更してみましょう。アウトプットされたアラーム定義ファイルのthresholdを90.0%から85.0%に修正します。
$ vi Alarmfile ... threshold ">=", 85.0 ...
修正したアラーム定義ファイルをDry Runで実行してみます。
$ bundle exec radiosonde -a --dry-run Apply `Alarmfile` to CloudWatch (dry-run) Update Alarm: awsec2-i-XXXXXXX-CPU-Utilization: threshold(90.0 --> 85.0) (dry-run) No change
問題無く適用出来そうです。では実際に動かしてみましょう!
$ bundle exec radiosonde -a Apply `Alarmfile` to CloudWatch Update Alarm: awsec2-i-XXXXXXX-CPU-Utilization: threshold(90.0 --> 85.0)
問題無く完了しました!実際にAWSマネージメントコンソールから確認すると、ちゃんと変更されてることが分かります。
これは便利!
まとめ
同じようなCloudWatch Alarm定義を、複数のEC2に対して適用したいとき、GUIでちまちまと設定するのはとても面倒臭い作業なのですが、radiosondeを使うことで簡単に素早く大量にアラーム定義を設定することが出来ます。これは良いツールですね!