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スクリプトの安定版リリースを行いました!
参考
今回のスクリプト作成にあたり、先人の知恵を大いに参考にさせて頂きました。
ありがとうございます。