マイ忘備録

フィリピン関連のメモ、ワードプレス関連のメモなど

AWStatsを使ってみた

ApacheなどのWebサーバのログ解析ツールではこんなのが有名らしい。

レンタルサーバーのログ解析ツール(アクセス解析ツール)比較

Analog
Webalizer
AWStats(Advanced Web Statistics)
Access Analyzer
Piwik


何となくAWStatsというのを使ってみた。
環境 CentOS7.6 + Apache2.4.6

公式サイト
AWStats - Open Source Log File Analyzer for advanced statistics (GNU GPL)

インストール、初期設定

主にここを参考にインストール、設定をすすめた
Setup AWStats (Apache Log Analyzer) on CentOS, RHEL & Fedora

[root@xxx ~]# yum install awstats

設定ファイル /etc/awstats/xxx.conf

/etc/awstats 以下にawstatsの設定ファイルがあるので、コピーして自分のファイルを1つ作る。
ドメイン名がhogehoge.comならawstats.hogehoge.com.conf
awstats.model.conf以外のconfファイルは、awstats_updateall.pl などで呼び出されてしまうので使わないconfファイルは消すか、名前を.conf以外にしておく。

編集した内容

LogFile="/var/log/httpd/access_log"
SiteDomain="hogehoge.com"
DNSLookup=1
LoadPlugin="tooltips"

ログ統計の作成 awstats.pl

awstats.pl に上で編集したconfファイルを指定して実行すると、awstatsの統計ファイルが作成される。一回目はログ全部読むのでけっこう時間がかかる。2回目以降は早い。

[root@xxx ~]# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=hogehoge.com -update

統計ファイルは以下のディレクトリに作成される
/var/lib/awstats

Apache側のアクセス制限等設定

以下のようなURLでブラウザからawstatにアクセスできる
https://hogehoge.com/awstats/awstats.pl?config=hogehoge.com

デフォルトのままだとブラウザからのアクセスは拒否される。こんなメッセージが表示される↓

Forbidden

You don't have permission to access /awstats/awstats.pl on this server.

awstat.confを編集して、とりあえず誰でもアクセスできるようにする。
以下のファイルを編集。以下を追加。Allow from allはApache2.2系の書き方でダメみたい。AWStatsの記事をググってると古い記事が多く、アクセスできなくてしばらくはまった。
/etc/httpd/conf.d/awstat.conf

<Directory "/usr/share/awstats/wwwroot">
    Options None
    AllowOverride None
    Require all granted
   ...

Access Control - Apache HTTP Server Version 2.4


apacheを再起動すると、

[root@xxx ~]# systemctl restart httpd

アクセスできたぜ!
f:id:tagayshin:20190515203533p:plain

全公開だと何なので後でDigest認証かけといた。

定期実行

以下が作られており、デフォルト1時間おきに、統計ファイルが更新されるようになっている
/etc/cron.hourly/awstat

古いログも読ませる

何か順番?とかもあるようなので、一度以下の場所にある統計データを削除
/var/lib/awstats/xxx.txt

logresolvemerge.pl というツールを使って、apacheaccess_logからはじまる名前のファイルを結合。その後、結合したファイルを指定してawstats.plを実行。処理にけっこう時間がかかる。

/usr/share/awstats/tools/logresolvemerge.pl /var/log/httpd/access_log* > /root/merged_access_log
/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config="hogehoge.com" -LogFile="/root/merged_access_log"

AWStats Documentation - Other tools

awstats.pl の引数の-LogFileでlogresolvemerge.plを渡す方法↓もあるみたいだけど、これは何かうまく動かなかったので、上のように一度logresolvemerge.plでログを結合してから、次にawstats.pl を実行した。
/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config="hogehoge.com" -LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/httpd/access_log* |"

ログローテーション

apacheアクセスログがローテーションすると、ログの取りこぼしがおこる。ローテーションをトリガーに、awstats.plを起動するようにしておく
以下のファイルに、prerotateでawstats.plを呼び出すように追記。(ちゃんと動いてるのか自信がない)
/etc/logrotate.d/http

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    prerotate
        /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=hogehoge.com -update
    endscript
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

Apacheのアクセス制限で少しはまって、古いログを読み込ませるのでも少しはまって、何だかんだ半日ぐらいかかった。
何か読み返してみても分かりにくいが、まぁいいか、忘備録ということで。




[PR]アンヘレスで愛人