前回 は、halookを支えるJavaの可視化・診断ツール「ENdoSnipe」について、概要と各コンポーネントについて紹介しました。今回はセットアップを行い、実際に利用できるところまでを紹介します。
最新版のENdoSnipeはこちらからダウンロードできます。
ENdoSnipeの動作環境
ENdoSnipeが「Javelin」「 DataCollector」「 Dashboard」の3つのモジュールで構成されているのは前回紹介した通りです。まずはこれらのモジュールの簡単なおさらいと、動作環境を解説します。
1.Javelin
Javaクラスに測定ポイントを仕掛けて、そこから情報を収集するエージェント。解析対象となるアプリケーションと同じサーバに配置して、情報を収集します。
表 動作環境
Java J2SE5.0以降(JRE/JDK)
OS Windows、Linux、Solaris、HP-UXなど
2.DataCollector
Javelinで収集した情報を蓄積するデータストア。継続的に情報を収集するため、解析対象となるアプリケーションが動作するサーバとは別のサーバを用意することを推奨しています。
表 動作環境
Java J2SE5.0以降(JRE/JDK)
OS Windows、Linux
DB PostgreSQL 9.1以降
3.Dashboard
収集した情報を可視化・解析するためのWebアプリケーション。可視化や解析の処理負荷が掛かるため、解析対象となるアプリケーションとは別のサーバを用意することを推奨しています。
表 動作環境
Java JavaSE6以降(JRE/JDK)
OS Windows、Linux
AP Tomcat7.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つです。
Javelin_5.0.3.zip
endosnipe-datacollector-5.0.3.tar.gz
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の性能問題を検出・解析する手順を紹介します。