なおきち餃子(@naokichigyoza)と申します。
初のQiita記事投稿です。
今回は「EC2が終了したことに気づきたい!監視する方法ないの!?」
という質問(要望)を受け、EC2 をの監視システムを作りました。
作る上では「簡単に」というのを意識しました。具体的には以下です。
- スクリプトを書かない
- マネージドサービスを使う
- Slackで通知させる
最終的に、ステータス と CPU使用率 が監視できるようになりました。
目次
ひとまずステータスを確認できるようにする
CPU使用率も監視できるようにする
構成図
EC2のステータスが変化したら、Slackに通知が飛ぶようにします。
こちらが構成図です。
EC2のステータスが変化したことをAmazon EventBridge で検出し、SNSトピックに送信します。
SNSにデータが書き込まれると、ChatbotがSlackに内容を通知します。
実際に構築してみましょう。
構築手順 - Amazon SNS
まずはSNSトピックを新規作成します。
Amazon SNS > トピック > トピックの作成
好きな名前を入力し、画面下部の[トピックの作成]をクリック。
構築手順 - AWS Chatbot
次はChatbotの設定です。
チャットクライアントで[Slack]を選択し、[クライアントを設定]をクリックします。
Slackサインイン画面が出てくるので、サインインして続けます。
ワークスペース名が表示されれば成功です。[新しいチャネルを設定]をクリックします。
設定名に任意の名前を入力し、Slackのチャネルも指定します。
Chatbotで使用するロールを指定します。
[テンプレートを使用してIAMロールを作成する]を選択し、任意のロール名を入力しておきます。
ガードレールポリシーを入力します。ここには[CloudWatchReadOnlyAccess]を入力しておきます。
(1つ前の手順で作成したロールと、ここで指定するポリシー、これら2つに共通する権限でChatbotは動作します。)
Chatbotと紐付けるSNSトピックを指定します。
先ほど作成したSNSトピックを指定しておきます。
構築手順 - Amazon EventBridge
最後にEventBridgeの設定をします。
EventBridge > ルール > ルールを作成 をクリックします
ページ下部の「イベントパターン」で以下を選択します
AWSのサービス:EC2
イベントタイプ:EC2 Instance State-change Notification
こちらで設定は完了です。
Slack通知
すると、Slackで停止したことが通知されました。
停止中(STOPPING)の通知も来ていますね。
こちらで、EC2のステータス確認がSlack上でできるようになりました。
追加構成 - AWS CloudWatch
起動/終了だけではなく、CPU使用率もマネージドサービスだけで確認できます。
少し別のサービスが必要となります。その場合構成は以下のようになります。
設定したCPU使用率の閾値を超えると、Cloudwatch Alarm がアラートを発砲し
Slackに通知される仕組みです。こちらも構築してきます。
まずは CloudWarch > アラーム > アラームの作成 をクリックし、メトリクスを追加します。
今回は「test-EC2」というインスタンスの、CPU使用率メトリクスを指定してみます。
アラームの条件設定をしています。
ここでは70%を超えるとアラーム状態となるように設定しています。
通知の送信先として、「既存のSNSトピックを選択」を選び、作成したトピックを指定します。
これで完成です。
Slack通知_2
CPU使用率が上がった場合、どのように通知が飛ぶか確認してみます。
以上です。AWSのマネージドサービスだけで構築できるので
皆さんもやってみてください。