標準では、アクセスログ、エラーログは、FC4では/var/log/httpd以下に、openSUSE 10.0に場合は/var/log/apache2以下に記録されます。ログファイルは、単にどこからアクセスしてきたかというアクセス情報以外に、起動失敗時や、phpなどがうまく動かないときの、解決の手がかりとなります。
既知のウォームのログは取るとログが非常に長くなってしまい、ほかの肝心のログが埋もれてしまう。下記の設定をすると、いくつかのウォームのログは記録されなくなる。
SetEnvIf Request_URI "^/_mem_bin/" nolog SetEnvIf Request_URI "^/_vti_bin/" nolog SetEnvIf Request_URI "^/c/" nolog SetEnvIf Request_URI "^/d/" nolog SetEnvIf Request_URI "^/msadc/" nolog SetEnvIf Request_URI "^/MSADC/" nolog SetEnvIf Request_URI "^/scripts/" nolog SetEnvIf Request_URI "^/default.ida" nolog
と
CustomLog logs/access_log combined env=!nolog
をhttpd.confに追加
LAN内からのアクセスは、通常他人からのアクセスではないうえ、ホームページの状態を確認したりしてアクセス数もたいてい多いので、通常のログには記録したくない場合がある。
そんな場合はSetEnvIf Remote_Addrを使って、場合分けをする。
例えば、LAN内のIPアドレスが192.168.xxx.xxxの場合は次のように設定する。
SetEnvIf Remote_Addr 192.168. lanaccess CustomLog logs/access.log combined env=!lanaccess CustomLog logs/access_lan.log combined env=lanaccess
これで、通常のアクセスはaccess.logに、LAN内からのアクセスはaccess_lan.logに記録される。
もし、LAN内からのアクセスのログが不要であれば、最後の行は不要である。
サイトの情報を収集にくるロボットなどの情報を、通常のログと同じところに記録すると、webalizerなどでログを分析した際に、これらのアクセスが上位にきてしまうなどといった問題が出てくる。
このような問題を解決するには、ロボットからのアクセスは別に記録してやればよい。
一般的にはUser-Agentで分けてやるのが簡単である。
SetEnvIf User-Agent "Googlebot" botlog CustomLog logs/access.log combined env=!botlog CustomLog logs/access_bot.log combined env=botlog
ちなみにうちに来ているボットたちであるが、
SetEnvIf User-Agent "Mediapartners-Google" googlemediabotlog tech_nolog SetEnvIf User-Agent "msnbot" msnbotlog tech_nolog SetEnvIf User-Agent "Yahoo! Slurp" yahoobotlog tech_nolog SetEnvIf User-Agent "Googlebot" googlebotlog tech_nolog SetEnvIf User-Agent "Ask Jeeves" botlog tech_nolog SetEnvIf User-Agent "Gigabot" botlog tech_nolog SetEnvIf User-Agent "BecomeBot" botlog tech_nolog SetEnvIf User-Agent "Baiduspider" botlog tech_nolog SetEnvIf User-Agent "TurnitinBot" botlog tech_nolog SetEnvIf User-Agent "BecomeJPBot" botlog tech_nolog SetEnvIf User-Agent "Yeti" botlog tech_nolog SetEnvIf User-Agent "IRLbot" botlog tech_nolog SetEnvIf User-Agent "ia_archiver" iabotlog tech_nolog
このような形で分けている。
ワームの場合と同じようにSetEnvIf Request_URIを使う。正規表現を使って、
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" nolog CustomLog logs/access_log combined env=!nolog
とする。()内に拡張子を書いていけば他のファイルも記録しないようにすることが出来る。例えばcssファイルを記録しないようにするには、
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(css)$" nolog
とする。
Webalizerはログを解析するソフトウェアである。
インストールは、ubuntuの場合は、
$sudo apt-get install webalizer
でインストールすることができる。FedoraやCentoOSの場合はyumを使ってインストールする。
設定ファイルは/etc/webalizer.confもしくは/etc/webalizer/webalizer.confである。
複数のサイトがある場合はこのファイルをコピーして、例えば、
/etc/webalizer.example.com.conf /etc/webalizer.example.org.conf
のように複数作成する。
このファイルの中で主に変更すべき箇所は、
HostName www.example.com
解析すべきログファイルの場所(ログファイルの場所は、apacheの設定ファイルhttpd.confの中に書かれている)
LogFile /var/log/httpd/access_log
ログの解析結果を出力する場所。ここにはhtmlファイルが作成され、このディレクトリにブラウザでアクセスすると、グラフィカルに表示される。
OutputDir /var/www/usage
差分のみを解析していくようIncrementalをyesにします。
Incremental yes
下記は作業ファイルの位置
HistoryName /var/lib/webalizer.ckme.co.jp.hist IncrementalName /var/lib/webalizer/webalizer.current
webalizerを起動するには
# /usr/bin/webalizer -c /etc/webalizer.conf
と打てばよい。これでサマリーページが作成されるはずである。
そのほか、通常はcronで動かすので、Quietをyesに設定する。
Quiet yes
それから、SSIでしばしば使われる、shtmlがPageTypeに入っていない場合は、
PageType shtml
とする。また、cssファイルやfavicon.icoファイルへのアクセスをカウントしたくない場合は、
HideURL *.css HideURL favicon.ico
を追加しておく。
このコマンドをcronに登録しておくと自動的に更新される。具体的には
#! /bin/bash # update access statistics for the web site if [ -s /var/log/httpd/access_log ] ; then /usr/bin/webalizer -c /etc/webalizer/webalizer.conf fi exit 0
このようなテキストファイルを作って、/etc/cron.hourlyなどのフォルダに入れておく。この際に、ファイルの実行権限に注意のこと。
最終更新日