表題の件について。
■ 環境
- AWS Application Load Balancer
■ ALB
Application Load Balancerを使用しログをS3に出力させているのだが、そのログの解析処理の中で2018/03/02もしくは2018/03/03分のログから一部で解析に失敗している箇所を発見した。なぜだろう?とデバッグしていくと、どうやら今まではなかったフィールドがログに追加されていることが原因であるようであった。
※よくよくログファイルを確認したところ、3/1分からであった。
Application Load Balancer のアクセスログ
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-access-logs.html
上記のマニュアルによると、”アクセスログのエントリ“には20のフィールドが出力されるようになっている。しかし前述の日付あたりから21フィールドが出力されているようであった。21番目のフィールドに『0』、ものによっては『–』が出力されている。件の解析処理の中では20フィールドの場合はELBと判別しELB用の処理を、それ以外の時はCloudFrontと判定しCloudFront用の処理を行うようになっていた為、ELBであるのにCloudFront用の処理に入っていた為に失敗しているようであった。判定処理はフィールド数だけではないのだが、CloudFront用の処理に入ってしまっていた。判定処理が甘いようである。ちなみにCloudFrontのログは26フィールドである。
判定処理を20フィールドもしくは21フィールドに変更し正しい結果を得られるようになった。
以上。