Yohoushi

Yohoushi loves GrowthForecast

View project onGitHub

About Yohoushi

Yohoushi は GrowthForecast と連携し動作するグラフツールです。GrowthForecastをバックエンドとして利用し、Yohoushi は統合グラフビューワとして機能します。

Yohoushi では GrowthForecast では実現できなかった様々なビューでグラフを確認できます。例えば、グラフを大きくしたり、from/toの日時指定でグラフを確認したり、サムネイルサイズでたくさんあるグラフを一覧で見たりすることできます。またGrowthForecastではグラフ階層が3階層固定でしたがYohoushiではこの制約を無くすことも可能です。

また複数のGrowthForecastを集約してユーザに見せることが可能です。GrowthForecastサーバの台数を増やすことでシステムを容易にスケールできるようになります。また、たとえば各拠点に散らばっていたGrowthForecastサーバを1つのビューで見せることも可能です。

         +----------+                 +---+
         |          |            +--> |GF1| <--- post a number 
Ops ---> | Yohoushi | <----------+    +---+
         |          |            |    +---+
         +----------+            +--> |GF2| <--- post a number
                                      +---+

また、既存のGrowthForecastのシステムに変更を加えることなくYohoushiをお試しできます。この場合は、たとえばcronなどで動作しているGrowthForecastへ値を登録するスクリプトを変更する必要はありません。動作イメージを短時間で把握するにはこちらのスクリーンキャストがお勧めです。

Installation

(1) Requirements

あらかじめ以下のソフトウェアをインストールしておいてください。

  1. Ruby (>=2.0.0)
  2. MySQL or Sqlite3 (>=3.6.16)
  3. GrowthForecast (>=0.62)

(2) Install Yohoushi

yohoushi/releases からアーカイブファイルをダウンロード、展開し、youhoushi ディレクトリで以下のコマンドを実行してください。 数分かかることがあります。

$ bin/bundle

(3) Configure Application

GrowthForecast サーバのURLを config/application.yml に登録してください。 デフォルトでは localhost:5125 の GrowthForecast サーバに接続します。

# config/application.yml
multiforecast:
  mapping:
    '':     'http://localhost:5125'

複数の GrowthForecast サーバへ分散させる場合は以下のようにマッピングルールを記述します。

# config/application.yml
multiforecast:
  mapping:
    'app1/':     'http://host.to.growthforecast1:5125'
    'app2/':     'http://host.to.growthforecast2:5125'

この例では、名前が app1/ から始まるグラフは host.to.growthforecast1:5125 に、app2/ から始まるグラフは host.to.growthforecast2:5125 に分散されます。

(4) Configure Database

config/database.yml にMySQLの設定を記述し、次のコマンドを実行してください。

$ bin/rake db:create db:migrate

デフォルトでは localhost:3306 の MySQL に root ユーザ、パスワードなしで接続し、yohoushi という名前のデータベースを作成します。

# config/database.yml
  adapter: mysql2
  database: yohoushi
  pool: 5
  timeout: 5000
  username: root
  password: 
  host: localhost
  port: 3306

Support SQLite

MySQLではなくSQLiteを使いたい場合は以下を実行してください。

Gemfileを修正してください。

# Gemfile
gem 'sqlite3'  # 行頭の#を削除する
# gem 'mysql2' # コメントアウトする

次のコマンドを実行してください。

$ cp config/database-sqlite.yml config/database.yml
$ bin/bundle
$ bin/rake db:create db:migrate

(5) Run

以下のコマンドで Yohoushi が起動します。

$ bin/yohoushi

ウェブブラウザでhttp://localhost:4804にアクセスしてみてください!Yohoushiの画面を確認できます。

デーモン化するには -d オプションを付けて起動してください。

$ bin/yohoushi -d

デーモン化したYohoushiを停止するには以下を実行してください。

$ bin/yohoushi stop

(6) Check

Yohoushi の動作確認をするために GrowthForecast の URLに対してPOST リクエストを送り、グラフを作成してみましょう。この例では GrowthForecast が localhost:5125 で起動しているものとします。

$ curl -d 'number=10' http://localhost:5125/api/service1/section1/graph1

Yohoushi worker の GrowthForecast との同期処理が走って(最大1分待ちます) Yohoushi にグラフが表示されれば成功です。

For more information

Yohoushiに4階層以上のグラフを登録するには Yohoushi API か multiforecast-client を使ってデータをPOSTしてください。

Yohoushi API には次のようにデータを POST します。mapping ルールに従って、適切な GrowthForecast に分散してくれます。

$ curl -d 'number=10' http://yohoushi:4804/api/graphs/sec1/sec2/sec3/graph1

ただし、Yohoushi API を多用すると Yohoushi がボトルネックになる可能性があるため、mapping ルールに従って直接 GrowthForecast にデータを POST してくれる multiforecast-client の使用を推奨します。