状況
ALB 経由の API で 5xx が増えた。CloudWatch では HTTPCode_ELB_5XX_Count が増え、HTTPCode_Target_5XX_Count は 0 のまま。
この数字から言えることとして正しいものは?
正答
- アプリが 500 を返しており、アプリのログに例外が出ているはずだ
- ALB 自身が 5xx を返しており、ターゲットとの接続や応答を疑う
- 5xx はクライアント側の不具合で、サーバー側の調査は要らない
- ALB のメトリクスはあてにならず、アプリのログだけを見ればよい
解説
HTTPCode_Target_5XX_Count はターゲット(アプリ)が返した 5xx を、HTTPCode_ELB_5XX_Count は ALB 自身が生成した 5xx を数える。ターゲットの 5xx が 0 なら、アプリが 500 を返しているわけではなく、アプリのログに例外を探しても見つからない。ALB が返す 502・503・504 は、ターゲットが登録されていない、ターゲットが接続を切った、応答がアイドルタイムアウトまでに返らない、といったターゲットとのやり取りの問題で起きる。アプリのログに何も出ていないことも多いので、ログだけを見て「異常なし」と判断しない。5xx はサーバー側のエラーを表すので、クライアントの不具合と決めつけるのも誤り。
この問題を含む AWS のテストを制限時間つきで解く
AWSクイズへ