前書き
毎度、ELBを設定するとヘルスチェックのログがaccessログに出力され大事なログが埋もれちゃいます。
構築時に動作確認できたら、止めてしまいましょう。
ELBだけではなく、SetEnvIf 次第で他のLBにも流用できますね。(多分)
設定情報
■ LogFormat
送信元IPアドレスがELBのものしか来ないのは困るので、ちゃんとX-Forwarded-For で送信元アドレスが分かるようにしましょう。
(変更前)
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
↓
(変更後)
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
■ CustomLog
ELB-HealthChecker だったら、nolog にセットしてログ出力を抑止しましょう。
(変更前)
CustomLog "/var/log/httpd/access.log" combined
↓
(変更後)
SetEnvIf User-Agent "ELB-HealthChecker.*" nolog
CustomLog "/var/log/httpd/access.log" combined env=!nolog
設定が終わったら・・・
忘れずに行いましょう。
■ 設定情報の反映
# systemctl restart httpd
■ ログ
(変更前)
- - - [23/Feb/2017:13:06:16 +0900] "GET /health.html HTTP/1.1" 200 7 "-" "ELB-HealthChecker/1.0"
- - - [23/Feb/2017:13:06:16 +0900] "GET /health.html HTTP/1.1" 200 7 "-" "ELB-HealthChecker/1.0"
↓
(変更後)
なにも出力されない・・・
アクセスがあると、
<送信元IPアドレス> - - [23/Feb/2017:13:17:52 +0900] "GET /testdir/ HTTP/1.1" 200 6 "-" "*********"
注意してください
本設定を入れることでELBのヘルスチェックログが抑止されますが、設定ミスや偽装によるアクセスに対してログが一切残らないことになります。ご利用の環境によってはログが残らないリスクを十分理解した上で設定を行ってください。