AWSにおけるシステム障害通知
システムとして安定した動作が提供されていることが当たり前となっている昨今では障害の発生はあってはならないことですが、現実的には様々な要因でシステム障害は発生します。
AWS(Amazon Web Services)上でも障害通知を行うことで万一障害が発生した際、いち早く状態に気づくことで早期の復旧が可能となり、サービス停止を最小限にとどめることができます。
ではAWSのようなクラウドサービスにおいて障害通知はどのような方法があるのでしょうか。本記事ではAWSにおける障害通知についてできるだけわかりやすく説明します。
目次
障害通知とは
AWSの障害通知について説明を行う前にまず、障害通知とはなにかという点について考えてみたいと思います。
障害通知とはWeb サービス停止、システム停止等の障害が発生した場合に管理者へ通知することです。
障害はできるだけ早く気づき対処を行うことで復旧も早期に行うことが可能となります。通常はシステム側で障害を検知し、その後何らかの方法で管理者へ通知する形となります。
障害通知には一般的に以下のような方法が用いられます。
- メール通知
- SMS(ショートメール)通知
- チャットツール(Slack、Microsoft Teams等)
- 電話
一般的にはメール通知が多く用いられますが、最近の傾向としてはチャットツールが使われるケースが増えてきています。
実際には障害に至らなくてもリソースが危険な状態であることを通知することで障害を未然に防ぐことができます。このような実際に障害に至らない場合でも通知が使われるケースがあります。
障害通知までの流れと注意点
通常障害を検知して対応するまでの流れは
①情報取得
②フィルタ(取得した情報の選別)
③検知
④通知
⑤判断
⑥対応
という形で推移します。
この③検知のタイミングで監視システムは障害を発見するのですが、全ての検知を通知すると、通知が大量になり判断が難しくなるため②フィルタ等で通知の対象を通知されるべき内容に絞ることが必要となります。
また通知内容によって対応フローや手順を決めておくと対応の属人化を防ぐことができます。
AWSに最適化された24時間365日の運用・監視をご提供するスタイルズのAWS監視、運用・保守サービスはこちら→
AWSの障害通知
ここからはAWSサービスにおける障害通知について説明します。
AWSでの障害通知はおおまかに以下のように分類できます。
- ユーザー環境固有の障害通知
① メトリクスによる障害通知
② ログによる障害通知 - AWS固有の障害通知
① AWSサービス全体の障害情報
② アカウント単位での障害情報
ここからはこれらAWSでの障害通知の内容に関して説明をしていきます。
メトリクスによる障害通知
AWS のサービスはメトリクスと呼ばれる監視用データをAWSの監視サービス「Amazon CloudWatch」 に定期的に出力しています。AWSではこのメトリクスを用いて各サービスの死活監視 / 性能監視 / キャパシティ監視を実現しています。
メトリクスはAWSサービスの統計情報となっていて検知を行うためにはメトリクス内の具体的な通知トリガーを設定する必要があります。
メトリクスによる障害通知設定
メトリクスで検知した障害の通知を設定するにはまず、CloudWatch 上で異常を検知するアラームを作成する必要があります。
ここで作成したアラームを使って
「一定のしきい値を何分間に何回超えたら、どのような手段で通知を出す」
といった細かい通知システムをGUI 上で簡単に組み込むことができます。
ログ検知による障害の通知
AWSではOS、ミドルウェア、アプリケーション等、各種システムで生成されるログを利用して障害の通知を行うこともできます。ログは障害発生時の事象解析、原因特定に有効な情報ともなり、AWSではCloudWatch Logs サービスを利用することでログサーバを構築せずにログに関する各種機能を利用することもできます。
ログで通知する内容の定義
AWSではOS、ミドルウェア、アプリケーション等の固有のログの内容から通知を行うことが可能です。すべてのログを通知することは通知量が膨大となってしまうため、通常は出力されるログ本文からフィルタして通知する形となります。
以下のようなCritical、Warnning といったプライオリティ(ログのレベル)もフィルタの基準となります。
ログのフィルタは以下のような形で設定が可能です。
AWSに最適化された24時間365日の運用・監視をご提供するスタイルズのAWS監視、運用・保守サービスはこちら→
AWS固有の障害通知
ここまではユーザー固有のシステム内での障害検知に関して紹介してきましたが、AWSサービス全体、またはサービス単位での障害が発生する可能性もあります。
ここからはこれらAWS固有の障害をどのように確認するかに関して説明します。
AWSサービス全体の障害情報
AWSサービス全体の障害情報はAWS Service Health Dashboard で確認することができます。
リージョン(地域)やサービス単位での確認を行うことが可能です。
https://status.aws.amazon.com/
アカウント単位での障害情報
AWSサービス全体のうち、個別のアカウントで影響を受けているサービスの障害情報はAWSコンソール上のAWS Personal Health Dashboard で確認することができます。
AWS Personal Health Dashboard で検知した障害はSNSでメール送信することも可能です。
AWS固有の障害通知に関する注意点
ご紹介させていただいたAWS固有の障害通知はすべてのAWS上で発生している障害情報が通知されるわけではないため注意が必要となります。
局所的な障害情報は通知の遅れや、ご紹介させていただいた確認では通知されない可能性もあるため該当サービスの障害情報が確認できない場合にはAWSサポートへ直接確認いただく形が最善です。
ご紹介した方法以外でもTwitter等のSNSを確認して影響範囲を推測することもリアルタイムに影響が確認できる可能性があるため有効な手段であるといえます。