下記参考にたたいてみました
- 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で実装しよう...
やっていることは
- 各種アラームの設定を記述
aws ec2 describe-innstances
コマンドで対象インスタンスの取得- Tags (それぞれグローバル変数で設定)
- Role
- Stage
- Service
- Tags (それぞれグローバル変数で設定)
対象インスタンス分のcloudwatchのアラーム登録リクエストを投げる
という感じで アラーム数 × インスタンス数 のリクエストを投げるようにしました
なので1インスタンスに複数のディスク監視を追加しようとするとコード修正して二回目実行する必要があるという...w
さらに、ディスク監視だとFilesystemだったりMountpathだったりインスタンスごとに統一できてないものは個別で修正して実行しなくてはならないのでつくりとしてはお粗末です
とりあえず誰かの参考になれば幸いです、特に利用価値はなさそうですが.....