■ログ解析
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 |