1
0

More than 1 year has passed since last update.

EC2をSlackで簡単に監視する

Posted at

なおきち餃子(@naokichigyoza)と申します。
初のQiita記事投稿です。

今回は「EC2が終了したことに気づきたい!監視する方法ないの!?」
という質問(要望)を受け、EC2 をの監視システムを作りました。

作る上では「簡単に」というのを意識しました。具体的には以下です。

  • スクリプトを書かない
  • マネージドサービスを使う
  • Slackで通知させる

最終的に、ステータス と CPU使用率 が監視できるようになりました。

目次

ひとまずステータスを確認できるようにする

  1. 構成図
  2. 構築手順 - Amazon SNS
  3. 構築手順 - AWS Chatbot
  4. 構築手順 - Amazon EventBridge
  5. Slack通知

CPU使用率も監視できるようにする

  1. 追加構成 - AWS CloudWatch
  2. Slack通知_2

構成図

構成図1.png
EC2のステータスが変化したら、Slackに通知が飛ぶようにします。
こちらが構成図です。

EC2のステータスが変化したことをAmazon EventBridge で検出し、SNSトピックに送信します。
SNSにデータが書き込まれると、ChatbotがSlackに内容を通知します。

実際に構築してみましょう。

構築手順 - Amazon SNS

まずはSNSトピックを新規作成します。
Amazon SNS > トピック > トピックの作成
FireShot Capture 007 - Simple Notification Service - ap-northeast-1.console.aws.amazon.com.png

好きな名前を入力し、画面下部の[トピックの作成]をクリック。
FireShot Capture 008 - Simple Notification Service - ap-northeast-1.console.aws.amazon.com.png

構築手順 - AWS Chatbot

次はChatbotの設定です。
チャットクライアントで[Slack]を選択し、[クライアントを設定]をクリックします。
FireShot Capture 011 - AWS Chatbot - us-east-2.console.aws.amazon.com.png

Slackサインイン画面が出てくるので、サインインして続けます。
スクリーンショット 2023-01-22 18.31.11.png

ワークスペース名が表示されれば成功です。[新しいチャネルを設定]をクリックします。
FireShot Capture 017 - Slack - AWS Chatbot - us-east-2.console.aws.amazon.com.png

設定名に任意の名前を入力し、Slackのチャネルも指定します。
FireShot Capture 020 - Slack チャネルの詳細 - AWS Chatbot - us-east-2.console.aws.amazon.com.png

Chatbotで使用するロールを指定します。
[テンプレートを使用してIAMロールを作成する]を選択し、任意のロール名を入力しておきます。
FireShot Capture 021 - Slack チャネルの詳細 - AWS Chatbot - us-east-2.console.aws.amazon.com.png

ガードレールポリシーを入力します。ここには[CloudWatchReadOnlyAccess]を入力しておきます。
(1つ前の手順で作成したロールと、ここで指定するポリシー、これら2つに共通する権限でChatbotは動作します。)
FireShot Capture 022 - Slack チャネルの詳細 - AWS Chatbot - us-east-2.console.aws.amazon.com.png

Chatbotと紐付けるSNSトピックを指定します。
先ほど作成したSNSトピックを指定しておきます。
FireShot Capture 023 - Slack チャネルの詳細 - AWS Chatbot - us-east-2.console.aws.amazon.com.png

構築手順 - Amazon EventBridge

最後にEventBridgeの設定をします。
EventBridge > ルール > ルールを作成 をクリックします
FireShot Capture 030 - Amazon EventBridge - ap-northeast-1.console.aws.amazon.com.png

ページ下部の「イベントパターン」で以下を選択します
AWSのサービス:EC2
イベントタイプ:EC2 Instance State-change Notification
FireShot Capture 031 - Amazon EventBridge - ap-northeast-1.console.aws.amazon.com.png

ターゲットで、先ほど作成したSNSトピックを指定します。
FireShot Capture 032 - Amazon EventBridge - ap-northeast-1.console.aws.amazon.com.png

そのまま[ルールを作成]をクリックします
FireShot Capture 033 - Amazon EventBridge - ap-northeast-1.console.aws.amazon.com.png

こちらで設定は完了です。

Slack通知

実際にインスタンスを停止させてみましょう。
FireShot Capture 035 - インスタンス - EC2 Management Console - ap-northeast-1.console.aws.amazon.com.png

すると、Slackで停止したことが通知されました。
停止中(STOPPING)の通知も来ていますね。
スクリーンショット 2023-01-22 22.39.42.png

逆に起動した場合はこのように通知されます。
スクリーンショット 2023-01-22 22.39.57.png

停止・終了はこんな感じ。
スクリーンショット 2023-01-23 19.05.08.png

こちらで、EC2のステータス確認がSlack上でできるようになりました。

追加構成 - AWS CloudWatch

起動/終了だけではなく、CPU使用率もマネージドサービスだけで確認できます。
少し別のサービスが必要となります。その場合構成は以下のようになります。
構成図2.png

設定したCPU使用率の閾値を超えると、Cloudwatch Alarm がアラートを発砲し
Slackに通知される仕組みです。こちらも構築してきます。

まずは CloudWarch > アラーム > アラームの作成 をクリックし、メトリクスを追加します。
FireShot Capture 036 - CloudWatch Management Console - ap-northeast-1.console.aws.amazon.com.png

今回は「test-EC2」というインスタンスの、CPU使用率メトリクスを指定してみます。
FireShot Capture 037 - CloudWatch Management Console - ap-northeast-1.console.aws.amazon.com.png

アラームの条件設定をしています。
ここでは70%を超えるとアラーム状態となるように設定しています。
FireShot Capture 038 - CloudWatch Management Console - ap-northeast-1.console.aws.amazon.com.png

通知の送信先として、「既存のSNSトピックを選択」を選び、作成したトピックを指定します。
FireShot Capture 040 - CloudWatch Management Console - ap-northeast-1.console.aws.amazon.com.png

任意のアラーム名をつけ、[次へ]をクリックします。
FireShot Capture 041 - CloudWatch Management Console - ap-northeast-1.console.aws.amazon.com.png

[アラームの作成] をクリックします。
FireShot Capture 042 - CloudWatch Management Console - ap-northeast-1.console.aws.amazon.com.png

これで完成です。

Slack通知_2

CPU使用率が上がった場合、どのように通知が飛ぶか確認してみます。

以下のようにグラフ付きで投稿されるようになりました。
スクリーンショット 2023-01-22 22.45.43.png

以上です。AWSのマネージドサービスだけで構築できるので
皆さんもやってみてください。

1
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
1
0