halookで始めるHadoop/HBaseトラブルシューティング

第8回 ENdoSnipeのセットアップ

この記事を読むのに必要な時間:およそ 3 分

前回は,halookを支えるJavaの可視化・診断ツール「ENdoSnipe」について,概要と各コンポーネントについて紹介しました。今回はセットアップを行い,実際に利用できるところまでを紹介します。

最新版のENdoSnipeはこちらからダウンロードできます。

ENdoSnipeの動作環境

ENdoSnipeが「Javelin」⁠DataCollector」⁠Dashboard」の3つのモジュールで構成されているのは前回紹介した通りです。まずはこれらのモジュールの簡単なおさらいと,動作環境を解説します。

1.Javelin

Javaクラスに測定ポイントを仕掛けて,そこから情報を収集するエージェント。解析対象となるアプリケーションと同じサーバに配置して,情報を収集します。

 動作環境

JavaJ2SE5.0以降(JRE/JDK)
OSWindows,Linux,Solaris,HP-UXなど

2.DataCollector

Javelinで収集した情報を蓄積するデータストア。継続的に情報を収集するため,解析対象となるアプリケーションが動作するサーバとは別のサーバを用意することを推奨しています。

 動作環境

JavaJ2SE5.0以降(JRE/JDK)
OSWindows,Linux
DBPostgreSQL 9.1以降

3.Dashboard

収集した情報を可視化・解析するためのWebアプリケーション。可視化や解析の処理負荷が掛かるため,解析対象となるアプリケーションとは別のサーバを用意することを推奨しています。

 動作環境

JavaJavaSE6以降(JRE/JDK)
OSWindows,Linux
APTomcat7.0以降

Javelinで情報を取得してDataCollectorに集約・蓄積し,Dashboardで可視化するという流れになります。

 サーバ構成

図 サーバ構成

また,アプリケーションを動作させるサーバとは別に,DataCollectorとDashboardを動作させるためのサーバを1台用意することを推奨しています。

マシン構成例

今回は以下のマシン構成を例にして,ENdoSnipeのセットアップ手順を紹介します。

 マシン構成

図 マシン構成

1.アプリケーションサーバ

解析対象のアプリケーションが動作するサーバです。JavaVM上で動作するアプリケーションなら何でも構いませんが,今回はLinux上でTomcat 7.0を利用する想定とします。

2.ダッシュボードサーバ

DataCollectorを使ってデータを収集し,Dashboardを使って可視化するためのサーバです。事前にTomcat 7.0とPostgreSQL 9.2をインストールしてください。

3.クライアントPC

アプリケーションの実行と,Dashboardを利用するためのクライアントPCです。OSは問いませんが,ブラウザとしてFirefoxをインストールしてください。

今回はこの3台構成で説明しますが,あくまで例ですので,アプリケーションサーバを複数台利用する場合や,DataCollectorとDashboardのサーバを別に用意する場合などは,適宜設定を読み替えてください。

ENdoSnipeのセットアップ

それではENdoSnipeをセットアップします。セットアップに必要な資材は,こちらからダウンロードすることができます。

必要なファイルは,以下の3つです。

  1. Javelin_5.0.3.zip
  2. endosnipe-datacollector-5.0.3.tar.gz
  3. Dashboard.war

なお,DataCollectorをWindows上で動かす場合は,2の代わりに

  • endosnipe-datacollector-5.0.3.zip

を利用してください。

1.Javelinの設定

解析対象のアプリケーションサーバ上の任意のディレクトリにJavelin_5.0.3.zip を展開します。ここでは,/opt/ENdoSnipe/Javelin の下に展開したと想定します。配置後, /opt/ENdoSnipe/Javelin/conf/javelin.properties を編集します。設定するのは,データを送る先のDataCollectorが動くサーバのホスト名と,監視対象のアプリケーションのクラスタ名です。

/opt/ENdoSnipe/Javelin/conf/javelin.properties
javelin.connectHost=(Datacollectorのホスト名)
javelin.clusterName=mycluster

javelin.clusterNameは,デフォルト値が「default」となっています。ここでは「mycluster」と設定します。設定した名前が,画面表示の際に使われます。また,このクラスタ名を変えることにより,複数のクラスタを同時に監視することができます。

続いて,解析対象のアプリケーションの起動引数に -javaagentオプションを追加して,アプリケーションの起動時にJavelinがロードされるようにします。たとえばTomcatの場合,bin/startup.sh の冒頭に,JAVA_OPTSを指定する一行を追加します。ここでは /usr/local/tomcat にTomcat7.0がインストールされていた場合の設定を紹介します。

変更前

/usr/local/tomcat/bin/startup.sh
#!/bin/sh

変更後

#!/bin/sh
export JAVA_OPTS="-javaagent:/opt/ENdoSnipe/Javelin/lib/javelin.jar $JAVA_OPTS"

これでTomcatを(再)起動すればJavelinの適用は完了です。

2.DataCollectorの設定

データ収集サーバ上の任意のディレクトリに,endosnipe-datacollector-5.0.3.tar.gzを展開します。ここでは, /opt/ENdoSnipe/DataCollector の下に展開したと想定します。配置後, /opt/EndoSnipe/DataCollector/conf/collector.properties を編集します。設定するのは,接続先のPostgreSQL DBサーバのホスト名などの情報と,自分自身が動いているサーバのホスト名です。

なお,DataCollectorを起動した際,ここで指定した名前のデータベースがPostgreSQL上に作成されるため,事前にデータベースを作成する必要はありません。

/opt/ENdoSnipe/DataCollector/conf/collector.properties
# Database host address
database.host=localhost

# Database port number
database.port=5432

# Database Name
database.name=endosnipedb

# Database login user name
database.username=postgres

# Database login password
database.password=postgres

# Host Name
accept.host=localhost

設定が完了したら,DataCollectorを起動します。

# cd /opt/ENdoSnipe/DataCollector/bin
# ./endosnipe-dc start

これでDataCollectorの設定・起動は完了です。

3.Dashboadの設定

ダッシュボードサーバ上のTomcatのwebappsディレクトリにDashboard.war を配置し,Tomcatを起動します。

ここで,DataCollectorで設定したcollector.propertiesのパスがDasshboard.warに含まれるweb.xmlにも記載されている点に注意してください。もしcollector.propertiesを /opt/ENdoSnipe/DataCollector/conf/ 以外の場所に配置する場合は,一旦Tomcatを停止し,webapps/Dashboard/WEB-INF/web.xmlを編集して,collector.propertiesの場所を指定した後Tomcatを再起動します。

web.xmlの変更箇所付近を抜粋

<init-param>
<param-name>collector.property</param-name>
<param-value>/opt/ENdoSnipe/DataCollector/conf/collector.properties</param-value>
</init-param>

以上で設定は完了です。

※DataCollectorとDashboardのサーバを別にする場合

もしDataCollectorと,Dashboardのサーバを別のサーバに分けたい場合は,DataCollector用に編集したcollector.propertiesを,Dashboardを動作させるサーバにもコピーしてください。また,collector.propertiesで指定したdatabase.host,accept.hostをDashboardも利用するため,ホスト名には localhost ではなくDataCollectorが動くサーバの実際のホスト名を設定する必要があります。

Webブラウザ(今回はFirefox)から,以下のURLを開いてください。

  • http://(ダッシュボードサーバ):8080/Dashboard/

以下のような画面が現れれば成功です。

 表示画面

図 表示画面

このDashboardで,CPU使用率やヒープメモリの状況を確認することができます。また,アプリケーションサーバ側のTomcatにアクセスしたり,負荷を掛けたりすることで,Dashboard側のグラフにも変化が表れるでしょう。

今回は,halookを支えるプロダクトであるENdoSnipeのセットアップ手順を紹介しました。次回は実際にENdoSnipeを使って,メモリリークやSQLの性能問題を検出・解析する手順を紹介します。

※:ENdoSnipeバージョン5.0は現在開発中のため,一部の機能に制限があります。利用に際してはご注意ください。

著者プロフィール

谷本心(たにもとしん)

Acroquest Technology株式会社システムズコンサルティングディヴィジョン所属。フレームワークの開発/支援を中心に行うほか,ENdoSnipeの開発やトラブルシューティングの教育などを行っている。本業以外でもJavaコミュニティで活動しており,日本Javaユーザーグループ(JJUG)幹事,関西Javaエンジニアの会の主催を務める。

http://www.acroquest.co.jp/

コメント

コメントの記入