前回に続いて第2弾、グラフ化ツールGrowthForecastをインストール

GrowthForecast(グロースフォーキャスト)はWebサーバとして動作して、WebAPI経由で受け取ったデータを元にグラフ化をしてくれるツールです。
「案ずるより産むが易し」言葉で説明するより、とにかくインストールして使ってみたほうが理解が早いと思います。
目次
GrowthForecastのインストール
GrowthForecastの起動用スクリプトを作成する
GrowthForecastの動作テスト
アクセス制限
GrowthForecastのインストール
rootユーザーでインストールする方法は「GrowthForecastの公式ページ」に解説されています。
一応外部に接するサービスなので、セキュリティの観点から今回は専用のユーザーを作成してインストールすることにします。
インストールに必要な各種ツールをインストール
まずは環境を整えるためのツールをインストールします。
# yum groupinstall "Development Tools" (省略) # yum install pkgconfig glib2-devel gettext libxml2-devel pango-devel cairo-devel (省略) # yum --enablerepo=epel install libyaml-devel (省略) # yum install *YAML* (省略)
cpanとcpanmをインストール
続いてcpanとcpanmをインストールします。
# yum install cpan Dependencies Resolved ==================================================================================== Package Arch Version Repository Size ==================================================================================== Installing: perl-CPAN x86_64 1.9402-136.el6 base 246 k Installing for dependencies: perl-Digest-SHA x86_64 1:5.47-136.el6 base 64 k Transaction Summary ==================================================================================== Install 2 Package(s) # cpan App::cpanminus (省略。沢山聞かれるが全てyesであるyを押してエンターで良い。) Installing /usr/local/share/perl5/App/cpanminus.pm Installing /usr/local/share/perl5/App/cpanminus/fatscript.pm Installing /usr/local/share/man/man1/cpanm.1 Installing /usr/local/share/man/man3/App::cpanminus.3pm Installing /usr/local/share/man/man3/App::cpanminus::fatscript.3pm Installing /usr/local/bin/cpanm Appending installation info to /usr/lib64/perl5/perllocal.pod MIYAGAWA/App-cpanminus-1.7004.tar.gz /usr/bin/make install -- OK
専用のユーザーの作成してスイッチします
# useradd growthforecast # passwd growthforecast # su - growthforecast
perlbrewのインストール
perlbrewとは複数のバージョンのperlをインストールし簡単に切り替えられるアプリケーション。
サーバで動作しているparlモジュールに手を加えること無くインストールすることができるので、気軽にテストすることができます。
perlbrewのインストール
$ curl -kL http://install.perlbrew.pl | bash
perlbrewの初期設定
$ echo 'source ~/perl5/perlbrew/etc/bashrc' >> ~/.bash_profile ← コマンドにパスを通す $ source ~/.bash_profile ← 書き込んだ設定を有効にする
インストール可能なPerlのバージョン調べる
# perlbrew available
perl-5.20.0
perl-5.18.2
perl-5.16.3
perl-5.14.4
perl-5.12.5
perl-5.10.1
perl-5.8.9
perl-5.6.2
perl5.005_04
perl5.004_05
perl5.003_07
今回は公式曰く安定版の中で一番新しいperl-5.20.0をインストールします。
$ perlbrew install perl-5.20.0
※インストールは10分以上かかります。テストを飛ばせば早くなりますが、グラフ化したデータを元にシリコンバレーでプレゼンをしている姿でも想像しながらコーヒーを飲んで待ちましょう。
正しくインストールされたか確認
「i」が付いているのがインストールされているバージョン。
$ perlbrew available
i perl-5.20.0
perl-5.18.2
perl-5.16.3
perl-5.14.4
perl-5.12.5
perl-5.10.1
perl-5.8.9
perl-5.6.2
perl5.005_04
perl5.004_05
perl5.003_07
インストールしたPerlにスイッチする
$ perlbrew switch perl-5.20.0
確認
$ perl -v
This is perl 5, version 20, subversion 0 (v5.20.0) built for x86_64-linux
無事にv5.20.0になっています。
GrowthForecastのインストール
rootユーザーに変更してvisudoコマンドを編集。作成したユーザーgrowthforecastでsodoを使える状態にします。
その後growthforecastユーザーに変更してGrowthForecastをインストールします。
sudoが使えるように変更
# su - # visudo root ALL=(ALL) ALL growthforecast ALL=(ALL) NOPASSWD: ALL ←この行を追加
ユーザーを再びgrowthforecastにしてsudoコマンドを利用してGrowthForecastをインストール
# su - growthforecast $ cpanm -n GrowthForecast (省略) Configuring Scope-Container-DBI-0.08 ... OK Building Scope-Container-DBI-0.08 ... OK Successfully installed Scope-Container-DBI-0.08 Building GrowthForecast-0.83 ... OK Successfully installed GrowthForecast-0.83 110 distributions installed
GrowthForecast用のディレクトリを作成
様々なユーザーのデータをグラフ化することを想定して「/usr/share/」にディレクトリを作成。
$ sudo mkdir /usr/share/growthforecast $ sudo chmod 757 /usr/share/growthforecast ← 権限変更
GrowthForecastの起動
$ growthforecast.pl --data-dir /usr/share/growthforecast
GrowthForecastで利用するポート開放
ポートの開放はそれぞれのiptablesの書式に合わせて設定してください。
iptables -A INPUT -p tcp --dport 5125 -j ACCEPT
サイトにアクセス
192.168.0.1の部分は自分のサイトのIPに合わせてください。
http://192.168.0.1:5125/
GrowthForecast終了する方法
以下のコマンドで確認し、プロセスを終了します。
# ps ax | grep growthforecast # pkill -KILL -f growthforecast
GrowthForecastの起動用スクリプトを作成する
上の設定で起動と終了はできるようになりましたが、サーバを再起動する度に手動で起動するのは面倒です。そこで起動スクリプトを作成します。
起動スクリプトの詳細は長くなるので解説しません。ごく一般的な設定になっているので、気になる方は調べてみてください。
ここで紹介する起動スクリプトは「https://github.com/hiro-su/gf-sample/blob/master/growthforecast」のものを元に作成しています。 この場を借りてお礼申し上げます。
rootユーザーに変更して/etc/rc.d/init.d/にファイルを作成します。
各種ディレクトリやユーザー名などはインストールした環境に合わせて調整してください。
# su - # vi /etc/rc.d/init.d/growthforecast
#!/bin/sh
# chkconfig: - 60 40
# description: GrowthForecast
export HOME=/home/growthforecast
source $HOME/perl5/perlbrew/etc/bashrc
perlbrew use perl-5.20.0
USER="growthforecast"
PID_FILE=/var/run/growthforecast.pid
LOG_FILE=/var/log/growthforecast.log
PSNAME="growthforecast.pl"
start() {
PID=`pgrep -fo "$PSNAME"`
if [ -z "$PID" ]; then
if [ -f $PID_FILE ]; then rm -f $PID_FILE; fi
else
echo "growthforecast already started."
fi
echo -n "Starting growthforecast: "
perl $HOME/perl5/perlbrew/perls/perl-5.20.0/bin/growthforecast.pl --data-dir /usr/share/growthforecast \
>>$LOG_FILE 2>&1 & echo $! > $PID_FILE
echo "done."
}
stop() {
PID=`pgrep -f "$PSNAME"`
if [ -z "$PID" ]; then
echo "growthforecast already stopped."
exit 0
fi
echo -n "Stopping growthforecast: "
rm -f $PID_FILE
pkill -TERM -f "$PSNAME"
echo "done."
}
status() {
PID=`pgrep -f "$PSNAME"`
if [ -z "$PID" ]; then
echo "growthforecast stopped."
else
echo "growthforecast already started."
fi
}
usage() {
echo "Usage: `basename $0` {start|stop|restart}"
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
usage
;;
esac
GrowthForecastの起動スクリプトへ実行権限付加
# chmod +x /etc/rc.d/init.d/growthforecast
起動スクリプトの動作チェック
# /etc/init.d/growthforecast
Usage: growthforecast {start|stop|restart}
# /etc/init.d/growthforecast stop ← 停止
# /etc/init.d/growthforecast start ← 起動
# /etc/init.d/growthforecast restart ← 再起動
GrowthForecastの自動起動を設定
# chkconfig --add growthforecast # chkconfig growthforecast on
以上でサーバが再起動した際に自動で起動するようになりました。
GrowthForecastの動作テスト
次の投稿でグラフ化を行いますが、とりあえずGrowthForecast単体で正しく動作するかテストを行います。
GrowthForecastはサーバとして動作して、POSTでデータを渡すとグラフを作ってくれます。
ためしにコマンドで以下のように打ってみてください。
# curl -F number=10 -F mode=count "http://127.0.0.1:5125/api/service_name/section_name/graph_name"
「number=10」はグラフの数値。「mode=count」は追加。という指定です。
URLの「service_name/section_name/graph_name」の部分は言葉のままの意味です。
modeには上書き「gauge」、追加「count」、前回と異なる数値の時だけ上書き更新「modified」があります。
それぞれのパラメータの詳細は公式ページのBasic Usageをご覧ください。
コマンドを打ったら「http://192.168.0.1:5125/」にアクセスします。(192.168.0.1の部分は自分のIPに合わせてください)
すると以下の様な表示が現れると思うので「section_name」をクリックしてグラフを表示してみてください。
作成したグラフを削除したい場合は「remove all graphs in ‘section_name’ section?」ボタンをクリックします。
以上でGrowthForecastの動作確認ができました。
アクセス制限
このままでは誰でもグラフにアクセスできてしまうのでアクセス規制をします。
BASIC認証をかけるか、IPを規制するかなど、環境に合わせて設定してください。
「ApacheのBasic認証でアクセス規制する方法」は以前の投稿でまとめました。
nginxでBASIC認証をかける方法はletsspeak’s diaryさんの「CentOSにGrowthForecastをいれて色々表示してみた」を参照してください。
個人的にはGrowthForecastを参照するIPが固定なので、iptablesで登録しました。
以上でGrowthForecastの解説は終了です。
cron等で定期的にデータを渡せば、サーバの状態を簡単にグラフ化することができることがわかったと思います。
ではdstatのログをGrowthForecastに渡すスクリプトを一から書く…。となると面倒です。
そんな時に便利なのが次に紹介するFluentdです。
次は「ビックデータ時代のログ収集管理ツールFluentdのインストールと使い方」を解説します。


fluentdと連動して集計処理を行うNorikraの導入方法
ビックデータ時代のログ収集管理ツールFluentdのインストールと使い方
Swatchでログを監視して、攻撃に合わせた対策を自動で実行する方法
td-agent2へアップデートする方法と、Dstat pluginが動作しない場合の対処法
fluentdのFilter Pluginsを使ってイベントを自在に操る方法
マスターパスワードを導入したFFFTPでパスワードを復号化する方法
phpMyAdminのバージョンアップに合わせて、初期設定と拡張機能の有効化










