t-sanoブログ

メモです。マイペースにアウトプットします。

AWS CLIでCloudWatchのアラームを制御する

はじめに

サービス運用していく上で、サービスレベルを保つためには監視が必須なわけですが、 監視をどうしても止めなきゃいけないときってありますよね。関係各位に通知が飛んじゃうので。 例えば、サーバメンテナンスでサーバを止めなきゃいけないときとか。

そういったケースにおいて、AWSではどうしたらいいんだろう?と考えました。 CloudWatchってアラームで通知設定してるけど、通知停止とかしてないんですよね・・・私。 ということで、気になって調べてみました。

目的

AWS CLIでCloudWatchのアラームを制御する。

できること

CLIを見ると、下記ができるらしい。 disable-alarm-actionsenable-alarm-actions! 通知止められそうなコマンド発見〜。 set-alarm-stateでアラームのテストもできそうだ。

  • delete-alarms
  • describe-alarm-history
  • describe-alarms
  • describe-alarms-for-metric
  • disable-alarm-actions
  • enable-alarm-actions
  • get-metric-statistics
  • list-metrics
  • put-metric-alarm
  • put-metric-data
  • set-alarm-state

検証

コマンド名を見れば何ができるかだいたいわかるので、アラーム制御できるっぽいコマンドを試してみる。

とりあえず、検証用のメトリクスとアラームを作る。

aws cloudwatch put-metric-data \
    --namespace 'test-metrics' \
    --metric-name 'test-metrics' \
    --unit 'Count' \
    --value '1'

aws cloudwatch put-metric-alarm \
    --alarm-name test-alarm \
    --actions-enabled \
    --alarm-actions arn:aws:sns:ap-northeast-1:ACCOUNT_ID:test-sns \
    --metric-name test-metrics \
    --namespace test-metrics \
    --statistic Sum \
    --period 60 \
    --evaluation-periods 1 \
    --threshold 1 \
    --comparison-operator GreaterThanOrEqualToThreshold

作ったアラームがこちら。 f:id:t-sanox:20161123193058p:plain

アラームのアクションを無効化する。

aws cloudwatch disable-alarm-actions \
    --alarm-name test-alarm

無効にした結果がこちら。 f:id:t-sanox:20161123193039p:plain

下記のコマンドでアラームのアクションを有効化する。

aws cloudwatch enable-alarm-actions \
    --alarm-name test-alarm

まとめ

AWS CLIでCloudWatchアラームの通知を停止、再開できることがわかりました。 このコマンドをJenkinsか何かで利用しやすくしてやれば、メンテナンス時に無駄な通知が飛ぶこともなくなりますね!

参考

AWS CLI Command Reference - CloudWatch