AwstatsによるHTTPアクセスログ解析

アクセスログ解析ソフトのAwstatsでもっとも一般的に使われるApacheのログ解析方法に解説します。

なお、環境はCentOS-6を利用し、AwstatsはEPELリポジトリを利用します。

 

Awstatsのインストール

CentOS-6では提供されていないため、ここでは、EPELリポジトリを利用します。

 

EPELリポジトリの追加

EPELリポジトリを追加は、以下のコマンド行います。

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
rpm -ivh epel-release-6-5.noarch.rpm


以下のコマンドで読み込みます。

yum update

 

インストール

awstatsをインストールします。

yum install awstats

 

Awstats設定の準備

Apacheのログが、rotatelogsを利用し、1日置きに分隠されたログが出力されていると仮定します。

そのため、アクセスログはaccess.20080625.logのようなファイル名で出力されている物とします。

もし、ログのローテーションを行ってない場合には、その場合の方法も併記します。

Awstatsをインストールすると/etc/awstats/以下に設定ファイルが作成されます。

この中の、awstats.model.confを流用して、自身で必要な設定ファイルを作成します。

今回は、unixlife.jpドメインのログ解析を行う設定をして行きたいと思います。

まず、awstats.model.confをコピーしてawstats.unixlife.confを作成します。

cp awstats.model.conf awstats.unixlife.conf

コピーが終わったら、awstats.unixlife.confを編集していきます。

 

 

Awstats定義ファイルの設定

awstats.unixlife.confを作成しましたので、この内容を編集して行きます。

非常に長い設定ファイルですが、変更が必要な箇所は多くありません。

ここでは、最低限編集が必要と思われる箇所のみ列挙します。

awstats.unixlife.conf

*ローテーションしてないアクセスログの指定方法
LogFile="/var/log/apache/access.log"
1日ごとのログで、解析は1時間毎に行う場合
LogFile="/var/log/apache/access.%YYYY%MM%DD-1.log"
1日ごとのログで、解析は1日1回前日分を行う場合
LogFile="/var/log/apache/access.%YYYY%MM%DD-24.log" 

解析するドメインを指定
SiteDomain="unixlife.jp"

解析結果に含めないIPを指定
SkipHosts="127.0.0.1 192.168.1.1" 

年間レポートの生成
AllowFullYearView=3

 

 

Apacheの設定

Awstats用のアクセス解析ページは、/var/www/awstats/以下に作成されます。

Awstats用のApacheの設定ファイルは、Awstatsインストール時に、/etc/httpd/conf.d/以下にawstats.confが作成されます。

ここでは、awstats.confでアクセス制限などを行います。

#
# Directives to add to your Apache conf file to allow use of AWStats as a CGI.
# Note that path "/usr/share/awstats/" must reflect your AWStats install path.
#
Alias /awstatsclasses "/usr/share/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/share/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/share/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/share/awstats/wwwroot/cgi-bin/"

#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/share/awstats/wwwroot">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from 127.0.0.1 192.168.110.0/24 ローカルアドレスからのみアクセス可能
</Directory>
# Additional Perl modules
<IfModule mod_env.c>
    SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
 </IfModule>

 

これで、Apache側の設定は終了です。Apacheに新しい設定を読み込ませましょう。

/etc/init.d/apache graceful

 


cronによる定時解析

Awstatsで定時的にアクセスログ解析を行うには、cronを設定するが良いでしょう。

例えば、awstats.unixlife.conf設定ファイルの指定で、1時間毎に解析をする設定をした場合は、以下のようにcronを設定します。

01  */1  *  *  *  /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=unixlife -update

これで、1時間毎にログ解析が行われます。

 

 

ログ解析結果ページの閲覧

ログ解析結果のページは以下のURLを指定する事により閲覧可能です。

ここでは、ログ解析サーバのIPアドレスが、192.168.1.1と仮定します。

http://192.168.1.1/awstats/awstats.pl?config=unixlife

 

 

Awstatsでの携帯アクセス解析

CentOS標準パッケージのAwstatsでは、日本の携帯キャリアはアクセス解析に含まれません。

そのため、ここでは、携帯への対応を行います。

browsers_phone.pmへ携帯キャリアを追記

/var/www/awstats/lib/browsers_phone.pm

@BrowsersSearchIDOrder = (
# Japan Mobile Phone
'vodafone',
'j-phone',
'emobile',
'softbank',
'kddi',
.
.
.
%BrowsersHashIDLib = (
# Japan Mobile Phone
'vodafone', 'SoftBank(Vodafone)',
'j-phone', 'SoftBank(J-Phone)',
'emobile',,'eMobile',
'softbank', 'SoftBank',
'docomo', 'DoCoMo',
'kddi', 'au',
.
.
.

 

robots.pmの編集

Docomoからのアクセスがロボットに登録されてるので、/var/www/awstats/lib/robots.pmにある、docomoの行を全てコメントにする。

 

解析用設定ファイルの変更

先ほど作成したawstats.unixlife.confを利用します。

LevelForBrowsersDetection=allphones

これで、携帯キャリアからのアクセスも解析されるはずです。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">