xrea に標準で用意されてる analog が生成したヤツでもいいんですけど、
いまいち見てて面白くないので、見た目的にインパクトのあるヤツを追求したいと。
さらに、手元に生ログも残しておきたい。
で、狙うは webalizer でのログ解析です。画面イメージは以下のような感じ。
UNIX 環境だと結構簡単に出来ることなんですけど、これに Windows 環境で挑戦します。
手元の Windows は XP Professional なので、それを例に。
日毎のヒット率グラフとその内訳 |
時間毎のヒット率グラフとその内訳 |
リンク元、ブラウザ名 |
まず xrea の管理画面を出して、生ログを保存する設定にしましょう。
話はそれからだ。
この設定をしておくことにより、
1日1回、明け方に前日の分のログが /log に保存されます。 保存時間はユーザによって違うと思うので、
FTPツールなんかでいつも何時頃に保存されてるのか、時間を確認するようにしましょう。
( /public_html の中にある log ではなくて、/public_html と同階層にある /log の方だということに注意 )
ファイル名は、自サイトのFQDNに .log が付いた感じになります。 ( ここのサイトのログは
/log/moriya.xrea.jp.log となっております )
この生ログは毎日同じファイルに上書きされてゆきます。 データが上書きされてしまう前に、自PCに取得しておきましょう。 自PCに取得する際に、他の日と区別できる、適当にわかりやすいファイル名を付けておくと良いでしょう。 例えば、今回は、 access-20021021.log といった感じのファイル名を付けることにします。 ファイル名の数字は、ログファイルが生成された 年(4桁)月(2桁)日(2桁) です。
毎日手動で取得していたのでは疲れてしまいますので、自動で取得するようにしましょう。
Perl 5.6 とか 5.8 とかを準備して、こいつにやらせます。
www.ActiveState.com 辺りで簡単にインストールできるヤツを拾ってくると良いでしょう。
そして、以下のようなスクリプトを作って動かします。動けばいい、という程度のシロモノなので、
各自動作を確認して次の手順へと臨みましょう。
#!/usr/bin/perl
use Net::FTP;
$ftp = Net::FTP->new('servername.xrea.com'); # FTP接続するサーバ名
$ftp->login('USERID', 'PASSWORD'); #FTP接続に使うユーザ名とパスワード
$logfilename1 = '/log/moriya.xrea.jp.log'; #サーバ上のログファイル名
$modtime = $ftp->mdtm( $logfilename1 ); #ファイルの更新時間を取得
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($modtime);
$year += 1900; $mon += 1;
$file1 = sprintf("access-%04d%02d%02d.log",$year,$mon,$mday); #自PCに保存するファイル名を生成
$ftp->get( $logfilename1 , $file1 );
$ftp->quit();
これを定期的に動かします。unix だと crontab -e ですが、Windows(NT/2000/XP) だと、 AT コマンドとか、
タスクスケジューラ等があります。 どうせ一度しか設定しないので、GUI でやっちゃいましょう。
コントロールパネル→タスク から スケジュールされたタスクを追加。 次へ次へと押しまくり、
作ったスクリプトを登録しましょう。適当に時間も指定しましょう。コレで毎日1ファイルが取得されることとなります。
webalizer の準備をしておきましょう。 windows 用で、日本語の通るバイナリが見あたらなかったのでとりあえず作ってみました。 こちら参照。 設定ファイルですが、これは Windows も unix も関係有りませんので、 google 等で 検索していいかんじに設定してください。
あとは、ftp でのファイル取得の所と同じように、毎日1回ログ取得後に webalizer が動くようにタスクスケジューラで設定すれば 目的は達成されます。
サーバから取得したログファイルは Apache のログなので、その他解析ツールにもそのまま喰わせることが出来ます。
Windows 付属の IIS のログ解析のツールなんかも使えます。
ただログを貯め込んで、毎日眺めてニヤニヤするのも良いでしょう。