AWS CLIで自動でCloudWatchのアラームを登録したい

背景

インスタンスIDって控えておくのめんどくさいですよね。

今回はタグでNameを「Sample」というインスタンスのアラームの設定を行っていきます。

なので、今回は2パートに分かれます。

1、「sample」のインスタンスIDの取得

2、取得したインスタンスIDからアラームの設定

準備

必要なパッケージのインストール

yum install python3 jq
pip3 install awscli

自分のアカウントへのアクセスの設定

aws configure

アラームをセットする。

#./auto_alarm.sh

#!/bin/bash

instance_ID=`aws ec2 describe-instances --filter "Name=tag:Name,Values=Sample" | jq '.Reservations[].Instances[].InstanceId' | cut -c 2-20`

#いじりそうな設定だけ変数にしておく

#アラーム名
alarm_name="CPU-Utilization80%"
#閾値
threshold_NUM=80
#監視間隔(sec)
chk_period=300
#OKアクションはほしければコメント外してください。うるさいのでコメントアウトにしてます。

aws cloudwatch put-metric-alarm --alarm-name "$alarm_name" --namespace AWS/EC2 --metric-name CPUUtilization --dimensions "Name=InstanceId,Value=$instance_ID" --period $chk_period --statistic Average --threshold $threshold_NUM --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --alarm-actions arn:aws:sns:ap-northeast-1:xxxxxxxxxxxxxx #--ok-actions arn:aws:sns:ap-northeast-1:xxxxxxxxxxxxxxx

GUIを確認すると、アラームがセット出来ていると思います。

おまけ

ある日のCPU稼働率の値を参照するコマンドです。

日付のところとインスタンスIDのところを調整すれば使えます。

大量のデータをただただ吐かれるのでリダイレクトしてどこかに保存したほうがいいと思います。

aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name CPUUtilization --start-time 2018-09-20T00:00:00 --end-time 2018-09-20T23:59:59 --period 300 --statistics Average --dimensions Name=InstanceId,Value=i-xxxxxxxxxxx