Squid Graphは、手元のSquidプロキシサーバのaccess.logファイルに記録されたログを基にして、キャッシュのヒット数やキャッシュのみで処理されたリクエストの比率といった、プロキシアクセスおよび転送に関する統計情報をWebページ形式にて表示するためのPerlスクリプトである。こうしたSquid Graphの機能は、Squidの設定が最適化されているかという確認をする際に役立つはずだ。
Squidのキャッシュが有効に機能しているかのその他の確認法としては、Simple Network Management Protocol(SNMP)のサポート設定をSquidに施した上で、Multi Router Traffic Grapher(MRTG)やCactiを用いたSquidのモニタリングをSNMPを介して実行するという手法も存在する。これに対して本稿で解説するSquid Graphの有すアドバンテージは、セットアップの手順が非常に簡単で、SNMPに関する知識や他のサーバをインストールする負担が不要というものだが、求める情報を取得するにあたって、Webページ形式ではないコマンドライン操作をある程度必要とするのが欠点と言えるだろう。
Squid Graphを使用するにあたっては、事前にPerlおよびperl-GDをインストールしておかなくてはならない。Squid Graph本体のインストールについては、必要であれば/usr/localディレクトリにコピーしておいてもいいが、あるいはより単純に./squid-graphというコマンド指定で起動させるというオプションも存在する。
Squid Graphを実行する際には、対象となるログ情報を記録したSquidのaccess.logファイルだけでなく、その内容をグラフィカル化した統計情報をWebページとして書き出すディレクトリ名も指定しておかなくてはならない。またこれからaccess.logファイルを新規に作成してログ情報を蓄積させていくという場合は、下記の手順によるsquid.confファイルの変更も必要となる。
# vi /etc/squid/squid.conf ... access_log /var/log/squid/access.log squid ...
下記のサンプルコマンドは、過去24時間分におけるSquidサーバの統計情報を表示せよという指定に相当する。その実行結果として/tmp/squid-graphからindex.htmlが読み込まれると、1つ目に掲載したスクリーンショットのような画面が表示されるはずだ。
$ mkdir -p /tmp/squid-graph $ ./squid-graph --output-dir=/tmp/squid-graph < /var/log/squid/access.log
|
| Squid Graph |
この実行例の場合、スクリーンショット右側にある統計値を見てみるとリクエストの約45%はキャッシュにて処理されているので、個々のリクエストに対するSquidキャッシュの利用率はまずまず良好と評していいだろう。ただしTCP転送(TCP Transfers)に関しては、キャッシュにて処理されるトラフィックが20%程度にしか達していないので、より大型のファイルもキャッシュさせるよう設定を変更した方がよいかもしれない。また、ブルーのラインで示されたトータル転送量(Total Transfers)のグラフにおける22:00過ぎの突発的な急増(スパイク)からは、このタイムフレームにて一部のファイルがキャッシュで対応できなかったであろう可能性が示唆される。これに該当する候補として考えられるのは、以前にダウンロードされたことのないファイルか(そうしたものはキャッシュでの処理は不可能)、Squidによりキャッシュされなかったファイルだ。そして実際にどちらのケースに属していたかを確認するには、access.logを調べるしかない。
