CloudWatch LogsデータをMetrics化しSlack通知にAWS Chatbotを使ってみました

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

M5StickC with ENV Hatで遊んでいた学習していた所
つい先日、AWS ChatbotがGA!という話題が社内Slackで話されていたので、早速試してみました。

※本来AWS ChatbotはSlackに通知を行うだけでなく、対話型でCommand等も実行できるChatOpsツールです。

https://www.skyarch.net/blog/?p=18393
M5StickCで取得した部屋の温度/湿度をCloudWatch Logsに飛ばしているのですが
こちらをFilter条件でMetrics化し、Alarmを作成、SNSに通知を飛ばし、Chatbotに連携という流れです。

CloudWatch Logs ⇢ CloudWatch Metrics ⇢ CloudWatch Alarm ⇢ SNS ⇢ Chatbot

※AWS ChatbotでSlackに投稿するだけであれば、CloudWatch Logs云々は必要ありません。
連携可能なサービスはこちら
Using AWS Chatbot with other AWS services
https://docs.aws.amazon.com/chatbot/latest/adminguide/related-services.html

出来たもの

DataDog等でよく見る、素敵なグラフ付き通知がSlackに、コードレスで出来ました!

目次

手順の概要

  1. CloudWatch LogsのFilter条件を作成
  2. CloudWatch Metricsが作成された事を確認
  3. SNS Topicを作成
  4. CloudWatch Alarmを作成
  5. Chatbot設定を実施

手順

1. CloudWatch LogsのFilter条件を作成

{"env":{"temperture":27.2,"humidity":36.2,"pressure":100350.8}}

定期的にCloudWatch Logsに飛んでくる、上記のようなJSON形式のログをMetrics化するため下記Filterを作成

2. CloudWatch Metricsが作成された事を確認

3. SNS Topicを作成

名前以外特に設定無し

4. CloudWatch Alarmを作成

アラーム条件として、室温が28度より大きい、湿度が40%より大きいを設定してみました

5. Chatbot設定を実施

チャットクライアントとして、Slackを選択し作成を進めると
Slack側の認証画面へ遷移し、Botインストール時と同様、アクセス許可を実施後、PostするSlackチャンネル指定を行います。
指定の必要なIAMRoleは自動生成されたもの、ChatbotがサブスクライブするSNSTopicとして 手順3で作成したTopicを指定します。

まとめ

これまではLambda等で自分でコードを書く/保守する必要がありましたが、その必要がないため気軽に利用でき素晴らしいと感じました。
連携先のサービスが増えていくとさらに使いやすい物になりそうです。

AWS CloudWatchとは?
Datadogとは?

投稿者プロフィール

takashi
開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て
2010年よりスカイアーチネットワークスに在籍しております

機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。
個人ブログではRaspberryPiを利用したシステムやロボット作成も
実施しております。

スカイアーチネットワークスで一緒に働きましょう!

ABOUTこの記事をかいた人

開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て 2010年よりスカイアーチネットワークスに在籍しております 機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。 個人ブログではRaspberryPiを利用したシステムやロボット作成も 実施しております。 スカイアーチネットワークスで一緒に働きましょう!