ログの振り分け

2008/05/13 15:07:02

カテゴリ

Apache

http://httpd.apache.org/docs/2.0/ja/mod/mod_setenvif.html#setenvif

httpd.conf などに以下のように記述することで、アクセスログの振り分けが可能になる。

# No Log Networks 
SetEnvIf Remote_Addr 127.0.0.1 nolog 

# No Log Files 
SetEnvIfNoCase Request_URI "\.(gif)|(jpg)|(png)|(css)|(js)$" nolog
SetEnvIfNoCase Request_URI "robots.txt" nolog

# Worms
SetEnvIfNoCase Request_URI "default.ida" worm nolog
SetEnvIfNoCase Request_URI "root.exe" worm nolog
SetEnvIfNoCase Request_URI "cmd.exe" worm nolog
SetEnvIfNoCase Request_URI "Admin.dll" worm nolog
SetEnvIfNoCase Request_URI "mem_bin" worm nolog
SetEnvIfNoCase Request_URI "vti_bin" worm nolog
SetEnvIfNoCase Request_URI "msadc" worm nolog
SetEnvIfNoCase Request_URI "MSADC" worm nolog

# Crawlers
SetEnvIfNoCase User-Agent "SurveyBot" crawler nolog
SetEnvIfNoCase User-Agent "Googlebot" crawler nolog


# Log Setting
CustomLog   "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/access_log_%Y%m%d 86400 540" combined env=!nolog
CustomLog   "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/worm_log_%Y%m%d 86400 540" combined env=worm
CustomLog   "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/crawler_log_%Y%m%d 86400 540" combined env=crawler

SetEnvIf で条件により環境変数を設定
ログファイル指定時に env= として環境変数を指定することでその条件に合うもののみをそのログに含めることができる。

上記の例では

  ・通常のaccessログに含めないもの → nolog
  ・ワームの特徴のあるアクセス → worm
  ・クローラのアクセス → crawler

という環境変数を設定し

  ・通常のアクセスログ  → env=!nolog (=nologでないもの)
  ・ワームのアクセスログ → env=worm
  ・クローラのアクセスログ → env=crawler
  ・nolog のみは ログに残さない

と動作する。

コメント