LogGraph

[download] [more document]

GDを使用したアクセスログのグラフ表示プログラム

概 要

perlモジュール「GD::Graph」を使った実例です。MTプラグインの「MultiCounterX」が出力するログを集計して、 グラフ化するCGIを作ってみました。画面下のほうにあるフォームで、 年と月を選んでボタンを押すと1ヶ月の人数推移をグラフ表示します。 最近はほんとに色々なAgentがあるようで。出来る限り網羅したつもりです。でもエッジとかChromeになってる気がする。。そのうち直します。
MultiCounterXプラグイン」と連携できます。具体的には、イメージカウンターをクリックするとログイン画面が出て、ログインすると本プログラムを呼び出す事ができます。

Plack::APP::CGIBinを使用してこのグラフ表示CGIをそのままPSGIプログラムとして起動した場合と、そうでない場合を比較できるようにしました。黄色のボタンを押すとPlack::APP::CGIBinベース、水色のボタンが通常のCGIです。簡易的な測定だとグラフの表示速度は1.7倍ぐらいです。

さらにPlack::APP::CGIBinではなく、フレームワークとしてCGI::PSGI(CGI.pmベースのラップミドル)を使用し、Plack::Builderを用いてマルチアプリケーションのフレームワークも作ってみました。3つのパターンでの棒グラフ表示速度をWireSharkで測定した結果は下記。http OKレスポンスパケットの時刻からGETリクエストパケットの時刻を単純に引いた時間です。
 (1)Plack::APP::CGIBinベース ---- 1.11063秒
 (2)CGI::PSGIベース ------------- 1.05934秒
 (3)CGI.pmベース ---------------- 2.16949秒
(3)はアプリケーションがメモリ常駐していないのですから遅いのは当たり前として、(2)が(1)より70msほど速いのは予想以上でした。非力なサーバー環境なので顕著に出たとも考えられます。

Agent毎の月別訪問者数グラフ

ページ選択:

西暦年選択:

月選択:  

●棒・折れ線複合グラフ
Plack::APP::CGIBinベース:
 
CGI::PSGIベース:
 
CGI.pmベース:
 

●円グラフ
Plack::APP::CGIBinベース:
 
CGI::PSGIベース:
 
CGI.pmベース:
 

更新日: