REL06-BP03 通知を送信する (リアルタイム処理とアラーム) - AWS Well-Architected フレームワーク

REL06-BP03 通知を送信する (リアルタイム処理とアラーム)

組織は、潜在的な問題を検出すると、その問題に迅速かつ効果的に対応するために、適切な担当者とシステムにリアルタイムの通知とアラートを送信します。

期待される成果: サービスとアプリケーションのメトリクスに基づいて関連するアラームを設定することで、運用にかかわるイベントに迅速に対応できます。アラームのしきい値を超えると、適切な担当者とシステムに通知され、根本的な問題に対処できます。

一般的なアンチパターン:

  • アラームのしきい値を過度に高く設定し、重要な通知が送信されなくなる。

  • アラームのしきい値を低くしすぎたことにより、過剰な通知のノイズが原因で重要なアラートへの対処が行われなくなる。

  • 使用率が変わってもアラームとそのしきい値を更新しない。

  • 自動アクションで対処するのが最適なアラームに対して、自動アクションを生成する代わりに担当者に通知を送信することで、余計な通知が送信されてしまう。

このベストプラクティスを活用するメリット: 適切な担当者とシステムにリアルタイムの通知とアラートを送信することで、問題を早期に検出し、運用にかかわるインシデントに迅速に対応できます。

このベストプラクティスを活用しない場合のリスクレベル:

実装のガイダンス

アプリケーションの可用性に影響を与え、自動対応のトリガーとなる可能性のある問題を検出しやすくするために、ワークロードにはリアルタイム処理とアラーム機能が備わっている必要があります。組織は、重要なイベントが発生したり、メトリクスがしきい値を超えたりしたときに通知を受け取ることができるよう、定義されたメトリクスを使用してアラートを作成することで、リアルタイムの処理とアラームの発行を実施できます。

Amazon CloudWatch では、静的しきい値、異常検出、およびその他の基準に基づく CloudWatch アラームを使用して、メトリクスアラームと複合アラームを作成できます。CloudWatch を使用して設定できるアラームの種類の詳細については、CloudWatch ドキュメントのアラームに関するセクションを参照してください。

CloudWatch ダッシュボードを使用して、チーム向けに AWS リソースのメトリクスとアラートをカスタマイズ表示できます。CloudWatch コンソールのカスタマイズ可能なホームページでは、複数のリージョンのリソースを 1 つのビューでモニタリングできます。

アラームは、Amazon SNS トピックへの通知の送信、Amazon EC2 アクションまたは Amazon EC2 Auto Scaling アクションの実行、OpsItem または AWS Systems Manager のインシデントの作成など、1 つまたは複数のアクションを実行できます。

Amazon CloudWatch は Amazon SNS を使用して、アラームの状態が変化したときに通知を送信し、パブリッシャー (プロデューサー) からサブスクライバー (コンシューマー) にメッセージを配信します。Amazon SNS 通知の設定の詳細については、「Configuring Amazon SNS」を参照してください。

CloudWatch アラームが作成、更新、削除されたり、状態が変更されたりするたびに、CloudWatch は EventBridgeイベントを送信します。こうしたイベントで EventBridge を使用して、アラームの状態が変わるたびに通知したり、Systems Manager Automation を使用してアカウント内のイベントを自動的にトリガーしたりするなどのアクションを実行するルールを作成できます。

EventBridge を使うべき場合と Amazon SNS を使うべき場合

EventBridge と Amazon SNS はどちらもイベント駆動型アプリケーションの開発に使用できます。どちらを選ぶかは、具体的なニーズによって異なります。

Amazon EventBridge は、独自のアプリケーション、SaaS アプリケーション、AWS サービスからのイベントに反応するアプリケーションを構築する場合に推奨されます。EventBridge は、サードパーティーの SaaS パートナーと直接統合する唯一のイベントベースのサービスです。EventBridge は、デベロッパーがアカウントにリソースを作成することなく、200 を超える AWS サービスからイベントを自動的に取り込みます。

EventBridge では、定義済みの JSON ベースの構造がイベントに使用されており、ターゲットに転送するイベントを選択する際にイベント本文全体に適用されるルールを作成できます。EventBridge は現在、AWS LambdaAmazon SQS、Amazon SNS、Amazon Amazon Kinesis Data StreamsAmazon Data Firehose など、20 を超える AWS サービスをターゲットとしてサポートしています。

Amazon SNS は、高いファンアウトを必要とするアプリケーション (数千または数百万のエンドポイント) に推奨されます。よく見られるパターンは、お客様が Amazon SNS をルールのターゲットとして使用し、必要なイベントをフィルタリングして複数のエンドポイントに分散させるというものです。

メッセージは構造化されておらず、任意の形式にすることができます。Amazon SNS では Lambda、Amazon SQS、HTTP/S エンドポイント、SMS、モバイルプッシュ、メールの 6 種類のターゲットへのメッセージ転送をサポートしています。Amazon SNS の通常のレイテンシーは 30 ミリ秒未満です。AWS のさまざまなサービス (Amazon EC2、Amazon S3Amazon RDS など 30 以上のサービス) で、Amazon SNS メッセージを送信するようにサービスを設定できます。

実装手順

  1. Amazon CloudWatch アラームを使用してアラームを作成します。

    1. メトリクスアラームは、単一の CloudWatch メトリクス、または CloudWatch メトリクスに依存する式をモニタリングします。アラームは、メトリクスまたは式の値としきい値との比較に基づいて、複数の時間間隔にわたって 1 つまたは複数のアクションを開始します。アクションでは、Amazon SNS トピックに通知を送信したり、Amazon EC2 アクションまたは Amazon EC2 Auto Scaling アクションを実行したりできます。また、AWS Systems Manager で OpsItem またはインシデントを作成できます。

    2. 複合アラームは、作成した他のアラームのアラーム条件を考慮するルール式で構成されます。複合アラームは、すべてのルール条件が満たされた場合にのみアラーム状態になります。複合アラームのルール式で指定されるアラームには、メトリクスアラームや追加の複合アラームを含めることができます。複合アラームは、状態が変更されたときに Amazon SNS 通知を送信できます。また、ALARM 状態になったときに Systems Manager の OpsItems またはインシデントを作成できますが、EC2 アクションまたは Auto Scaling アクションを実行することはできません。

  2. Amazon SNS 通知を設定します。CloudWatch アラームを作成する際には、アラームの状態が変化したときに通知を送信する Amazon SNS トピックを含めることができます。

  3. 指定された CloudWatch アラームに一致するルールを EventBridge に作成します。各ルールは、Lambda 関数を含む複数のターゲットをサポートします。例えば、使用可能なディスク容量が少なくなったときに起動するアラームを定義できます。このアラームにより、領域をクリーンアップする Lambda 関数が EventBridge ルールを介してトリガーされます。EventBridge ターゲットの詳細については、「EventBridge targets」を参照してください。

リソース

関連する Well-Architected のベストプラクティス:

関連ドキュメント:

関連動画:

関連する例: