Y-Ken Studio

新しもの好きのデータエンジニアが四方山話をお届けします。

GrowthForecastをinit.dを用いて自動起動する方法

グラフツールであるGrowthForecastはFluentdと組み合わせた利用で一躍有名となり、自分にとっても欠かせない存在となりつつあります。 ところがOS起動時の自動起動としたくても、公式サイトには以下の記述のみでした。

起動コマンド
$ growthforecast.pl --data-dir /home/user/growthforecast
http://kazeburo.github.io/GrowthForecast/

なんというか、ストイックすぎる・・・!
もちろん、start-growthforecast.sh的な起動スクリプトを作成し、/etc/rc.d/rc.localあたりから呼び出せば動きはしますが、自分以外の人が触るサーバだったりすると運用が引き継ぎづらいですよね。

そんな事がきっかけに、GrowthForecastのinitsciprtを作りましたレポートをお届けします。

要件

他の人にも任せやすい構成は何だろうと考えて書き出しました。

  • 管理しやすいディレクトリ /usr/local/growthforecastを使用したい
    単に私が/usr/local/好きなだけかもしれません。
  • 再起動時にも自動的に起ち上がるよう、init.d経由で起動したい
    chkconfigで設定できると楽ですよね。
  • 起動ユーザはrootではなく、個別ユーザとしたい
    ポートを開けるプログラムの権限は最小の方が良いです。
  • OS標準のperlに依存しない、perlbrewを使用したい
    yumで管理されるperlは古いので・・・。
  • 設定は/etc/sysconfig/growthforecastで管理したい
    /etc/growthforecast.conf でも良いのですが、シンプルにsysconfigでよく使われる形式を使います。

GrowthForecastの起動スクリプト

欲しい物が無ければ作るしか無い。という訳で作りました!

growthforecast-quick-install - It is a repository to install GrowthForecast with one step!

なお、GrowthForecastはProclet という簡単なsupervisor・プロセス管理モジュールを利用しているそうです。つまり、いわゆるSupervisorなどを使わずとも、従来からあるinit.d形式で起ち上げるだけで良さそうです。(違ってたら教えて下さい)

使用例

chkconfig対応はもちろん、2重起動防止機能も備えています。

# /etc/init.d/growthforecast
Usage: growthforecast  {start|stop|restart}

# /etc/init.d/growthforecast start
growthforecast already started.

# /etc/init.d/growthforecast stop
Stopping growthforecast:                                   [  OK  ]

# /etc/init.d/growthforecast start
Starting growthforecast:                                   [  OK  ]

# /etc/init.d/growthforecast restart
Stopping growthforecast:                                   [  OK  ]
Starting growthforecast:                                   [  OK  ]

# chkconfig --list|grep growth
growthforecast  0:off  1:off  2:on   3:on   4:on   5:on   6:off

MySQL利用時の設定ファイル

GrowthForecastは無指定の場合にはsqliteを利用しますが、MySQLを利用することも出来ます。
以下に、MySQL利用時の設定ファイル例を紹介します。

$ cat /etc/sysconfig/growthforecast
USER="gf"
HOST="0.0.0.0"
PORT="5125"
FRONT_PROXY="10.0.0.0/8"
MYSQL_USER="growthforecast"
MYSQL_PASSWORD="password"
OPTIONS="--data-dir /usr/local/growthforecast/GrowthForecast/data ¥
  --with-mysql 'dbi:mysql:growthforecast;hostname=localhost'"
PERLBREW_ROOT="/usr/local/growthforecast"
PERLBREW_HOME=$PERLBREW_ROOT/.perlbrew
LOG_FILE="/var/log/growthforecast.log"
  • FRONT_PROXYには、上位にロードバランサがある時に指定します。
    直接接続の場合には、0.0.0.0を指定します。

今後の展望

コマンド一発のGrowthForecast簡単インストールスクリプトを整備し、公開する予定です。
https://github.com/y-ken/growthforecast-quick-install

2013年5月28日追記
setup及びuninstallスクリプトの安定版リリースを行いました!

参考

今回のスクリプト作成にあたり、先人の知恵を大いに参考にさせて頂きました。
ありがとうございます。