ESC

ログ解析ソフト“awstats 6.0日本語版”設置。

何度も設置しているawstatsですが、やっぱり“あ〜かいぶ。”として残しておこうかと思います。
こ〜いう、備忘録を書くのが、とてもヘタクソなのですが、すてきなヒトをちょっと見習って、自分も書いてみようかと思います。
【参照過去ログ】

そして初めてコレ(↓続きを読む)をつかいます!


(1)環境を用意する
awstatsの導入には、以下のものが必要です。

  • Perl(5.8以上が推奨らしいけど、5.6.1でも、今のところ問題なく動いてます)
  • Jcode.pm(日本語化には必要)
  • apacheapacheのログを利用するので、これがないと始まらない)


(2)設置
では、設置していきます。
ユーザが利用するディレクトリは以下のようにしてあります。
というのも、我がサーバは、あたし以外にも利用者がいまして、レンタルサーバ的に使っているのです。

cgi-bin
html(ここから下が公開ディレクトリ)

この2つのディレクトリは利用者のためのディレクトリなので、awstatsはこの2つの中に入れるのはやめました。
利用するのはあたしじゃないけど、設置するのはあたしなので、誤って、2つのディレクトリの中のファイルを消したりしたらイヤだからです。
ってなわけで、

cgi-bin
html(ここから下が公開ディレクトリ)
awstats←これを追加して、この中にawstatsを設置します。

owner・groupは、そのユーザに合わせます。


awstatsは何度か導入済みなので、ソースはすでに、自分用にアーカイブを作成してあります。
ソースの入手等々は、こちらで詳しくご覧いただけます。
た〜にんぐ☆ぽいんと:AWStatsの構築
要は、入手したソースを展開したまま使用するより、awstats用にまとめた方が、後々ラクチンなのです。


(3)httpd.confの設定を追加する。
ログフォーマットをcombinedにしておきます。
commonだと、読み込んでくれません。
すでに、combinedで、ローテーションさせた過去ログがある場合は、それを取り込ませることも可能です。
過去ログを取り込む方法はこちら
あたしの場合は、バーチャルホストごとにログをわけていて、combinedに設定してあるので、今回は修正なしです。


VirtualHostディレクティブに以下の2行を追加して、httpdをrestart。

<VirtualHost *>
〜〜〜省略〜〜〜
ScriptAlias /awstats/ "/UsrDirPass/awstats/"
Alias /icon/ "/UsrDirPass/awstats/icon/"
〜〜〜省略〜〜〜
</VirtualHost *>

cgi-binは利用者用のScriptAliasです。
なので、awstatsも別途ScripAliasを指定してあげないといけません。
それから、iconはawstatsの中に入れたままだと、画像を表示できないので、公開ディレクトリの下にあるように、Aliasを貼ります。


(4)awstats.confの設定を修正

LogFile
ログファイルの場所を指定します。
LogFile="/var/log/httpd/xxxxx/yyy_access_log"*1
SiteDomain
ログを解析するドメイン名を指定します。
SiteDomain="yyy.mydomain.TLD"
DirData
解析用データを格納する場所を指定します。ひとつにまとめたいので、awstatsの下にディレクトリを作成して、そこに置くようにしています。
DirData="/UsrDirPass/awstats/access"
↑./accessとするとうまくいかなかったので、フルパスで指定しました。【1/25修正】
DirCgi
awstats.plが動くディレクトリを設定します。今回はcgi-binの下に設置していないので、修正が必要です。(デフォルトはcgi-bin)
DirCgi="/awstats" ←httpd.confの設定と関係があります。
DirIcons
awstatsの画面を表示するときに必要な画像の数々が入ったiconディレクトリのパスを指定します。実際にiconのある場所が/awstats/iconでも、今回はそれだと表示されませんので次のように指定します。
DirIcons="/icon" ←こちらもhttpd.confで見えるように設定しています。
AllowAccessFromWebToFollowingIPAddresses
アクセスを許可するIPアドレスを指定します。自分のIP、もしくはLAN内からしかアクセスさせないようにします。
AllowAccessFromWebToFollowingIPAddresses="xxx.xxx.xxx"
SkipHosts
アクセスしても、解析しないホストを指定します。たとえば、自分のIPアドレスとか、会社のIPアドレスとか、解析に必要ないホストです。あとは、LANですかね。
SkipHosts="REGEX[^192\.168\.] xxx.xxx.xxx"
SkipFiles
アクセスしても、解析しないファイルを指定します。awstats以下のファイルとか、cgi-bin以下等。
SkipFiles="REGEX[^\/cgi-bin\/.*] REGEX[^\/awstats\/.*] REGEX[^*\.gif$]"
NotPageList
ここで、解析に含めたくないファイルの拡張子を指定できます。たとえば、画像ファイルへのアクセスなど。デフォルトで、画像ファイルやJavascript等の拡張子が指定されているので、そのまんまでいいと思います。

こんなカンジでしょうか。
他は基本的にデフォルトでいいと思います。
これで、一旦awstatsのページを確認してみましょう。

http://mydomainname/awstats/awstats.pl

ページが確認できればOKです。


(5)ログを読み込ませる。

perl 任意のパス/awstats.pl -config=任意のパス/awstats.conf -update

初回は非常に時間がかかる場合があります。
一度陥った現象で、解析用データの作成にあまりに時間がかかったため、sshのセッションが途中で切れてしまい、データを作れないということがありました。
そ〜ゆうサーバの場合はPuttyというツールで回避できます。
回避方法はこちら

Update for config "./awstats.conf"
With data in log file "/var/log/httpd/xxxxx/yyy_access_log"...
Warning: HostAliases parameter is not defined, awstats choose "yyy.mydomain.TLD localhost 127.0.0.1".
Phase 1 : First bypass old records, searching new record...
Direct access after last updated record successfull (after line xxx)
Phase 2 : Now process new records (Flush history on disk after xxxxx hosts)...
Jumped lines in file: xxx
Found xxx old records.
Parsed lines in file: xxx
Found xxx dropped records,
Found x corrupted records,
Found x old records,
Found xx new qualified records.

こんな結果が出れば成功です。
それ以外の場合は、なにやら不成功ですので、もう一回順番に試してみましょう。-configをconfigureなどと、打ち間違えたりすることもありました…。
さて、成功したら、awstatasのページを見てみましょう。
棒グラフやらなんやら表示されてると思います。


(6)cronで定期的実行をさせる。
一日一回、24時に解析用データをアップデートします。
awstatsを設置してるユーザになって、

# corntab -e
0 0 * * * /awstats.plのある場所までフルパス/awstats.pl -config=/awstats.confのある場所までフルパス/awstats.conf -update > /dev/null*2


cronの実行も確認できれば、おしまいです。


【参考URL】

あ〜、疲れた。



おまけ:過去ログを取り込む方法
すでにログのフォーマットがcombinedで、過去ログ(例えばaccess_log.1とか)がある場合。
折角あるんだから、取り込みたい!と思います。
その場合は、awstats.confのLogFileで過去ログのパスを指定して、

perl 任意のパス/awstats.pl -config=任意のパス/awstats.conf -update

これを繰り返します。
アナログな手法ですが、確実です。
過去ログを取り込み終わったら、また、アクセスログのパスに戻しておくことを忘れないように!



おまけ:sshのセッションが一定時間で切れてしまうサーバの場合
Puttyについてはこちらを参照してください。


Puttyを手に入れたら、接続設定のところでKeepAliveを1以上にします。
そうすると、パケットを送信し続ける状態になるので、接続が切れることはありません。
わざわざ接続を切る設定のサーバに対して、パケットを送信し続けるのはどうかと思うので、こ〜ゆう場合以外は、おすすめはしませんが、接続が切れてしまっては仕方がないので、過去に二度ほど、この手法をとりました。
各自の判断で行なって下さいm(_ _)m
あたしは、二度ともクライアントの許可を得てからやりました。

*1:バーチャルホスト毎にことなるので

*2:フルパスにしとけば、一番問題ないかなぁ…と