Squid ログ解析ツール

Cache-Stats紹介          サーバー構築  Linux
グラフィカルにログを見たい!


プロキシサーバを快適に立てると、その効果を知りたいってのが人情よ。前にアクセスログをカラフルな表にして見せてもらったのを覚えています。すべて私の原点は

                       「自分でも作ってみたい!」


が始まりでした。
えっ、どういう風に見えるのか知りたい?どれではスクリーンショットをお見せしましょう。


                                    なんか、よく分らないですネェ。チャートを作ったばかりだから、1時間のアクセス状況しか棒が伸びていないですネェ。

  まっ、とにかく 作法をお知らせいたしましょう。











材料


  1. Linux でプロキシサーバー Squidが動いていること。 logファイの位置ははdefaultのままです。
  2. cache-stats-1.4.tar.gzをダウンロードする。このファイルはあちこちの大学にありました。どこでもいいと思います。どこにダウンロードするか?って、適当でよいです。私はDLしたものは /usr/localに入れています。
料理方法


  1. ダウンロードしたcache-stats-1.4.tar.gzをgzipで解凍
  2. % gzip -d cache-stats-1.4.tar.gz | tar xvf -
    % cd cache-stats-1.4/
  3. cache-stats-1.4のディレクトリには パールスクリプトが主でいろいろな実行ファイルが入っています。このファイルであのhtmlで見られるグラフィカルなページを作るわけですが、これらのファイルを全部 /usr/local/binに移しちゃいました。こんなことしなくても動けば良いのですが、私はよく分らないまま移しました。
  4. 実は どんなページを参照したかと言うと、

    <http://www.menet.ed.jp/menet/system/freebsd/squid.html>
    <http://www.scitec.kobe-u.ac.jp/Computer/Admin/memo/cache-stats.shtml>
    <http://ccs.cla.kobe-u.ac.jp/Jouhou/96/hayashi/sec5.htm>
    <http://moriya.s1.xrea.com/linux/squid_cache-status.html>

    まぁ、squid cache stats で検索すると引っかかると思います。これらのページは専門の方がやっているので、私のページより確かでしょう。 (-_-;)


  5. この/usr/local/binに移したファイルですが、Perlファイルで有るにも関わらず、実行権がついていませんので、

    chmod 755 *.pl *.sh   とやったのでした。
  6. そうしていちいちPerlファイルの中身を見ると、


    「やっぱなぁーー」

    PerlのPATHが/usr/local/bin でした。うちの環境は /usr/local/binであった試しがありません。
    %which perl とやってご自分の環境を確かめてください。
    Perlファイルの全部のPATHを変えました。

  7. 次は 一番知っておかねばならない squidstats.shの編集です。このファイルで実際にどのファイルを読みに行って、どこに何を出力するのか記述するので PATHが違うとHTMLファイルができません。
    いじったところは以下の通りです。

    今いるところ /usr/local/bin
    vi squidstats.sh

    HOST=192.168.*.*  #自分のマシンのIP アドレスをいれた。

    TOPN=50

    LOGDIR=/usr/local/squid/logs  #squidのlogがおいてあるところを指定する。

    BINDIR=/usr/local/bin  # ほら、さっきのPerl ファイルやら、 この squidststats.shがおいてあるところ

    WWWDIR=/www/squid #squidのグラフィカルなログHTMLが見えるところ

    PIDFILE=/usr/local/squid/logs/squid.pid

    GZIP=/usr/bin/gzip   # このへんはちゃんと見たほうが良いです。私の環境では違っていました。 %which gzipで探してね。

    FIND=/usr/bin/find  # 上に同じ

    RM=/bin/rm      #上に同じ

  8. あとね。画像ファイルを持ってこないといけないわけね。私はここではまったの。さっきのcache-statsを解凍したディレクトリにimgフォルダが作られているの。それを WWWDIRに同じimgフォルダとしてコピーしておくこと。
    access-summary.plっていうファイルがあって、これが実際にHTMLファイルを生成するものだけれど、そこも少し変えたわね。

    vi access-summery.pl

    $ImgDir=' /www/html/squid/img' # /www/html っていうのは webサーバーのLinux上の位置です。そこに作ったsquidディレクトリにファイル出力して、イメージファイルはその下に置くっていうことです。

    $Url ='http://192.168.*.*/squid'; #プライベートIP指定です。
ご試食



 さぁ、食しましょう! まずは・・

  1. %cd /usr/local/bin
  2. %./squidstats.sh
  3. #画面に プロセスをkillして
    access-extract.plを動かしているよぉ・・
    20030302.htmlを今作っていますぅ。
    access-summery.plを動かしています・・

    などなどの表示がでて終わる。

  4. 本当にファイルができているのだろーか?

    ブラウザを立ち上げる。
    http://192.168.*.*/squid を開く・・ さぁ、ファイルはできているだろうか?

    あったぁ、 20030302.html ファイル!

    ・・・・とそうは簡単に初めからできたわけではありません。まずは、ディレクトリの中は

    Index of /squid
    Parent Directory
    img/

    しかなかったのです。そこでやったのは


    • PerlファイルのPATHを調べたり、各ファイルの参照ファイルのPATHを調べたことですね。いつもそうですが大体、それが原因で動かないことが多いです。 


    まぁ、こんなやっているうちに時間が経ってしまいましたね。またまた アクセスログチャートを作っちゃおうかな・・

    % ./squidstats.sh  ・・とね。
    よし、ブラウザで確認ね。
    ほら時間がたったのでもう一つ棒ができてるわ。




















タイマー crontab  




ご飯だって電気釜で炊くのが当たり前。そんな自分でいちいち調理は大変よね。これを何とか 自動化しましょうね。

おなじみ crontabです。

/etc/crontab ファイルを開いてと・・

# 毎日 夜中の11時 55分に動いて ログチャートHTMLを作るのはどう?

55 23 * * * root /usr/local/bin/squidstats.sh


さあてとこれで。一仕事 終りね。   ( ^^) _U~~    2003年3月2日 作成