■ログ解析
Webサーバを設置した場合、ログを解析したいものです。個人的には見た目が綺麗でwebanalyzerよりも詳細に解析できるawstatsがおすすめです。これはyumからインストール可能です。
# yum install awstats # rpm -qa | grep awstats awstats-7.1-1.el6.rf.noarch |
まずapache用の設定ファイルが組み込まれますので少し編集します。
# vi /etc/httpd/conf.d/awstats.conf
Alias /awstats/icon/ /var/www/awstats/icon/
Alias /awstats/ /var/www/awstats/
<Directory /var/www/awstats/>
DirectoryIndex awstats.pl
Options ExecCGI
order deny,allow
deny from all
allow from all
</Directory>
|
そしてhttpdを再起動します。
# /etc/rc.d/init.d/httpd restart |
サンプルのファイルがインストールされますのでそれをコピーして編集します。また編集する箇所は以下です。
# cd /etc/awstats # cp awstats.model.conf awstats.unix-power.net.conf # vi awstats.unix-power.net.conf # サイト名を設定 SiteDomain="unix-power.net" # アクセス元の名前解決を行う DNSLookup=1 # 年間統計情報を出力出来るように許可する AllowFullYearView=3 # 日本語表示にする Lang="jp" |
xxxx.yyyyは自サイトのドメインに置き換えてください。そして以下のようにしてHTMLのログ解析ファイルを生成します。
# /var/www/awstats/awstats.pl -config=unix-power.net -update # /var/www/awstats/awstats.pl -config=unix-power.net -output \ -staticlink > /var/www/awstats/index.html |
ブラウザから次の画面が見れればOKです。
画像の「表示するレポート」の部分は実はそのままでは上記のように表示されません。
上記のように表示するにはawstats.plの以下の箇所を次のように編集します。
# vi /var/www/awstats/awstats.pl
9932行目
#$Message[5] $MonthNumLib{$MonthRequired} $YearRequired";
"$YearRequired $Message[6]".$MonthNumLib{$MonthRequired};
12611行目
# print( $MonthRequired eq 'all'
# ? "$Message[6] $YearRequired"
# : "$Message[5] "
# . $MonthNumLib{$MonthRequired}
# . " $YearRequired"
# );
print ($MonthRequired eq 'all'? \
"$YearRequired $Message[6]":"$YearRequired $Message[6]".$MonthNumLib{$MonthRequired});
|
これで再度以下を実行します。
# /var/www/awstats/awstats.pl -config=unix-power.net -update # /var/www/awstats/awstats.pl -config=unix-power.net -output \ -staticlink > /var/www/awstats/index.html |
■日本語文字化け対策
awstatsはそのままですと検索文字列の日本語が文字化けしてしまいます。これを回避するために以下の設定を行います。
# cpan Jcode
# vi /var/www/awstats/awstats.pl
21行目追加
use Jcode;
7796行目追加
sub DecodeEncodedString {
my $stringtodecode = shift;
$stringtodecode =~ tr/\+/ /s;
$stringtodecode =~ s/%([A-F0-9][A-F0-9])/pack("C", hex($1))/ieg;
$stringtodecode =~ s/["']//g;
Jcode::convert(\$stringtodecode, "utf8");
return $stringtodecode;
|
以上の処理で検索文字列も正常に日本語表示できます。あとはcronで定期的に更新されるよう定期実行します。
# vi /etc/cron.houry/00awstats #!/bin/bash if [ -f /var/log/httpd/access_log ] ; then # 下記はコメントアウト # exec /usr/bin/awstats_updateall.pl now -confdir="/etc" \ -awstatsprog="/var/www/awstats/awstats.pl" >/dev/null # 下記を追加 /var/www/awstats/awstats.pl -config=unix-power.net -update > /dev/null /var/www/awstats/awstats.pl -config=unix-power.net -output -staticlink \ > /var/www/awstats/index.html fi exit 0 |