本日から募集開始のqpstudyには申し込まれましたか?
というわけで、GrowthForecastとWebService::Simpleで参加者数監視してみました。
GrowthForecastの紹介
GrowthForecastは、WebAPIで値を突っ込むだけで良い感じにRRDtoolベースのグラフをさくっと作ってくれるビジネスメトリクス監視ツールで、WebAPIへ突っ込む部分をやってくれるgrouthforecast-workerと組み合わせると、単に数字を表示するプログラムを用意するだけで今日から様々なメトリクスを監視できるようになります。詳しくはここら辺を参照してください。
GrowthForecast本体の導入は上記の記事にあるので省略します。今回は、さらに同じサーバで既にApacheが立っているので、バーチャルホストからProxyPassしています。
grouthforecast-workerも適当なディレクトリに放り込むだけでOKです。
ZusaarのAPIから参加者数を取得
イベント管理ツールZusaarはAPIを提供していて、GETパラメータで検索条件を指定すると、JSON形式でイベントの情報を取得することができます。
そこで、WebAPIへのアクセスをラップしてくれるWebService::Simpleを使ってこんな感じのスクリプトを用意しました。
#!/usr/bin/perl use strict; use warnings; use WebService::Simple; my $event_id = 210003; my $zusaar = WebService::Simple->new( base_url => 'http://www.zusaar.com/api/event/', response_parser => 'JSON', ); my $response = $zusaar->get( { event_id => $event_id } ); my $json = $response->parse_response(); my $accepted = $json->{event}[0]{accepted}; my $waiting = $json->{event}[0]{waiting}; print "accepted\t$accepted\n"; print "waiting\t$waiting\n";
これを、grouthforecast-workerのディレクトリ以下の、scripts/qpconf_120225/bulk_pizza のようなファイル名で保存して実行権限も与えます。試しに実行してみるとこんな感じで出力されるのを確認します。
accepted 61 waiting 0
今回は、単純な参加者数だけでなく補欠の人数も取得したいので、複数の数値をまとめてハンドリングしてくれるbulk更新機能を使っています。
growthforest-workerの設定
grouthforecast.plを編集して、GrowthForecast本体のURLを設定します。今回は同じサーバ上なので以下のようになります。
my $growthforecast_endpoint = 'http://127.0.0.1:5125/api';
また、起動スクリプトを用意します。これは個人的好みで用意していますが、crontabに直接書いても良いです。
#!/bin/sh cd /home/***/***/grouthforecast-worker /usr/bin/perl grouthforecast.pl scripts
まずは手で起動スクリプトを実行し、GrowthForecast側に値が送られるのを確認して問題が無ければcrontabに登録します。
*/5 * * * * /home/masa/gf/grouthforecast-worker/go.sh
これでもう全部終わりです。
グラフの整備 (複合グラフの作成)
このままだと、定員に間に合った参加者数と、溢れてしまった補欠者数が別のグラフになって不便なので、その二つを積み上げた複合グラフを作成します。
GrowthForecastを開き、右上の「複合グラフの追加」から設定画面に入ります。
- パス、説明を記入
- 合計値の表示:する
- 最初のデータ:積み上げの下側のグラフ、今回は参加者数(*_accepted)のグラフを選択し、タイプは塗りつぶしを選びます。
- 2番目以降のデータ:上に来るグラフを順に選びます、今回は補欠者数(*_waiting)を選択肢、タイプはこちらも塗りつぶしにして、追加ボタンを押して確定させます。
これで追加ボタンを押すと、参加者数と補欠者数が積み上げられたグラフが設定できました。
表示色
表示色が自動で選ばれたものになってイメージと違うかもしれません。それぞれの個別のグラフに設定されている色が複合グラフでも継承されるので、qpstudy_acceptedやqpstudy_waitingといった個別グラフの項目名のすぐ下にある「設定」を押して、グラフの色を指定してあげてください。