3.1 FreeBSD 11.2-RELEASE - apache24 - ログ解析ツール - awstats - インストール

 
3.1.1 概要・ports
3.1.2 apache 定義ファイルの編集
3.1.3 awstats.conf の編集
3.1.4 ログファイルの連結
3.1.5 解析ファイルの作成

3.1.1 ports

 2018年7月13日現在のバージョンは 7.7.1 です。  割と頻繁にバージョンアップが行われているようです。  バージョン 7.5.1 以降、表示がヘンになっちゃってて、修正版が出るまでの対応を記述していましたが。  現在はその状況は改善されているようです。

cd /usr/ports/www/awstats/
make
make install
 オプションはデフォルトのままにしています。  インストール時のメッセージの末尾

Installing awstats-7.7_1,1...
*********************************************************************

Use /usr/local/www/awstats/tools/awstats_configure.pl to set up your
hosts.

To activate awstats in your webserver, see the example files for
apache: /usr/local/share/doc/awstats/httpd_conf
nginx:  /usr/local/share/doc/awstats/nginx/

*********************************************************************
 今はコンフィガースクリプトやコンフィグレーションファイルの例が提供されているんですね。

3.1.2 apache 定義ファイルの編集

 正常にインストールできていれば、ウェブサーバのドキュメントルートが /usr/local/www とすれば

/usr/local/www/awstats
 というディレクトリが作成されているはずです。  apache の定義ファイルを作成してアクセスできるようにします。  定義ファイルを

/usr/local/etc/apache24/Includes/awstats.conf
 として、提供されているものをコピーします。

cp /usr/local/share/doc/awstats/httpd_conf /usr/local/etc/apache24/Includes/awstats.conf
 コピーした直後の状態です。

#
# Content of this file, with correct values, can be automatically added to
# your Apache server by using the AWStats configure.pl tool.
#


# If using Windows and Perl ActiveStat, this is to enable Perl script as CGI.
#ScriptInterpreterSource registry


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


#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/www/awstats">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
 24行目以降に手を入れます。

<Directory "/usr/local/www/awstats/">
    Options None
    AllowOverride None
    Require all granted
</Directory>
 28行目は、実際にはアクセス制限をかけるようにします。

3.1.3 awstats.conf の編集


/usr/local/www/awstats/cgi-bin/awstats.model.conf
 というコンフィグレーションファイルのサンプルが用意されています。  これを awstats.ドメイン名.conf に rename するなり copy するなりして編集します。  編集する箇所は、環境、好みによって異なりますが、わたしがおすすめ、および実際に手を入れたのは以下の通りです。

#
LogFile="/var/log/httpd/mylog.log"
 実際のログファイル名を絶対パスで記述します。

#
SiteDomain=""
 ドメイン名を記述します。

#
HostAliases="localhost 127.0.0.1 REGEX[myserver\.com$]"
 ウェブサーバのドメイン名を記述します。

#
AllowFullYearView=2
 デフォルトの設定で年間で見ることができます。  3 に設定すると操作して、別の年を見ることができるようになります。

#
SkipHosts=""
 localhost をはじめ、自分のクライアントPCのドメイン名や IP アドレスを記述することで、ログ内の自分からのアクセスを統計上から除外します。

#
SkipFiles=""
 統計に含めたくないファイル名を記述します。  HostAliases・SkipHosts・SkipFiles 等は REGEX 準拠の正規表現を使用することが可能です。

/awstats

3.1.4 ログファイルの連結

 awstats.ドメイン名.conf にログファイル名を記述しますが、awstats は analog と違ってログファイル名をワイルドカード表記して複数のログファイルを一度に読み込ませることはできません。  newsyslog 等で月間、週間等でログファイルをローテーションしている場合は、複数ファイルになっていますが、これをすべて解析したい場合は、ログファイルを連結します。  連結したログファイルの出力先は、デフォルトで awstats のワークフォルダが /var/lib/awstats となっているのでそこに出力します。  前節のコンフィグレーションファイルの設定で、アクセス解析に不要なホスト名を設定できると記述していますが、これは、アクセスホストのリストからはずすのみで、そのホストからアクセスしたページへのカウント等はそのままカウントされてしまいます。  これを解消するには、ログファイルからそのホストの履歴を消してしまう必要があります。  面倒になったので、ログファイルのマージとスキップホストの行を消す Perl Script を書きました。
accesslog.pl
 上記をダウンロードして使用する際は、拡張子が txt になっていますので、pl 等に書き換えて、実行権限をつけてください。それと先頭の方にログファイルのディレクトリやファイル名、スキップホストの文字列を定義する箇所がありますので、それを適切に書き換えれば、awstats 用のログファイルを作成することができるはずです。  文字コードが EUC になっていますので、適切なコードに変えてください。  尚、タブストップは4カラムで書いておりますので、8タブが好きな方は、そこも変換してください。

3.1.5 解析ファイルの作成

 ログファイル連結して準備が整ったので、解析ファイルを出力します。

> /usr/local/bin/perl /usr/local/www/awstats/cgi-bin/awstats.pl -update -config=awstats.ドメイン名.conf
Create/Update database for config "/usr/local/www/awstats/cgi-bin/awstats.sing.ne.jp.conf" by AWStats version 7.7 (build 20180105)
From data in log file "/var/log/httpd-access.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 910428
 Found 19 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 37094 corrupted records,
 Found 0 old records,
 Found 873315 new qualified records.
 2行目以降は、awstats からのログの一例です。初回は恐ろしく時間がかかります。  結果がうまく作成されれば

http://ドメイン名/awstats/awstats.pl?config=awstats.ドメイン名.conf
 にアクセスすることでログの解析結果を見ることができるようになります。  あとはこれらの一連の作業をスクリプト化して crontab に記述することで、定期的にログ解析することができるようになります。