ログ解析(Analog+ReportMagic)
ホームページのアクセス状況を知るために、Apache のログ解析を行います。
Apache のログ解析プログラムでは、Analog が有名です。
Analog の出力でも十分なのですが、その結果をより見やすく表示してくれるプログラムが ReportMagic です。
<ログ解析の流れ>
Apache |
|
Anarog |
|
ReportMagic |
|
ブラウザ |
ログファイル |
→ |
Apacheログファイルから
解析ファイルの出力 |
→ |
Analogの解析ファイルから
HTMLファイルの作成 |
→ |
ReportMagicが出力した
ファイルの表示 |
Analog と ReportMagic のインストールをレポートします。
Analogのインストール
いつものようにapt-getでインストールします。
# apt-get update
# apt-get install analog
特に問題なくインストールされます。
Analogの設定ファイルを変更します
ファイル名:/etc/analog.cfg
修正・追加内容 |
意 味 |
LOGFILE /var/log/apache2/access.log |
apacheのログを指定 |
OUTPUT COMPUTER |
出力ファイルをReportMagic用の形式で作成するように指定 |
OUTFILE ana_report.dat |
出力ファイルの名前を指定 |
LANGFILE /usr/share/analog/lang/jpe.lng |
言語の指定 |
HOSTNAME "alk.dip.jp" |
ホスト名の指定 |
ReportMagicのインストール
これも同じくapt-getでinstall
# apt-get install rmagic
rmagicの設定ファイルは、下記です。
/etc/rmagic/
インストール直後は、英語環境の設定になっています(これは、各自の環境で違うと思いますが)。
/usr/share/rmagic/lang/ja/ に日本語環境用の設定ファイルがあります。
これを、/etc/rmagic/ へコピーします。
コピーするファイル名
- cdata.ini
- lang.ini
- rdata.ini
- rmagic.ini
rmagic.iniに[graphs]セクションがあり、グラフィック表示に使用するフォントを指定する必要があります。
設定例では kochi-mincho.ttf をしているので、筆者もそれに習って 、kochi-mincho.ttf を使うことにします。
筆者のシステムでは、日本語を使用するつもりが無かったので、日本語フォントが入っていません。
kochi-mincho.ttfをインストールします。
# apt-get install ttf-kochi-mincho
[graphs]セクションのFontを下記のように変更します。
Font = /usr/share/fonts/truetype/kochi/kochi-mincho.ttf,14,14,14
ここで問題が!!!
実行させたところ、グラフィックの文字が正常に表示されていません。
色々調査した結果、GD(グラフィック関連ライブラリ)の文字処理の対象コードUTF-8になっているようです。
AnalogやRepotMagicはEUCコードで出力します。
何か方法があるのかも知れませんが、筆者はグラフィック関連には疎いので、文字化けは我慢することにしました。
文字化けを起こすのは、グラフィック内の文字だけなので大きな実害はなさそうです。
こんな場合の本来の対処方法をご存知の方は、教えてください。m(_~_)m
ここで、またまた問題が!!!
アクセスログの解析結果で、検索文字列の表示があります。
この文字列がURLエンコードされて表示されます。
検索エンジンは、検索文字をURLエンコードして取得しています。
この文字列が、そのままログの解析結果として表示されているのです。
どんな、検索文字で私のホームページにやってくるのか興味があります。
ここは、頑張ってURLデコードして表示することにチャレンジしました。
最初に提示した、ログ解析の流れの間にURLでコード換処理を入れます
<新しいログ解析の流れ>
Apache |
|
Analog |
|
URLデコード |
|
ReportMagic |
|
ブラウザ |
ログファイル |
→ |
Apacheログファイルから
解析ファイルの出力 |
→ |
Analogの出力ファイル
から検索文字列を探し
出しURLデコードする |
→ |
URLデコードさらたファイル
からHTMLファイルの作成 |
→ |
ReportMagicが出力
したファイルの表示 |
Analogが出力する解析結果ファイルの検索文字列の行は次のようなフォーマットになっています。
先頭が n の行を探し出し、URLデコードします。
URLデコードするために漢字コードの変換処理が必要です。
Perl用変換パッケージの使用の為 libunicode-japanese-perl をインストールします。
# apt-get install libunicode-japanese-perl
URLデコード部は次のように処理しました。
#!/usr/bin/perl |
|
use Unicode::Japanese qw(PurePerl); |
|
$in_file = 'ana_report.dat'; |
|
$out_file = 'report.dat'; |
|
$cvt_str = Unicode::Japanese->new( ); |
|
open(IN,"<$in_file"); |
|
open(OUT,">$out_file"); |
|
while($line = <IN>){ |
|
if($line =~ /^n\t/){ |
|
$line
=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
|
$cvt_str->set($line,'utf8'); |
パラメータに'auto'を指定すると変換に失敗することがありました |
$line
= $cvt_str->euc; |
|
} |
|
print OUT $line; |
|
} |
|
$cvt_str->set($line,'utf8') の'utf8'は、文字コードをutf8であると決め付けています。
しかし、検索エンジンによっては、ShiftJISであったりJISであったりと特定できません。
パラメータに自動判定用の auto を指定しての実験も行いましたが、結構、判定に失敗します。
Googleからこのサイトに来る人が多いようなので、検索文字コードは、とりあえず utf8 を対象にしました。
これで問題が多ければまた考えることにしよう(ヨッパ得意の問題の先送り 笑)
cronで定期的なログ解析の実行
cronで毎日4:30にログ解析が起動するように設定します。
<cronの設定方法>
PuTTYでログイン
crontab -eの実行
エディッタが起動するので、下記を入力
30 4 * * * /usr/local/〜〜〜.pl |
ログ結果
グラフを見ると文字化けしています。
ヨッパはとりあえず、無視します。
Analog+ReportMagicでのログ解析の他にも、素晴らしいログ解析ツールがあるようです。
筆者は、ログを解析してどうのこうのするつもりは、ありません。
さらに詳しい情報(解析結果)が欲しくなったとき、別のログ解析ツールにチャレンジしようかと考えています。
|