notebook

都内でWEB系エンジニアやってます。

cloudwatch alarm を cliから登録する

下記参考にたたいてみました

put-metric-alarm

  • Diskスペースが80%以上使っていたらSNSに通知を飛ばす設定
aws cloudwatch put-metric-alarm
--alarm-name testalarm \
--comparison-operator GreaterThanThreshold \
--threshold 80 \
--alarm-description testAlarm \
--metric-name DiskSpaceUtilization \
--evaluation-periods 1 \
--period 60 \
--namespace "System/Linux" \
--statistic Maximum \
--dimensions Name=InstanceId,Value=i-4f069e83 Name=Filesystem,Value="/dev/xvda1" Name=MountPath,Value="/" \
--alarm-actions arn:aws:sns:ap-southeast-1:111111111111:subscriptionname

comparison-operator

  • 不等号
Value operator
GreaterThanOrEqualToThreshold <=
GreaterThanThreshold <
LessThanThreshold >
LessThanOrEqualToThreshold >=

threshold

alarm-description

  • 説明

metric-name

  • 測定値にする項目

evaluation-periods

  • 猶予、設定値数連続でfailした場合にアクションする

period

  • 試行間隔
  • 60秒区切り

namespace

  • メトリクスのnamespace

statistic

  • Maximum,Minimum,Average,Sum,SampleCount
  • 測定値

dimensions

  • メトリクス値を特定するためのパラメータ
  • InstanceIdなど

unit

  • 単位
  • Bytes,Count,Seconds,Megabytes/Second...

alarm-actions

  • アラートがあがったときにするアクション

半自動化

コマンドラインから登録できるようになったので特定のインスタンスに対してアラームをセットするスクリプトを書きました

インスタンス名とIPなどある程度判別できる情報を乗せたかったのと急いでいたのでシェルの方がさくっと行けるかなと思って書いてみましたが、実際書き終えてみたらそうでもなかったかも、、、

ec2_metric_alarm - Create/update or delete AWS Cloudwatch ‘metric alarms’

次回機会があったらansibleで実装しよう...

やっていることは

という感じで アラーム数 × インスタンス数 のリクエストを投げるようにしました

なので1インスタンス複数のディスク監視を追加しようとするとコード修正して二回目実行する必要があるという...w

さらに、ディスク監視だとFilesystemだったりMountpathだったりインスタンスごとに統一できてないものは個別で修正して実行しなくてはならないのでつくりとしてはお粗末です

とりあえず誰かの参考になれば幸いです、特に利用価値はなさそうですが.....