AWS Elastic Beanstalk 環境のヘルスステータスが黄色 (Warning) または赤 (Degraded) の状態になったときに修復したいと考えています。
簡単な説明
Elastic Beanstalk 環境の黄色または赤のヘルスステータス警告は、以下の一般的な問題から生じている可能性があります。
- ヘルスエージェントが、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのデータ量不足を報告している。
- コマンドタイムアウト内に、インスタンスでオペレーションが進行中である。
- Elastic Beanstalk 環境が更新中である。
- ロードバランサーのヘルスチェックが失敗している。
- ヘルスエージェントが多数のリクエスト失敗を報告している。
- インスタンスなどの環境リソースが使用できない。
- インスタンスでのオペレーションに時間がかかっている。
- インスタンスが深刻な状態である。
- Elastic Beanstalk ヘルスデーモンが失敗した。
- Elastic Beanstalk 環境が 1 つ以上のヘルスチェックに失敗した。
- Elastic Beanstalk が受け取る 4xx または 5xx の HTTP リターンコードの数が増えている。
- コマンドタイムアウトでデプロイの失敗がある。
警告の詳細については、「状態の色とステータス」をご参照ください。
解決方法
ヘルス警告の原因を特定する
- Elastic Beanstalk コンソールを開きます。
- アプリケーションを選択します。
- ナビゲーションペインで、[Events] をクリックします。
- [Type] 列で [Severity] タイプが [WARN] の最近のイベントを探し、後でトラブルシューティングするため、これらのイベントを書き留めます。
- ナビゲーションペインで [Dashboard] を選択します。
- [Health] セクションで [Causes] を選択します。
これで、Enhanced Health Overview ページで環境全体の状態を表示できるようになりました。
詳細については、「環境管理コンソールでの拡張ヘルスモニタリング」をご参照ください。
ヘルス警告の原因を特定してトラブルシューティングする
Enhanced Health Overview ページで特定したヘルスに関する問題に基づいて、次のいずれかのトラブルシューティング方法を選択します。
- ロードバランサーのヘルスチェックに失敗した場合は、「Elastic Beanstalk で ELB ヘルスチェックをトラブルシューティングする方法を教えてください」を参照してください。
- その他のヘルスチェックの失敗については、「基本ヘルスレポート」を参照してください。拡張ヘルスレポートを使用している場合は、「拡張ヘルスレポートおよびモニタリング」を参照してください。
- 時間がかかりすぎる操作については、Elastic Beanstalk イベントストリームを使用して進行中の操作を特定します。または、Amazon EC2 インスタンスにログインして /var/log/eb-engine.log をモニタリングします。
注: 環境のデプロイや設定の更新の操作は、通常よりも時間がかかります。
- 4xx および 5xx HTTP リターンコードの数が増加した場合、プロキシサーバーのアクセスログをモニタリングして原因を特定します。次に、アクセスログをアプリケーションログと比較して、増加したエラーのパターンを特定します。詳細については、「一般的なエラー」をご参照ください。
注: プロキシサーバーログは、プラットフォームに応じて、Apache 向けアクセスログ (/var/log/httpd/access_log)、NGINX 向けアクセスログ (/var/log/nginx/access_log)、またはインターネットインフォメーションサービス向けアクセスログ (C:\inetpub\logs\LogFiles) です。
- 深刻な状態のインスタンスの場合は、発行された警告に基づいてソリューションを選択します。詳細については、「EC2 インスタンスのトラブルシューティング」をご参照ください。
注: インスタンスは、デプロイが進行中、Amazon EC2 インスタンスのヘルスデーモンが失敗した、またはリソース使用率が高いといった理由で、深刻な状態になる可能性があります。ほとんどの場合、環境の警告状態は一時的なもので、問題の原因に対処すると、緑色 (OK) に変わります。詳細については、「状態の色とステータス」を参照してください。
- 失敗した Elastic Beanstalk ヘルスデーモンの場合、Amazon EC2 インスタンスにログインし、/var/log/messages と /var/log/healthd/daemon.log をモニタリングして原因を特定します。
注: どのインスタンスもデータを送信していないというメッセージが表示された場合は、「EC2 インスタンスが通信に失敗したことによるエラーの解決」を参照してください。
- CPU またはメモリ使用率の問題に関する警告については、「Elastic Beanstalk でメモリと CPU の問題をトラブルシューティングするにはどうすればよいですか?」を参照してください。