radiosondeを使ってCloudWatch Alarmを簡単に設定する

CloudWatch

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

先日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%を越えた場合にアラームが発生するように定義されています。

EC2_Management_Console

 

これを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マネージメントコンソールから確認すると、ちゃんと変更されてることが分かります。

EC2_Management_Console 2

これは便利!

まとめ

同じようなCloudWatch Alarm定義を、複数のEC2に対して適用したいとき、GUIでちまちまと設定するのはとても面倒臭い作業なのですが、radiosondeを使うことで簡単に素早く大量にアラーム定義を設定することが出来ます。これは良いツールですね!

AWS Cloud Roadshow 2017 福岡