Focuslightを動かす

グラフ表示ツール[GrowthForecast](http://kazeburo.github.io/GrowthForecast/)のRuby実装版である[Focuslight](https://github.com/tagomoris/focuslight)がリリースされたということで、さっそく使ってみました。
# インストール
FocuslightのREADMEのInstallationに従って作業を行います。
## 環境
手元にあったvagrantのboxを適当に選んで、そこにFocuslightを構築しました。
* Ubuntu 13.04

## 事前準備
FocuslightはRuby2.0以上を必要とするとのことなので、Ruby2.0以上の環境を用意しておきます。
加えて、`RRDTool and its dependencies must be installed before installing Focuslight.`
とのことなので、[RRDTool](http://oss.oetiker.ch/rrdtool)をインストールしておきます。

```
$ sudo apt-get install rrdtool
```

## Focuslightを手に入れる

```
$ git clone https://github.com/tagomoris/focuslight.git
$ cd focuslight
```

## 依存ライブラリのインストール
READMEに従って次はbundle installを行うのですが、OSのバージョンなどによってはライブラリが足りず失敗してしまいます。
足りないと言われる度にライブラリを追加していけばokです。

参考までに構築中に追加でインストールしたライブラリを記載します。

```
$ sudo apt-get install librrd-ruby librrd4 librrd-dev

// Debianの場合このあたりも別途入れてあげないといけないかもしれません
$ sudo apt-get install libsqlite3-dev sqlite3 libsqlite3-ruby libdbd-sqlite3-ruby
```
これで、bundle installが成功するはずです。

## 起動
bundle installに成功したあとは

```
$ bundle exec rake init
$ bundle exec foreman start
15:10:30 web.1     | started with pid 9819
15:10:30 worker1.1 | started with pid 9820
15:10:30 worker2.1 | started with pid 9822
15:10:31 web.1     | I, [2014-02-19T15:10:31.315950 #9821]  INFO -- : listening on addr=0.0.0.0:5125 fd=9
15:10:31 web.1     | I, [2014-02-19T15:10:31.316631 #9821]  INFO -- : worker=0 spawning...
15:10:31 web.1     | I, [2014-02-19T15:10:31.317653 #9821]  INFO -- : master process ready
15:10:31 web.1     | I, [2014-02-19T15:10:31.318822 #9838]  INFO -- : worker=0 spawned pid=9838
15:10:31 web.1     | I, [2014-02-19T15:10:31.319418 #9838]  INFO -- : Refreshing Gem list
15:10:31 web.1     | I, [2014-02-19T15:10:31.449224 #9838]  INFO -- : worker=0 ready
```
こうしたメッセージが出力されればok。
さっそくブラウザでhttp://localhost:5125/ にアクセスします。
![Screenshot-4.png](https://qiita-image-store.s3.amazonaws.com/0/34421/494d9f4b-790b-9b03-695d-323aa06ed588.png)
こんな感じの画面が表示されるはずです。

## データを投げてみる
Focuslightは、`http://localhost:5125/api/serviceA/metricsX/data1` にcurlでPOSTしてあげると、グラフができます。(serviceA, metricsX, data1をお好きなものに変更してください)

```
$ curl -F number=10 http://localhost:5125/api/socialgame/member/register
{"error":0,"data":{"id":1,"service_name":"socialgame","section_name":"member","graph_name":"register","number":10, ~略~ }}
```
このような出力が返ってきたら成功です。http://localhost:5125/ にアクセスすると、グラフができているはずです。
![cf0362f743f11fde48d14fc5a2d7722d.png](https://qiita-image-store.s3.amazonaws.com/0/34421/f49f4dcb-5ba4-1ffa-c030-797b8738a67c.png)


以上でFocuslightの構築が完了しました。さくっとできました、すごいです。

# dstatからの情報を描画してみる。
[Fluentd](https://github.com/fluent/fluentd)からFocuslightにデータを流し込む場合、GrowthForecast向けのpluginである[fluent-plugin-growthforecast](https://github.com/tagomoris/fluent-plugin-growthforecast)をそのまま利用できます！

[こちら](http://qiita.com/mzp/items/f5f39499ca0079d123f4)の記事に習って、[fluent-plugin-dstat](https://github.com/shun0102/fluent-plugin-dstat)と、[fluent-plugin-map](https://github.com/tomity/fluent-plugin-map)、fluent-plugin-growthforecastの3つのpluginを使ってメモリ使用量などを描画してみます。

td-agent.confは、参考にさせていただいた記事の`gfapi_url`を変更したのみなので、割愛させていただきます。

```
gfapi_url http://localhost:5125/api/
```

td-agent.confを書き換えた後、`sudo /etc/init.d/td-agent restart`してしばらくすると...
![Screenshot-7.png](https://qiita-image-store.s3.amazonaws.com/0/34421/c6af5221-4099-aa50-03c8-95e76433210c.png)

メモリ使用量のグラフができました！

# まとめ
Focuslightをインストールして、fluentdにてデータを流しこみ、グラフ描画まで行いました。GrowthForecastをこれまで触ったことがありませんでしたが、さくっと構築できるのはとても魅力的だと思います。