tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

growthforecast入れてみる

はじめに

fluentd(td-agent)でapacheアクセスログを解析してどーこーの一環で、解析結果をグラフ表示したいのでgrowthforecastを入れてみました。

fluentd × growthforecastの導入に関しては別記事で書く予定なのでここはいったん
growthforecast入れて表示できるところだけをメモメモ

参考記事

1.GrowthForecast を CentOS 6.3 にインストールして Supervisor で管理してみた
2.サイトのレスポンスタイムをリアルタイムでグラフ表示する方法 nginx → LTSV → Fluentd(td-agent) → GrowthForecast
3.GrouthForecast公式

社内のサーバに個人的に入れてみたかった経緯もあり、参考記事2のほうはインストールする環境もrootぽかったので
growthforecast用のユーザを作ってそこにインストールする形の記事1を主に参考にさせて頂きました!
ありがとうございますm(_ _)m

ではさっそく

あじぇんだ

1.RRDTool依存ライブラリのインストールインストール
2.growthforecastユーザ作成
3.perlbrewインストール
4.Perlbrew から Perlインストール
5.cpanmインストール
6.growthforecastインストール
7.ポートあける(iptables)
8.growthforecastの起動&動作確認&停止
9.補足

ほとんど参考にさせて頂いた記事のまんまできました。
つまづかなければ所要時間30分くらいかと思います

参考記事と同様ですが、これ以降コマンドはすべて
#…root
$…一般ユーザ(今回はgrowthforecastユーザ)
で行います

1.RRDTool依存ライブラリのインストールインストール

GrowthForecastに必要なRRDTool依存するライブラリをインストールします

# yum groupinstall "Development Tools"
# yum install pkgconfig glib2-devel gettext libxml2-devel pango-devel cairo-devel

2.growthforecastユーザ作成

Perlbrewを入れてgrowthforecastを動かすためのユーザを作成します

# useradd growthforecast
# passwd growthforecast ※適当なパスワードを入力。忘れないようにね
# ls -l /home
total 16
drwxr-xr-x.  3 root           wheel          4096 Jan 13 16:24 ./
dr-xr-xr-x. 26 root           wheel          4096 Dec 16 19:57 ../
drwx------  11 growthforecast growthforecast 4096 Jan 14 11:22 growthforecast/

3.perlbrewインストール

perlbrewは、erlのインストール管理ツールです。
複数のバージョンのperlをインストールし簡単に切り替えられます。
また、ユーザを切り替えてから行います。

※インストール
# su - growthforecast
$ curl -kL http://install.perlbrew.pl | bash

※確認
$ pwd
/home/growthforecast
$ ls -al ※結果一部省略
drwx------  6 growthforecast growthforecast 4096  Jan 13 16:41 2014 .
drwxr-xr-x. 3 root           wheel          4096  Jan 13 16:24 2014 ..
drwxrw----  3 growthforecast growthforecast 4096  Jan 13 16:41 2014 .pki
drwxrwxr-x  4 growthforecast growthforecast 4096  Jan 13 16:38 2014 .plenv
drwxrwxr-x  4 growthforecast growthforecast 4096  Jan 13 16:38 2014 .pyenv
drwxrwxr-x  3 growthforecast growthforecast 4096  Jan 13 16:41 2014 perl5

※次回からperlbrewが有効になるように.bashrcに追記
$ echo '[[ -s "$HOME/perl5/perlbrew/etc/bashrc" ]] && source "$HOME/perl5/perlbrew/etc/bashrc"' >> .bash_profile

※最初は手動で設定ファイルを読み込み
$ source .bash_profile

4.Perlbrew から Perlインストール

使用可能なperlのバージョンを確認の上、perlをインストールします
Perl公式サイトからメジャーリリースバージョンを選びます
今回はperl-5.18.2にしました

※使用可能なperlのバージョン確認
$ perlbrew available
  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

※インストール
$ perlbrew install perl-5.18.2 ←失敗したので9.補足に追記

※インストールしたperlをperlbrew listで確認
$ perlbrew list
  perl-5.18.2

※切替前のperlバージョンを確認
$ perl -v
This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi

※perlbrewで、Perlを切り替え
$ perlbrew switch perl-5.18.2

※バージョンが 5.18.2になっているか確認
$ perl -v
This is perl 5, version 18, subversion 2 (v5.18.2) built for x86_64-linux

5.cpanmインストール

cpanm(cpanminus)は、PerlCPANモジュールをインストールするためのツールです。
perlbrew × cpanmでローカルユーザ領域にCPANモジュールをインストールする事ができます

$ perlbrew install-cpanm
cpanm is installed to

    /home/growthforecast/perl5/perlbrew/bin/cpanm

6.growthforecastインストール

インストール

-nオプションは--notest(テスト無しでインストール)の略です

$ cpanm -n GrowthForecast
データ&ログディレクトリ作成
$ mkdir /home/growthforecast/data
$ mkdir /home/growthforecast/log

7.ポートあける(iptables)

growthforecastデフォルトポートの5125をあけておきます
rootユーザでの実行です

# sudo vi /etc/sysconfig/iptables
 --vi編集--
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5125 -j ACCEPT
 ----------

# sudo /etc/init.d/iptables restart

8.growthforecastの起動&動作確認&停止

バックグランドで起動
$ growthforecast.pl --port=5125 --data-dir=/home/growthforecast/data > /home/growthforecast/log/growthforecast.log 2> /home/growthforecast/log/growthforecast.err &
[1] 44312
起動確認

プロセス見てみる

root     44312  3.5  0.2 140316 24464 pts/1    SN   15:36   0:00 /usr/bin/perl /usr/local/bin/growthforecast.pl --port=5125 --data-dir=/home/growthforecast/data
root     44313  0.0  0.1 140488 21872 pts/1    SN   15:36   0:00 /usr/bin/perl /usr/local/bin/growthforecast.pl --port=5125 --data-dir=/home/growthforecast/data
root     44314  0.0  0.1 140316 21916 pts/1    SN   15:36   0:00 /usr/local/bin/growthforecast.pl (GrowthForecast::Worker 1min)
root     44315  0.0  0.1 140316 21916 pts/1    SN   15:36   0:00 /usr/local/bin/growthforecast.pl (GrowthForecast::Worker)
root     44316  0.6  0.2 149416 25896 pts/1    SN   15:36   0:00 /usr/local/bin/growthforecast.pl (GrowthForecast::Web)
root     44317  0.0  0.2 149416 24512 pts/1    SN   15:36   0:00 /usr/local/bin/growthforecast.pl (GrowthForecast::Web)
root     44318  0.0  0.2 149416 24512 pts/1    SN   15:36   0:00 /usr/local/bin/growthforecast.pl (GrowthForecast::Web)
root     44319  0.0  0.2 149416 24512 pts/1    SN   15:36   0:00 /usr/local/bin/growthforecast.pl (GrowthForecast::Web)
root     44320  0.0  0.2 149416 24512 pts/1    SN   15:36   0:00 /usr/local/bin/growthforecast.pl (GrowthForecast::Web)
root     44322  0.0  0.0   6388   692 pts/1    S+   15:36   0:00 grep --color=auto growthforecast
画面確認

画面の確認ですが、
今回は社内のLAN内のサーバに構築したのでプライベートIPアドレスを指定して確認します

$ ifconfig | grep 'inet addr' -B 1
em1       Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:10.2.22.101  Bcast:10.2.22.255  Mask:255.255.255.0
--
em2       Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:10.2.52.2  Bcast:10.2.52.255  Mask:255.255.255.0
--
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0

プライベートIPが10.2.22.101なので「http://10.2.22.101:5125/」にアクセスして確認しました

データを入れて画面確認

下記のようにapiを叩く感じでデータを入れられます

$ curl -F number=10 http://(IP アドレス):5125/api/sample/member/register

ということで早速api叩いて確認

$ curl -F number=10 http://127.0.0.1:5125/api/sample/member/register
{"error":0,"data":{"number":10,"llimit":-1000000000,"mode":"gauge","stype":"AREA","adjustval":"1","meta":"","service_name":"sample","gmode":"gauge","color":"#cc9933","created_at":"2014/01/14 16:12:04","section_name":"member","ulimit":1000000000000000,"id":1,"graph_name":"register","description":"","sulimit":100000,"unit":"","sort":0,"updated_at":"2014/01/14 16:12:04","adjust":"*","type":"AREA","sllimit":-100000,"md5":"c4ca4238a0b923820dcc509a6f75849b"}}#

※さらに値を変えて2回くらい叩いておく
$ curl -F number=8 http://127.0.0.1:5125/api/sample/member/register
$ curl -F number=1 http://127.0.0.1:5125/api/sample/member/register

画面
なんかできてるようです

sample>member>registerの順番にクリックしてくとデータが出ました!

停止

停止するときはkillします。
今回はpkillで

# pgrep -f growthforecast

pkillについては以前書いたこちらを参考に

ってことで、導入は無事できました!
時間あればfluentd × growthforecastでapacheアクセスログからレスポンスタイムやステータスコードをグラフ化するほうもメモります。

9.補足

4.Perlbrew から Perlインストールの失敗の補足

一発目はコケたので追記の補足です
最初のインストール時うまくいきませんでした。コンソールにはこんな表示が出ます

$ perlbrew install perl-5.18.2
Fetching perl 5.18.2 as /home/growthforecast/perl5/perlbrew/dists/perl-5.18.2.tar.bz2
Download http://www.cpan.org/src/5.0/perl-5.18.2.tar.bz2 to /home/growthforecast/perl5/perlbrew/dists/perl-5.18.2.tar.bz2
Installing /home/growthforecast/perl5/perlbrew/build/perl-5.18.2 into ~/perl5/perlbrew/perls/perl-5.18.2

This could take a while. You can run the following command on another shell to track the status:

  tail -f ~/perl5/perlbrew/build.perl-5.18.2.log

Installation process failed. To spot any issues, check

  /home/growthforecast/perl5/perlbrew/build.perl-5.18.2.log

If some perl tests failed and you still want install this distribution anyway,
do:

  (cd /home/growthforecast/perl5/perlbrew/build/perl-5.18.2; make install)

You might also want to try upgrading patchperl before trying again:

  perlbrew install-patchperl

Generally, if you need to install a perl distribution known to have minor test
failures, do one of these command to avoid seeing this message

  perlbrew --notest install perl-5.18.2
  perlbrew --force install perl-5.18.2

一番下に、失敗したらこれでやってみ的な一文があるので素直に--notestつきのほうでインストールしたうまくいきました

$ perlbrew --notest install perl-5.18.2
Installing /home/growthforecast/perl5/perlbrew/build/perl-5.18.2 into ~/perl5/perlbrew/perls/perl-5.18.2

This could take a while. You can run the following command on another shell to track the status:

  tail -f ~/perl5/perlbrew/build.perl-5.18.2.log

perl-5.18.2 is successfully installed.