LoginSignup
2
0

More than 1 year has passed since last update.

【AWS】CloudWatchアラームが設定されたEC2インスタンスIDを取得する

Last updated at Posted at 2022-05-11

はじめに

この記事ではCloudWatchアラームが設定されたインスタンスIDとアラーム名をセットで出力するスクリプトを紹介します。
以前の記事ではEC2のAutoRecovery(自動復旧)を無効化するスクリプトを使用してインスタンスIDのリストを取得しましたが、CloudWatchアラームによるAutoRecoveryが設定されていないインスタンスIDも含まれてしまっています。
本当に無効化しても問題ないのか各インスタンスに対してCloudWatchアラームが設定されているか確認する必要があるのですが、膨大な数のインスタンスが存在する環境の場合、手作業での確認は非効率です。
そんな感じでリスト出力できると確認が楽になるだろうなぁと思って作成しました。

前回の記事はこちらになります。

目次

  1. 実行環境
  2. 稼働確認
  3. おわりに

実行環境

検証用に3つのCloudWatchアラームを作成しました。
今回はCloudWatchアラーム名と、アラームに紐づいたインスタンスIDを出力するだけなのでアラームを設定するメトリクスはEC2に関するものでしたら何でも構いません。
image.png
用意した3つのアラームの詳細を確認してみます。
image.png
image.png
image.png

稼働確認

以下のスクリプトをCloudShell内で実行し、リストを作成します。
リストには先ほど確認したCloudWatchアラーム名とアラームが設定されたインスタンスIDがcsv形式で出力されます。
(CloudShellに限らず、EC2内やシェルスクリプトが実行可能な環境でしたら問題ありません。)

Create-CloudwatchAlarm-List.sh
#!bin/bash
CloudWatchAlarmList="Alarm-List.tmp"
Output="Alarm-InstanceList.csv"

echo "AlarmName,InstanceName" > $Output
 aws cloudwatch describe-alarms --query "MetricAlarms[*].[AlarmName]" --output text >> $CloudWatchAlarmList
 cat $CloudWatchAlarmList | while read AlarmName
do
	#アラームが設定されたインスタンスIDを取得
	read InstanceName < <(aws cloudwatch describe-alarms --alarm-names $AlarmName --query "MetricAlarms[*].Dimensions[?Name=='InstanceId'].Value" --output text )
	echo "$AlarmName,$InstanceName" >> $Output 
done	

rm $CloudWatchAlarmList 

早速スクリプトを実行してみます。
「Alarm-InstanceList.csv」というファイルが出力されました。
image.png

中身を見てみます。
image.png

作成したCloudWatchアラーム名とインスタンスIDがセットで取得できました!!

おわりに

CloudShell内でスクリプトを実行することが多いのですが、動きがもっさりしてて重いなぁって思ってます
インスタンス数が非常に多く、リスト作成に時間がかかりそうな場合はスペックが少し高めのEC2内で実行したほうがいいかもしれません。※未検証なので間違ってたらすみません。スクリプトを修正してループを減らすとか内部の実行回数減らすとかしたほうが早いと思いますが。。。

CLIを使ったJsonの取得記事ばっか書いてますが、まだまだqueryをうまく使いこなせていないので頑張って上達します。。。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0