[アップデート] AWS Chatbot で CloudWatch アラームを受信した際、チャットチャネル上で CloudWatch ダッシュボードウィジェットや CloudWatch Logs Insigts へアクセス出来るようになりました

2023.05.23

いわさです。

本日のアップデートで AWS Chatbot でCloudWatch アラームを受信した際にダッシュボードやログにそのままアクセス出来る機能がサポートされました。

使い勝手どんな感じだろうかと気になったので以前 Microsoft Teams に統合した AWS Chatbot 環境で確認してみました。

CloudWatch アラームを受信してみる

まずは、CloudWatch アラームを設定してトリガーした際の Chatbot の様子を観察してみます。
前述の記事のとおり AWS Chatbot と Microsoft Teams は連携済みです。

この Chatbot チャネルには次の SNS トピックが統合されています。
後ほどこのトピックに CloudWatch アラームの通知を送信します。

今回の検証では EC2 に CPU ストレスをかけて、EC2 にセットアップした Apache のアクセスログを CloudWatch Logs へ送信させておきたいと思います。
次のテンプレートをデプロイすると、CloudWatch Logs へ Apache ログ送信が設定済みの EC2 インスタンスとサンプルアプリが展開されます。

上記でデプロイされた対象インスタンスに対して、次のように対象インスタンスの CPU 使用率が 80 % 以上を条件とする CloudWatch アラームを設定します。

ここでは AWS FIS の aws:ssm:send-command/AWSFIS-Run-CPU-Stress を使って CPU 負荷をかけてみます。
必須パラメータのDurationSecondsだけ指定しています。

FIS の実験開始後に次のように EC2 インスタンスの CPU 使用率が高くなり、アラーム状態となりました。

AWS Chatbot を見てみると、次の通知が送信されていることが確認できました。

対象アラームの情報と、発生時刻やメトリクスに加えて時系列のグラフが表示されています。
また、List dashboards と Query logs のボタンが設置されていますね。
通知を受信後にこの 2 つの機能を使って、さらに調査を行うことが出来るようになっています。

CloudWatch ダッシュボード

Microsoft Teams で受信した CloudWatch アラーム通知から「List dashboards」を押すことで本機能を利用することが出来ます。

先にこの機能のポイントを紹介すると、通知のあったアラームに関連づいたダッシュボードの特定ウェイジェットに対して範囲などを指定することでチャットチャネル上でグラフを取得して確認することが出来ます。
そのため、前提としてウィジェットを配置したダッシュボードの作成が必要です。

イメージとしては監視・運用用のダッシュボードを作成して、いくつかのウィジェットを配置しておき、通知があった際にはチャットツール上からすぐに関連ダッシュボードを確認するような使い方になると思います。

ここでは次のようなダッシュボードを作成しました。

先程の CloudWatch アラーム通知から List dashboards ボタンを押すとダッシュボードとウィジェットを選択することが出来ます。

ウィジェットを選択すると次のように、マネジメントコンソールへ遷移することなくメトリクスグラフを確認することが出来ます。
また、この画面上でリフレッシュや範囲・粒度、集約方法などを設定することも出来ます。

CloudWatch Logs Insights

続いてログです。
先程のダッシュボードボタンの右に Query logs というボタンが用意されています。

こちらを押すと次のようにどういった条件でクエリを発行するかダイアログが表示されます。

まず、次のようにロググループを指定する必要があります。

ただし、一点本日時点での注意事項があります。
おそらく Microsoft Teams を利用する場合の話になりますが、ダイアログでロググループをリストから選択する必要があるのですが、大量にロググループが存在していると全てのロググループが表示されずに目的のロググループが選択出来ない問題がありました。

今回は不要なロググループを大量に削除し動作確認をしています。

また、クエリ内容については直接入力することも出来ますが、保存したクエリを使用することも出来ます。
事前にログ調査用クエリを保存して用意しておけば、アラート通知を受けてスムーズにログ調査が出来ますね。

最後に、検索する範囲(時間)を指定します。

Run query で実行するとクエリが実行されますが、ログについてはチャットチャネル上で直接表示されるわけではありません。
次のようにクエリ結果をブラウザ内で参照するか、CSV ファイルとしてダウンロードするか選択出来ます。

ブラウザ内で参照するとした場合は次のようにクエリ結果が表示されます。
各行は CloudWatch Logs Insights の UI と同様に折りたたみや展開が可能です。

アラーム通知受信からのアプリケーションエラーログ確認とかの流れはイメージしやすいですね。

さいごに

本日は AWS Chatbot で CloudWatch アラームを受信した際にチャットチャネル上で CloudWatch ダッシュボードウィジェットや CloudWatch Logs Insigts へアクセス出来るようになったので、Microsoft Teams で実際に確認してみました。

チャットのみでアラートの調査が出来るのは良いですね。
チャットクライアントに依存しそうですがちょっと使い勝手に癖がありそうです。
Chatbot での運用に慣れていると、通知を受けてからログの確認までマネジメントコンソールへアクセスしなくてもすぐに確認出来るので、これは中々良いのかな。