Awstatsのインストールと設定
AwstatsはWEBサーバーのログを集計し、集計結果をグラフィカルなHTMLで表示してくれるツールです。
Apacheのログ解析にはAnalogを使用していたのですが、Awstatsの方が
サイトの滞在時間レポートや、どのページから入ってどのページから出て行ったかを知ることができる等、
Analogに比べて出力レポートが充実しています。また、メールサーバーのログも解析する事ができます。
ただ、AnalogがC言語で作られているのに対し、AwstatsはPerlで作られているため、解析速度が遅くなってしまいます。
このデメリットに目をつぶれれば、今のところAwstatsはお勧めです。
Awstatsのアップグレードする場合は、Awstatsをemergeした後に、Apache等の設定を
/usr/share/webapps/awstats/6.3/以下を参照するように変更してください。
Awstatsのインストール
Awstatsをインストールします。
root $ emerge -uv awstats
インストールされたAwstatsのバージョンは6.3でした。
Awstatsの設定
/etc/awstats/awstats.model.conf を元に設定ファイル /etc/awstats.www.gside.org.conf を作成します。
root $ cp /etc/awstats.model.conf /etc/awstats.www.gside.org.conf
root $ chmod u+w /etc/awstats/awstats.www.gside.org.conf
/etc/awstats.www.gside.org.conf の主な編集箇所は以下になります。
LogFile="/var/log/apache2/access_log_gside"
SiteDomain="www.gside.org"
DNSLookup=1
DirData="/var/www/localhost/htdocs/awstats/awstats_temp"
DirCgi="/awstats"
DirIcons="/awstatsicons"
SkipHosts="192.168.1.1"
Lang="jp"
上記の
DirCgiと
DirDataで指定したディレクトリを作成します。
例ではドキュメントルートを /var/www/localhost/htdocs としています。
root $ mkdir /var/www/localhost/htdocs/awstats
root $ mkdir /var/www/localhost/htdocs/awstats/awstats_temp
Awstatsが動作するためのApacheの設定
AwstatsはCGIとして動作するので、ApacheでAwstatsが動作するための設定を行う必要があります。
このために、/etc/apache2/conf/apache2.conf を編集します。
Alias /awstatsclasses "/usr/share/webapps/awstats/6.3/htdocs/classes/"
Alias /awstatscss "/usr/share/webapps/awstats/6.3/htdocs/css/"
Alias /awstatsicons "/usr/share/webapps/awstats/6.3/htdocs/icon/"
ScriptAlias /awstats/ "/usr/share/webapps/awstats/6.3/hostroot/cgi-bin/"
<Directory "/usr/share/webapps/awstats/6.3/htdocs">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/usr/share/webapps/awstats/6.3/hostroot/">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ApacheがAwstatsが必要とする各ファイルにアクセスできるように、権限の設定を行います。
root $ chmod 755 /usr/share/webapps/awstats/6.3/htdocs/icon
root $ chmod 755 /usr/share/webapps/awstats/6.3/hostroot/cgi-bin/lang
root $ chmod 755 /usr/share/webapps/awstats/6.3/hostroot/cgi-bin/lib
root $ chmod 755 /usr/share/webapps/awstats/6.3/hostroot/cgi-bin/plugins
Awstatsの実行を行います。
root $ /usr/bin/awstats_updateall.pl now
-awstatsprog=/usr/share/webapps/awstats/6.3/hostroot/cgi-bin/awstats.pl
-configdir=/etc/awstats/ > /dev/null
※実際の画面では一行で記述しています
これでブラウザに http://[ホスト名]/awstats/awstats.pl にアクセスするとグラフィカルな解析結果を
見る事ができます。
Logrotateによる解析結果漏れの防止
ApacheのログをLogrotateにより運用していると、最後にAwstatsによる解析が行われた時間から、
Logrotateが行われた時間までのログが、解析結果から漏れてしまいます。
これを防ぐには、Logrotateが動作する直前にAwstatsによる解析を行う様にすれば解決します。
Logrotateはローテーションを行う直前に実行するコマンドを設定する事ができます。
Logrotateの設定ファイル /etc/logrotate.conf もしくは /etc/logrotate.d 配下のファイルを以下の様に編集する事で実現できます。
具体的には prerotate〜endscript の間に awstats の実行コマンドを記述します。
Logrotateの詳しい設定方法は本サイトLogrotateのインストールと設定
/var/log/apache2/access_log_hoge {
missingok
monthly
postrotate
/usr/bin/killall -HUP apache2
endscript
postrotate
/usr/bin/awstats_updateall.pl now\
-awstatsprog=/usr/share/webapps/awstats/6.3/hostroot/cgi-bin/awstats.pl\
-configdir=/etc/awstats/ > /dev/null\
}