Amazon Aurora のフェイルオーバー を E メールで通知する

Reader「もしかして」 Writer「私たち」 Reader & Writer 「入れ替わってる〜〜〜〜!?」というフェイルオーバーに、なる早で気付けるためにメールで通知してみます。
2021.01.16

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

RDSやAuroraのフェイルオーバー などのイベント情報は、RDSマネジメントコンソールやAWS CLIで確認コマンドを実行するなどで表示が可能です。
ただ、重要なイベントの発生はできるだけ早く検知したいと思うものです。
今回は、RDSのイベントサブスクリプション機能を使って、フェイルオーバーが発生した際にEメールで通知する設定方法を紹介します。
なんと、作業時間はたったの約5分!お手軽に設定できました。

前提条件

目的は、「指定されたDBクラスター でフェイルオーバー が発生したら、メールで通知を行う」です。

参照ドキュメント

下記のAWSドキュメントに記載されている手順を参考に、設定していきます。
一見、ドキュメントにはRDSの設定について書かれているようにも思えますが、Aurora クラスターも同様の手順で通知を設定できます。


検証環境

本記事では、通知対象のDBは作成済みの前提で設定します。

  • Aurora MySQL 5.7 クラスター
  • Reader / Writer 構成の2 ゾーンマルチ AZ
  • 通知に使用するSNSトピックは未作成

やってみよう

設定手順

RDSコンソールの左ペインメニューから、[イベントサブスクリプション]をクリックします。

[イベントサブスクリプションの作成]をクリックします。
[サブスクリプションの名前]には任意の名前を入力します。
通知に使用する SNS トピックを作成するため、ターゲット 項目では、[新しい E メールトピック]を選択します。
[トピック名]には任意の名前を、[これらの受取人を含みます]下のテキストボックスには、通知を送付する宛先のEメールアドレスを入力します。

ソースタイプの項目は、通知したいイベントカテゴリに合わせて選択する必要があります。
イベントカテゴリとソースタイプの対応は、ドキュメントの「Amazon RDS のイベントカテゴリとイベントメッセージ」の項目を参照してください。
今回はクラスター内で発生したフェイルオーバー を通知するため、ソースタイプは[クラスター]を選択します。
[特定のクラスター]をラジオボタンで選択し、プルダウンメニューで通知対象のクラスター識別子を選択します。
[特定のイベントカテゴリ]では、failoverを選択します。
[作成]をクリックします。

「イベントサブスクリプション <名前> が正常に作成されました。」と表示され、一覧に作成したイベントサブスクリプションが存在することを確認します。

この後、通知を送付する宛先に設定した E メールアドレスに、「AWS Notification - Subscription Confirmation」といった件名で登録確認メールが送付されます。
本文中のSNSトピックARNを確認後、認証用のリンクをクリックしてください。
「Subscription confirmed!」と表示されれば、登録完了です。

動作検証

さて、実際に Aurora クラスターでフェイルオーバーを発生させて、実際に通知が送付されるかを確認してみましょう。
RDS マネジメントコンソールの左ペインのメニューから[データベース]をクリックします。通知対象に設定したクラスター内のインスタンスを選択し、[アクション]-[フェイルオーバー]をクリックします。
[画像] 「フェイルオーバーしてよろしいですか?」と表示されたら、メッセージ右下の[フェイルオーバー]をクリックします。
クラスターのステータスが「failing-over」になり、フェイルオーバーが発生していることを確認します。

この時点でメールを確認すると、以下の内容のメールが届いていました。

Event Source : db-cluster
Identifier Link: https://console.aws.amazon.com/rds/home?region=ap-northeast-1#dbclusters:id=XXXXXXXXX
SourceId: <クラスター名>
Notification time : 2021-01-XX XX:XX:XX.XXX
Message : Started cross AZ failover to DB instance: <インスタンス名>
Event ID : http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html#RDS-EVENT-0073

--
If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe:
<登録解除用のURL>

Please do not reply directly to this email. If you have any questions or comments regarding this email, please contact us at https://aws.amazon.com/support

メール通知は、フェイルオーバーの開始時と完了時の2通配信されます。
これは、フェイルオーバーの開始と完了は、それぞれ別のイベントとして記録されるためです。
通知されるイベントの種類や詳細については、冒頭で紹介したドキュメントに記載があります。フェイルオーバー以外のイベント通知を行いたい場合は、通知対象のイベントの詳細について、予め調べておくとよいでしょう。

さいごに

RDS マネジメントコンソールや AWS CLI でイベントが表示できる期間には制限があります。
(RDSマネジメントコンソールは過去1日、AWS CLIだと過去14日間)
フェイルオーバーの発生に気がつかないまま、表示可能期間を超過してしまうと、DBエンジン側のイベントログなどの証跡からフェイルオーバーの発生を推測する必要があり、調査が大変になってしまいます。
メール通知を設定していれば、メールそのものがフェイルオーバー発生のエビデンスとなり、より早い問題解決ができるかもしれません。
今回はフェイルオーバーのイベントを通知しましたが、ドキュメントの「Amazon RDS のイベントカテゴリとイベントメッセージ」リストに存在するイベントカテゴリであれば検知が可能です。
上手に使って、トラブルシューティングの手がかりとしていきたいですね!。

以上、オペレーション部のもっさん@福岡オフィス でした!

参考