Hello Guest    ログイン
top > Linux > Apache > AWStatsでApacheのログ解析(AWStats 6.95版)

AWStatsでApacheのログ解析(AWStats 6.95版)

カテゴリー: Apache| 公開: 2010/10/17 | コメント(0)

前に書いたものを少し修正。過去のログをすべてHTMLにせずに、CGIを使う方法にした。
AWStatsをFreeBSDで動かすのawstats695t_jpn.zipを使用。

AWStatsをインストールするディレクトリ /usr/local/awstats
データベースファイルを保存するディレクトリ(DirData) /usr/local/awstats/data
解析結果を出力するディレクトリ /var/www/awstats

インストール

awstats695t_jpn.zipをダウンロードして展開する。

# cd /usr/local/
# mkdir awstats
# cd awstats
# wget http://hobbit.ddo.jp/html/awstats695t_jpn.zip
# unzip awstats695t_jpn.zip
# rm awstats695t_jpn.zip

過去ログを保存するディレクトリの作成。

# mkdir data

awstats.plの改行コードの変更と実行権限の付加。

# cd /usr/local/awstats/wwwroot/cgi-bin
# mv awstats.pl awstats.pl.orig
# tr -d '\r'  < awstats.pl.orig > awstats.pl
# chmod u+x awstats.pl

Perlのパスの変更。

# diff -uw awstats.pl.orig awstats.pl
--- awstats.pl.orig     2009-11-27 15:56:27.000000000 +0900
+++ awstats.pl  2010-10-17 00:32:09.000000000 +0900
@@ -1,4 +1,3 @@
-#!c:/perl/bin/perl
 #!/usr/bin/perl
 #------------------------------------------------------------------------------
 # Free realtime web server logfile analyzer to show advanced web statistics.

Perlパッケージの追加。
HTML::Entities::Numbered(awstats.plで必要)とUnicode::Japanese(utf8_decode.plで必要)をCPANでインストール。

# perl -MCPAN -e shell
cpan> install HTML::Entities::Numbered
cpan> install Unicode::Japanese

設定

awstats.model.confをコピーして設定する。

# cd /usr/local/awstats/wwwroot/cgi-bin
# cp awstats.model.conf awstats.parlia.net.conf
# vi awstats.parlia.net.conf

LogFile="/tmp/awstats_access.parlia.net.log"
SiteDomain="www.parlia.net"
HostAliases="REGEX[parlia\.net$]"
DirData="/usr/local/awstats/data"
DirCgi="."
DirIcons="./icon"
DirJs="./js"
DirCss="./css"
Lang="jp"
StyleSheet="./css/awstats_bw.css"

解析結果を出力するディレクトリを作成して必要なファイルをコピーする。

# mkdir /var/www/awstats
# cd /usr/local/awstats/wwwroot
# cp -r css icon js /var/www/awstats/
# cd cgi-bin/
# cp -r awstats.pl lang lib plugins /var/www/awstats/

データベースファイルの更新

ログをすべて連結して/tmp/access.logに書き込む。

# ls /var/log/apache2/access.log*
/var/log/apache2/access.log        /var/log/apache2/access.log.33.gz
/var/log/apache2/access.log.1      /var/log/apache2/access.log.34.gz
/var/log/apache2/access.log.10.gz  /var/log/apache2/access.log.35.gz
/var/log/apache2/access.log.11.gz  /var/log/apache2/access.log.36.gz
/var/log/apache2/access.log.12.gz  /var/log/apache2/access.log.37.gz
/var/log/apache2/access.log.13.gz  /var/log/apache2/access.log.38.gz
/var/log/apache2/access.log.14.gz  /var/log/apache2/access.log.39.gz
/var/log/apache2/access.log.15.gz  /var/log/apache2/access.log.4.gz
/var/log/apache2/access.log.16.gz  /var/log/apache2/access.log.40.gz
/var/log/apache2/access.log.17.gz  /var/log/apache2/access.log.41.gz
/var/log/apache2/access.log.18.gz  /var/log/apache2/access.log.42.gz
/var/log/apache2/access.log.19.gz  /var/log/apache2/access.log.43.gz
/var/log/apache2/access.log.2.gz   /var/log/apache2/access.log.44.gz
/var/log/apache2/access.log.20.gz  /var/log/apache2/access.log.45.gz
/var/log/apache2/access.log.21.gz  /var/log/apache2/access.log.46.gz
/var/log/apache2/access.log.22.gz  /var/log/apache2/access.log.47.gz
/var/log/apache2/access.log.23.gz  /var/log/apache2/access.log.48.gz
/var/log/apache2/access.log.24.gz  /var/log/apache2/access.log.49.gz
/var/log/apache2/access.log.25.gz  /var/log/apache2/access.log.5.gz
/var/log/apache2/access.log.26.gz  /var/log/apache2/access.log.50.gz
/var/log/apache2/access.log.27.gz  /var/log/apache2/access.log.51.gz
/var/log/apache2/access.log.28.gz  /var/log/apache2/access.log.52.gz
/var/log/apache2/access.log.29.gz  /var/log/apache2/access.log.6.gz
/var/log/apache2/access.log.3.gz   /var/log/apache2/access.log.7.gz
/var/log/apache2/access.log.30.gz  /var/log/apache2/access.log.8.gz
/var/log/apache2/access.log.31.gz  /var/log/apache2/access.log.9.gz
/var/log/apache2/access.log.32.gz
# echo -n > /tmp/access.log
# for log in `ls -tr /var/log/apache2/access.log.*.gz`
> do
> gzip -d < $log >> /tmp/access.log
> done
# cat /var/log/apache2/access.log.1 >> /tmp/access.log

utf8_decode.plでログの検索語をUTF-8にする。awstats_host.plにホスト名を書き込んでから実行する。

# cd /usr/local/awstats/tools/
# echo '$Myhost = "parlia\.net";' > awstats_host.pl
# perl utf8_decode.pl < /tmp/access.log > /tmp/awstats_access.parlia.net.log

データベースファイルの更新。

# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=parlia.net -update

解析結果の表示

スクリプト作成。

# cat awstats_cron.sh

#!/bin/bash

AWSTATSDIR=/usr/local/awstats

awstats_update() {
  SITE=$1
  HTMLDIR=$2
  APACHELOG=$3
  TEMPLOG=$4

  cd $AWSTATSDIR/tools
  echo "\$Myhost = \"$SITE\";" | sed 's/\./\\./g' > awstats_host.pl
  perl utf8_decode.pl < $APACHELOG.1 > $TEMPLOG
  perl utf8_decode.pl < $APACHELOG >> $TEMPLOG
  $AWSTATSDIR/wwwroot/cgi-bin/awstats.pl -config=$SITE -update
  $AWSTATSDIR/wwwroot/cgi-bin/awstats.pl -config=$SITE -output > $HTMLDIR/index_$SITE.html
}

awstats_update parlia.net \
  /var/www/awstats \
  /var/log/apache2/access.log \
  /tmp/awstats_access.parlia.net.log

実行

# ./awstats_cron.sh

cronに登録。

# vi /etc/crontab

1 0 * * * root /root/awstats_cron.sh > /dev/null

トラックバックURL

コメント送信

メールアドレスが公開されたり他で使用されたりすることはありません。