Twitterに投稿 はてなブックマークに追加 Yahoo!ブックマークに追加 Google Bookmarksに追加

目次 >> Apache >> ログファイル

Webサーバの設定 - Apacheのログファイルの扱い

ログファイル

ログファイルの場所

標準では、アクセスログ、エラーログは、FC4では/var/log/httpd以下に、openSUSE 10.0に場合は/var/log/apache2以下に記録されます。ログファイルは、単にどこからアクセスしてきたかというアクセス情報以外に、起動失敗時や、phpなどがうまく動かないときの、解決の手がかりとなります。

wormをログに記録しない

既知のウォームのログは取るとログが非常に長くなってしまい、ほかの肝心のログが埋もれてしまう。下記の設定をすると、いくつかのウォームのログは記録されなくなる。

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内からのアクセスログは別に取る設定

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

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などのフォルダに入れておく。この際に、ファイルの実行権限に注意のこと。

最終更新日


本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて17.04、18.04のようにバージョン番号をつけて区別しています。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2014 Chikuma Engineering Co., Ltd. All Rights Reserved.