4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ELBのヘルスチェックをログに残したくない(Apache版)

Last updated at Posted at 2018-12-11

#はじめに
ELB(ALB)はターゲットグループに含まれるWebサーバーの死活監視(ヘルスチェッ)をするため、頻繁(デフォルトだと30秒間隔)に対象のWebサーバーへアクセスをすることから、アクセスログにサービスとは関係のないログが大量に残されます。
また、Webサーバーから見た場合、クライアントアクセスは全てELBからのアクセスとなるため、本来のアクセス元の情報が記録されないことになります。
これは、ELBからのヘルスチェックアクセスを記録しないようにすると同時に、本来のアクセス元の情報をログに記録する場合のApache設定方法です。

#具体的な設定(Apache)

*.confファイルに次のログ設定を書きます。
個人的には、ログフォーマット設定はグローバル設定としてhttpd.confに記述し、
ログ出力先の設定は各バーチャルホスト.confに出力先ログファイルを指定するようにしています。

httpd.conf
#前略~~~
<IfModule log_config_module>
    SetEnvIf User-Agent "ELB-HealthChecker.*" nolog
    LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>
#~~~後略

ログフォーマットに「"%{X-Forwarded-For}i」を記述することで、本来のアクセス元情報を含めます。
※logio_moduleの記述は必須ではありません。I/Oバイト数を記録する場合のみ記述します。

virtualhost.conf
<VirtualHost *:80>
#前略~~~
  CustomLog logs/hogehoge/access.log combined env=!nolog
#~~~後略
</VirtualHost>

VirtualHost セクション内で出力先ログファイルを指定します。
「env=!nolog」を指定することで、ユーザーエージェントが「ELB-HealthChecker.*」となっているものはログに出力されなくなります。

#おわりに
適切なログ出力を設定することでログの可読性を確保して利用状況の把握し、トラブルシューティングに備えましょう。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?