# EC2 の新機能「アプリケーションステータスチェック」で、アプリの異常も自動キャッチ！

こんにちは、しぃちゃんだよ！今日は EC2 の新しいステータスチェックのニュースを見つけたよ。インスタンスの生死だけじゃなくて、その上で動いているアプリの調子まで自動で見守ってくれるようになるんだって、地味だけどすごく嬉しいアップデートなの！

## なにが発表されたの？

AWS What's New から、Amazon EC2 に「アプリケーションステータスチェック」という新しいステータスチェックが登場したよ、というお知らせだよ。EC2 インスタンス上で動いているアプリケーションを監視して、次のような問題を検知してくれるの。

- リクエストを受け付けなくなった Web サーバー
- 動作していない Docker デーモン
- 誤ったネットワーク設定
- トラフィックを通さなくなったネットワークインターフェース

## 今までどうだったの？

EC2 には元々、インスタンスステータスチェックとシステムステータスチェックがあって、インスタンスやその下のシステムが到達不能になったときにアラートが届く仕組みがあったの。でも、Web サーバーが応答を返さなくなっていたり、コンテナのデーモンが落ちていたりといった「アプリケーションレベル」の異常までは検知してくれなかったんだ。

だから今までは、こうしたアプリの異常に気づくために、利用者自身でヘルスチェックの仕組みを作って運用・メンテナンスし続ける必要があったの。地味に手間がかかるところだったんだよね。

## これで何が変わるの？

アプリケーションステータスチェックを使えば、既存のインスタンスステータスチェック・システムステータスチェックと並べて、アプリの状態も EC2 側で継続的に見てもらえるようになるよ。

- 自前でアプリのヘルスチェックの仕組みを作らなくてよくなる
- Web サーバーやコンテナデーモンの異常にすぐ気づける
- Auto Scaling と組み合わせれば、アプリが不健全と判定されたインスタンスを自動で置き換えてもらえる

インフラの死活監視だけじゃなくて、アプリの中身までまとめて EC2 に見てもらえるのは、運用の手間を減らせる嬉しいポイントだね。

## 深く潜ってみよう

チェックの作り方はシンプルで、次の項目を指定するだけだよ。

- 監視するプロトコル(HTTP または HTTPS)
- 監視するポート
- 監視するパス
- アプリが健全だとみなすレスポンスコード

作成したチェックは、インスタンス ID またはタグを使ってインスタンスに関連付けるの。関連付けると、EC2 が指定したポート・パスに対して HTTP または HTTPS のリクエストを送って、60 秒ごとにアプリケーションのステータスを報告してくれるよ。

Auto Scaling グループはこのアプリケーションステータスを見て動くから、アプリが「不健全」と報告されたインスタンスは自動で置き換えの対象になるの。誰かが気づいて手動対応するより先に、勝手に復旧してくれるってわけだね。

提供リージョンは、すべての商用 AWS リージョンと AWS GovCloud (US) リージョンだよ。詳しい使い方や料金は [Amazon EC2 User Guide](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/application-status-checks.html) にまとまっているから、気になる人はチェックしてみてね。

## まとめ

- Amazon EC2 に、アプリケーションレベルの異常を検知する「アプリケーションステータスチェック」が登場
- プロトコル・ポート・パス・健全とみなすレスポンスコードを指定してチェックを作成し、インスタンス ID かタグで関連付ける
- 60 秒ごとに HTTP または HTTPS でリクエストを送ってアプリの状態を報告
- Auto Scaling グループが不健全なアプリを検知したインスタンスを自動で置き換え
- 全商用リージョンと AWS GovCloud (US) で利用可能
- 自前のヘルスチェックを運用してきたインフラ担当・SRE の人には、来週からでも試したくなるアップデートだよ！
