GrowthForecastが便利な件について

定期的に処理を実行するものがあって、その結果や中間結果を可視化したいなーと思うときがあるわけです。表示したい値は簡単に出せますが、それを見やすい形で出すのってけっこう面倒なものです。ログファイルをgrepしろやーはちょっと嫌です。グラフ表示する場合はCactiあたりが有名だと思いますが、グラフの追加に手間がかかるのがツライのです。とりあえずサクッと表示したいのです。

噂によるとkazeburoさんのGrowthForecastというものが便利という事なのでさっそく試してみました。

今回cpanmも初めて入れました。これも便利です。

まずはcpanmのインストール。Fedora17くらいだとyumにあります。CentOSだと無かったので手動で入れます。

cd ~/
mkdir bin && cd bin
curl -LOk http://xrl.us/cpanm
chmod +x cpanm

環境変数の設定。みんなのBLOGを見ると~/perl5を指定するのがお作法みたいですが、home直下にlsで見えるディレクトリが増えるの嫌だったので適当に変更。

export PERL_CPANM_OPT="--local-lib=/home/libido/.perl5_extlib"
export PERL5LIB=/home/libido/.perl5_extlib/lib/perl5:$PERL5LIB
export PATH="/home/libido/.perl5_extlib/bin:$PATH";

RRDToolのインストール

wget http://search.cpan.org/CPAN/authors/id/G/GF/GFUJI/Alien-RRDtool-0.03.tar.gz
cpanm Alien-RRDtool-0.03.tar.gz

GrowthForecastのインストール

git clone git://github.com/kazeburo/GrowthForecast.git
cd GrowthForecast
cpanm --installdeps .

GrowthForecastの起動

# ForeGroundで起動
perl ./growthforecast.pl
# BackGroundで起動する場合はこんな感じ?
perl ./growthforecast.pl > /home/libido/log/growthforecast/gf.log 2>&1 &

後は以下のようにHTTPのPOSTで値を送りつけます。実際はURLのservice_nameとsection_nameとgraph_nameの部分をそれっぽい名前で指定してあげます。
これだけです。
事前にグラフの設定とかは要りません。POSTすると勝手に作ってくれます。
パラメータのmodeは、count, gauge(省略するとこれになる), modifiedを指定できます。numberが送りつける実際の値です。

$ curl -X POST -F number=10 -F mode=count "https://tamsvr03:5125/api/service_name/section_name/graph_name"
{
  "data": {
    "adjust": "*",
    "adjustval": "1",
    "color": "#9933cc",
    "created_at": "2012/06/05 17:06:10",
    "description": "",
    "gmode": "gauge",
    "graph_name": "graph_name",
    "id": 31,
    "llimit": -1000000000,
    "md5": "c16a5320fa475530d9583c34fd356ef5",
    "meta": "",
    "mode": "count",
    "number": 10,
    "section_name": "section_name",
    "service_name": "service_name",
    "sllimit": -100000,
    "sort": 0,
    "stype": "AREA",
    "sulimit": 100000,
    "type": "AREA",
    "ulimit": 1000000000,
    "unit": "",
    "updated_at": "2012/06/05 17:06:10"
  },
  "error": 0
}

これでブラウザから見えるようになります。↓こんな感じ。クローラーのログを可視化してみました。一部ぼかしてあります。

綺麗な構成としては、ログファイルをFluentで~みたいになるのかもしれませんが、今回はプログラムが小さかったのでクローラーが定期的にGrowthForecastに直接投げるようにしました。

APIの注意点としては、numberは整数じゃないとダメです。floatはNG。
ちなみに、時間を指定(後から集計して○時のデータはこれだぜーみたいな)してグラフを描画したい場合は、HRForecast というものがあって、そっちを使うと良いみたいです。

インストールも、使い方も簡単なので、とりあえずさくっと見えるようにする場合にすごく使えるツールです。

参考にしたページ
http://blog.nomadscafe.jp/2011/12/growthforecast.html
http://d.hatena.ne.jp/oranie/20120517/1337225732
http://www.omakase.org/perl/cpanm.html

新しいサイトもよろしくお願いします!