こんにちは。Infraチームの桒田(くわだ)です。 私たちのチームでは、AzureやAWSを使ったインフラの構築・運用を行っています。
サービスを運用するうえで避けて通れないもののひとつが監視アラートです。 今回はそんな監視アラートの電話通知をAmazonConnectで自動化した話を紹介します。
この取り組みは運用費の削減を目的として始めたものですが、取り組みの結果、毎月の費用を大きく削減することができました。 この記事が同じような課題を持つ方の参考になれば幸いです。
また、今回の自動化に当たってはインターネット上の様々な情報を参考にしました。 このブログの最後で参考にした記事のリンクを紹介しますので、是非そちらもご覧ください。
自動化前の監視アラートの体制
監視アラートとは、ITサービスの運用状況をリアルタイムで監視し、特定の問題や異常が検出された際に担当者へ通知を行う仕組みのことです。
このアラートは24時間365日発生する可能性があります。 そのため発生したアラートには必ず気付けるように当社では以下のような体制を敷いていました。
担当者に電話がかかるまでの流れは以下の通りです。
- アラートが発生すると監視対象のシステムからアラートのメールが送信される。
- メールを受け取った監視オペレータは、メールの内容を確認し、当社の担当者に電話で連絡をする。
- 電話を受け取った担当者は、電話の内容と別途送信しているslack通知の内容をもとにアラートに対応する。
これは一般的にもよくある体制だと思います。 当社ではこの監視オペレータに当たる箇所を外注していました。
課題
しかし、この体制だと24時間365日、常に監視オペレータの方に待機していただくことになるのでそれなりの費用が発生します。 また外注先への依頼をExcelにまとめてメールで送る必要があることも、地味ですが負担に感じていました。
これらの課題をAmazonConnectで解決しました。
どう変わったか
AmazonConnectで以下のような仕組みを構築しました。
処理の流れは以下の通りです。
<処理の流れ>
- CloudWatchからSESにアラートメールを送信する。
- 受信したメールがS3に保存される。
- S3にメールが保存されたことを契機に、SQS経由でLambda①が起動する。
- Lambda①で以下の処理を実行する。
- S3からメールのデータを取得
- メールの内容からDynamoDBに保存されている担当者の電話番号を取得
- アラートの内容をDynamoDBに登録
- AmazonConnectのAPIを実行し担当者に架電
- 架電の状態を確認し、一定時間が経過しても担当者が電話に出ていなければ次の担当者に架電
- AmazonConnectから担当者への架電が成功したら、Lambda②を起動する。
- Lambda②では以下の処理を実行する。
- 電話に出た担当者の情報をDynamoDBに登録
構築中に出た課題
構築中に出た課題は以下のように解決しました。
- アラート内容をそのままAmazonConnectに読み上げさせても聞き取りづらく、内容を把握できない。
- →割り切ってAmazonConnectで読み上げる内容はシンプルにし、詳細はslackで確認するようにした。
- AmazonConnectのデフォルトのタイムアウト60秒だと次の担当者への架電が遅くなる。また、担当者の人数と繰り返し電話をかける回数によってはLambdaのタイムアウト15分に引っかかる。
- →一定時間応答がない場合、タイムアウトを待たずLambdaから電話を切断する実装にしました。実装に当たってはこちらのクラスメソッドの記事を参考にしました。
- 発信元の番号に日本の電話番号を使う場合は申請が必要。
- →こちら(AWS公式サイト)に記載のある通り、日本の番号から電話を掛けたい場合は申請が必要です。申請に必要な情報はこちら(AWS公式サイト)に記載があります。ドキュメントのうち「事業者の認定代理人の個人 ID またはパスポートのコピー」は、サポートに確認したところ担当者の免許証で問題ないとのことだったので免許証で代用しました。
- 日本の携帯電話番号に電話をかける場合は申請が必要。
- →デフォルトだと070、080、090の番号には電話が掛けられません。必要に応じてサービスクォータ引き上げリクエストを行ってください。詳細はこちらの記載(AWS公式サイト)を確認してください。
効果
運用費削減
結果として、かなりのコスト削減に繋がりました。
今回構築したAmazonConnect周りのリソースにも当然費用が発生しますが微々たるものです。
また、今回は移行対象がAWSのアラートだけでしたが、今後は他のクラウドやサービスが発報するアラートもこの仕組みで自動化する予定です。
コミュニケーションコストの削減
依頼をExcelにまとめてメールで送る必要がなくなりました。 今は必要な情報を社内のslackでやりとりしています。
架電にかかる時間の短縮
アラート発生から担当者に電話が届くまでの時間が短くなりました。 元々は5〜10分ほどかかっていたのが、今ではアラートが発生した約10秒後には電話が鳴るようになっています。
まとめ
今回はAmazonConnectで監視アラートの電話通知を自動化した話をしました。
効果が大きく、またAmazonConnectという触ったことのないサービスを扱うことができたため、楽しんで取り組むことができました。
今後もInfraチームでの取り組みや皆さんの役に立つ情報を発信していきたいと思います。