[CentOS]fluent と GrowthForecast を連携させてグラフを作ってみる #02


今回は、こちらの作業の続きです。fluentでログが採れたところからの作業となります。いよいよグラフ化するところに入ります。RRDtoolはCentOSのパッケージからインストールするとうまく動かないとのことなので、GrowthForecastのみPerlを最新化しつつRRDtoolも独自にインストールします。

■ 何はなくとも下準備

GrowthForecastを動かすために、以下のパッケージをyumの標準リポジトリからインストールします。
[cc lang='bash' ]
[admin@mega21 log]$ sudo yum install glib2-devel gettext libxml2-devel pango-devel cairo-devel
[admin@mega21 log]$ cd
[/cc]

■ perlbrewインストール

GrowthForecast実行ユーザで、perlbrewをインストールします。
[cc lang='bash' ]
[admin@mega21 ~]$ curl -kL http://install.perlbrew.pl | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed

0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
0 315 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
0 315 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0
102 1022 102 1022 0 0 291 0 0:00:03 0:00:03 --:--:-- 3318
102 1022 102 1022 0 0 291 0 0:00:03 0:00:03 --:--:-- 3318

## Download the latest perlbrew

## Installing perlbrew
The perlbrew is installed as:

~/perl5/perlbrew/bin/perlbrew

You may trash the downloaded /tmp/perlbrew-2038 from now on.

Perlbrew environment initiated under ~/perl5/perlbrew

Append the following piece of code to the end of your ~/.bash_profile and start a
new shell, perlbrew should be up and fully functional from there:

source ~/perl5/perlbrew/etc/bashrc

For further instructions, simply run `perlbrew` to see the help message.

Happy brewing!

## Installing patchperl

## Done.
[admin@mega21 ~]$ echo '[[ -s "$HOME/perl5/perlbrew/etc/bashrc" ]] && source "$HOME/perl5/perlbrew/etc/bashrc"' >> .bash_profile
[admin@mega21 ~]$ source $HOME/perl5/perlbrew/etc/bashrc
[/cc]

■ 現在のPerlバージョン確認

[cc lang='bash' ]
[admin@mega21 ~]$ perl -v

This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi

Copyright 1987-2009, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
[/cc]

■ ユーザ環境のPerlを最新化する

[cc lang='bash' ]
[admin@mega21 ~]$ perlbrew install perl-5.16.0
[admin@mega21 ~]$ perlbrew switch perl-5.16.0
[/cc]

■ 更新後のPerlバージョン確認

[cc lang='bash' ]
[admin@mega21 ~]$ perl -v

This is perl 5, version 16, subversion 0 (v5.16.0) built for x86_64-linux

Copyright 1987-2012, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
[/cc]

■ cpanmをインストールする

GrowthForecastをインストールするため、cpanmをインストールします。
[cc lang='bash' ]
[admin@mega21 ~]$ perlbrew install-cpanm

cpanm is installed to

/home/admin/perl5/perlbrew/bin/cpanm
[/cc]

■ RRDtoolをインストールする

[cc lang='bash' ]
[admin@mega21 ~]$ mkdir src
[admin@mega21 ~]$ cd $_
[admin@mega21 src]$ wget http://search.cpan.org/CPAN/authors/id/G/GF/GFUJI/Alien-RRDtool-0.03.tar.gz
[admin@mega21 src]$ cpanm Alien-RRDtool-0.03.tar.gz
[/cc]

■ GITHUBからGrowthForecastをダウンロードする

[cc lang='bash' ]
[admin@mega21 src]$ git clone git://github.com/kazeburo/GrowthForecast.git GrowthForecast
[/cc]

■ GrowthForecastをcpanmからインストールする

[cc lang='bash' ]
[admin@mega21 src]$ cd GrowthForecast
[admin@mega21 GrowthForecast]$ cpanm --installdeps .
[admin@mega21 GrowthForecast]$ cd ../
[admin@mega21 src]$ cp -pr GrowthForecast ${HOME}/bin
[admin@mega21 src]$ mkdir ${HOME}/log
[admin@mega21 src]$ cd
[/cc]

■ グラフ文字化け防止のため、フォントをインストールする

[cc lang='bash' ]
[admin@mega21 ~]$ sudo yum install bitmap-console-fonts
[/cc]

■ GrowthForecastを起動する

[cc lang='bash' ]
[admin@mega21 ~]$ LANG=C perl bin/GrowthForecast/growthforecast.pl --port=5125 > $HOME/log/growthforecast.log 2>$HOME/log/growthforecast.err &
[/cc]

■ netstatで確認

5125ポートがListenしていることを確認します。
[cc lang='bash' ]
[admin@mega21 ~]$ netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:5125 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:24224 0.0.0.0:* LISTEN
tcp 0 0 :::80 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:25 :::* LISTEN
[/cc]

■ プロセス確認

[cc lang='bash' ]
[admin@mega21 ~]$ ps -aef | grep [g]rowthforecast
admin 30306 1212 0 22:04 pts/1 00:00:00 perl bin/GrowthForecast/growthforecast.pl --port=5125
admin 30307 30306 0 22:04 pts/1 00:00:00 bin/GrowthForecast/growthforecast.pl (GrowthForecast::Worker 1min)
admin 30308 30306 0 22:04 pts/1 00:00:00 bin/GrowthForecast/growthforecast.pl (GrowthForecast::Worker)
admin 30309 30306 0 22:04 pts/1 00:00:00 bin/GrowthForecast/growthforecast.pl (GrowthForecast::Web)
admin 30310 30309 0 22:04 pts/1 00:00:00 bin/GrowthForecast/growthforecast.pl (GrowthForecast::Web)
admin 30311 30309 0 22:04 pts/1 00:00:00 bin/GrowthForecast/growthforecast.pl (GrowthForecast::Web)
admin 30312 30309 0 22:04 pts/1 00:00:00 bin/GrowthForecast/growthforecast.pl (GrowthForecast::Web)
admin 30313 30309 0 22:04 pts/1 00:00:00 bin/GrowthForecast/growthforecast.pl (GrowthForecast::Web)
[/cc]

■ fluent-plugin-growthforecast インストール

GrowthForecastのWebAPIを叩いてくれるfluent-plugin-growthforecastをインストールします。
[cc lang='bash' ]
[admin@mega21 ~]$ sudo gem install fluent-plugin-growthforecast
[/cc]

■ fluent_apache.conf設定修正

ログのHTTPステータスコードのチェックと集計を行い、結果をfluent-plugin-growthforecastでグラフ化します。
[cc lang='bash' ]
[admin@mega21 ~]$ cd /opt/fluentd/
[admin@mega21 fluentd]$ sudo cp -p fluent_apache.conf fluent_apache.conf.orig
[admin@mega21 fluentd]$ sudo vi fluent_apache.conftype tail
path /var/log/httpd/access_log
format apache
tag apache.access


type tcp
host localhost
type tail
format /^(?[^ ]*) [^ ]* (?[^ ]*) [(?


type growthforecast
gfapi_url http://localhost:5125/api/
service serviceName
section metricsName
name_keys response_time

[/cc]

ここまでできたら、fluentdのプロセスを再起動します。現時点ではスタートスクリプトがないので、killコマンドでプロセス停止してから再度立ち上げます。

■ fluent-plugin-growthforecastでGrowthForecastのWebAPIを叩く

[cc lang='bash' ]
[admin@mega21 fluentd]$ curl -F number=10 http://localhost:5125/api/serviceName/metricsName/response_time
[/cc]

ここまでできたら、GrowthForecastのグラフができているかブラウザから確認してみましょう。 http://:5125/list/serviceName/metricsName にアクセスして、値がとれていればOKです。

お疲れ様でした。これでfluentdとGrowthForecastを連携させてグラフを作ることができました。

※ 参考サイト の皆様、ありがとうございます。
http://d.hatena.ne.jp/gidooom+TK/20120612/t
http://d.hatena.ne.jp/temizu/20110514/1305343901
http://d.hatena.ne.jp/fat47/?of=5
http://d.hatena.ne.jp/do_aki/20120522/1337665000