今回の対象ログは、WildFly が出力する access.log とします。Apache httpd の access_log 相当のログです。
なお、本ブログは以下の記事を参考にしています。それぞれの設定の意味合いなどは、そちらのブログを参照いただければと思います。
ステップバイステップで学ぶ Fluentd + GrowthForecast でグラフ作成まとめ
目標
access.log ログを収集・解析し、レスポンスタイムの統計情報(最小値・最大値・平均値など)をグラフ化する。大まかな流れ
- WildFly/JBoss AS7 の設定
- Fluentd の設定
- ログ送信サーバ(fluent-agent-lite) の設定
- ログ受信サーバ(td-agent)の設定
- グラフ化サーバ(GlowthForecast) の設定
- 動作確認
環境
- CentOS 6.4 64bit
- Maven 3.1.0
- WildFly...と言いたいところですが、JBoss AS7.2.0 Final※
- Fluentd(td-agent-1.1.14-0)
- fluent-agent-lite-0.9
- GlowthForecast
※ 2013/08/31 現在、WilfFly のバージョンは 8.0.0 Alpha4 ですが、access.log を出力する機能は次リリース版である Beta1 です。また、現在レスポンスタイムの出力機能が Undertow(WIldFly の Web 部)に入っていないため、Beta1 のリリースに含まれるか微妙なところです。WildFly においてレスポンスタイムの出力が確認され次第、ブログも反映いたします。
Access log support - WildFly JIRA
Access log support - WildFly JIRA
JBoss AS7 の設定
インストール
JBoss AS7.2.0.Final のバイナリはコミュニティにて配布されていませんので、自分でビルドする必要があります。またビルドスクリプト(build.sh)の実行に Maven が必要ですので、あらかじめインストールください。なお、ここでは時間短縮のため、テストを省略してビルドしています。
$ git clone https://github.com/wildfly/wildfly.git $ cd wildfly $ git checkout refs/tags/7.2.0.Final $ ./build.sh -DskipTests=true
wildfly/build/target/jboss-as-7.2.0.Final が作成されたバイナリです。適当なところにインストールください。このインストールパスを $JBOSS_HOME と表記します。
ログ設定
$ cd $JBOSS_HOME/bin $ ./standalone.sh $ ./jboss-cli.sh -c --command='/subsystem=web/virtual-server=default-host/access-log=configuration:add(pattern="%t,%a,%m,%U,%s,%S,%D",prefix="access.log.")'
念のため JBoss を再起動し、適当に Web アクセスします(wget localhost:8080 など)。$JBOSS_HOME/standalone/log/default-host に、access.log.YYYY-mm-dd とアクセスログが出力されていれば成功です。
cat $JBOSS_HOME/standalone/log/default-host/access.log.2013-08-31 [31/Aug/2013:13:06:59 +0000],127.0.0.1,GET,/,200,-,8
Fluentd の設定
ログ送信サーバ
WildFly/JBoss AS7 の access_log が出力されているサーバです。fluent-agent-light を利用して、ログ受信サーバへログを送信します。
インストール用のシェルもありますが、せっかくなので rpm を作成してインストールしてみます。
fluentd-agent-light のインストール
# yum install rpm-build # useradd rpmbuilder # su - rpmbuilder $ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} $ wget http://tagomoris.github.io/tarballs/fluent-agent-lite.v0.9.tar.gz $ tar zxvf fluent-agent-lite.v0.9.tar.gz && mv fluent-agent-lite* ~/rpmbuild/SOURCES $ cp ~/rpmbuild/SOURCES/fluent-agent-lite/package/fluent-agent-lite.conf ~/rpmbuild/SOURCES $ cp ~/rpmbuild/SOURCES/fluent-agent-lite/SPECS/fluent-agent-lite.spec ~/rpmbuild/SPECS $ rpmbuild $ exit # rpm -ivh /home/rpmbuilder/rpmbuild/RPMS/x86_64/fluent-agent-lite-0.9-original.x86_64.rpm
fluentd-agent-lightの設定
以下の内容を /etc/fluentd-agent-lite.conf に記述します。なお、ログのパスは絶対パスに変更してください。
ログ受信サーバ
Fluentd の安定かつパッケージ版である、td-agent をインストールします。また、各種プラグインもインストールしておきます(このエントリ中では利用しないものも含まれています)。
td-agent のインストール
# echo "[treasuredata]\nname=TreasureData\nbaseurl=http://packages.treasure-data.com/redhat/\$basearch\nenabled=0\ngpgcheck=0\n" >> /etc/yum.repos.d/td.repo # yum install -y td-agent --enablerepo=treasuredata # /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-file-alternative # /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-parser # /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-forest # /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-amplifier-filter # /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-numeric-monitor # /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-growthforecast
以下の内容を /etc/td-agent/td-agent.conf に記述します。
グラフ表示サーバ
グラフ化には GlowthForecat を利用します。
インストールから起動確認まで一気にやってみます。インストールする Perl のバージョンは、5.<偶数> のもので一番数字が大きいものにしました。5.<奇数>は開発版とのことです。
# yum -y groupinstall "Development Tools" # yum -y install pkgconfig glib2-devel gettext libxml2-devel pango-devel cairo-devel # useradd growthforecast # su - growthforecast $ curl -kL http://install.perlbrew.pl | bash $ echo '[[ -s "$HOME/perl5/perlbrew/etc/bashrc" ]] && source "$HOME/perl5/perlbrew/etc/bashrc"' >> ~/.bash_profile $ source "$HOME/perl5/perlbrew/etc/bashrc" $ perlbrew available perl-5.19.3 perl-5.18.1 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.1 $ perlbrew switch perl-5.18.1 $ perlbrew install-cpanm $ cpanm -n GrowthForecast $ mkdir /home/growthforecast/data $ mkdir /home/growthforecast/log $ growthforecast.pl --data-dir=/home/growthforecast/data > /home/growthforecast/log/growthforecast.log 2> /home/growthforecast/log/growthforecast.err & $ curl -F number=10 http://<ip-addr>:5125/api/socialgame/member/register
動作確認
ここまでくれば完成です。WildFly/JBoss AS7 に適当に Web アクセスをして、/var/log/td-agent に以下のログが出力されている事をご確認ください。- access.log の生ログ(wildfly-access.log.*)
- パースされたログ(parsed-wildfly-access.log.*)
- GrowthForecat に送るレスポンスタイムの統計ログ(wildfly-response-time.*)
なにか問題が出ている場合は、同ディレクトリの td-agent.log にログが残っています。
GrowthForecat にレスポンスタイムのグラフが作成されているか、http://<ip-addr>:5125 にアクセスしてみましょう。以下のようなグラフが表示されていれば成功です。
GrowthForecat にレスポンスタイムのグラフが作成されているか、http://<ip-addr>:5125 にアクセスしてみましょう。以下のようなグラフが表示されていれば成功です。
0 件のコメント:
コメントを投稿