前回は、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が動くサーバのホスト名と、監視対象のアプリケーションのクラスタ名です。
javelin.clusterNameは、デフォルト値が「default」となっています。ここでは「mycluster」と設定します。設定した名前が、画面表示の際に使われます。また、このクラスタ名を変えることにより、複数のクラスタを同時に監視することができます。
続いて、解析対象のアプリケーションの起動引数に -javaagentオプションを追加して、アプリケーションの起動時にJavelinがロードされるようにします。たとえばTomcatの場合、bin/startup.sh の冒頭に、JAVA_OPTSを指定する一行を追加します。ここでは /usr/local/tomcat にTomcat7.0がインストールされていた場合の設定を紹介します。
↓
これでTomcatを(再)起動すればJavelinの適用は完了です。
2.DataCollectorの設定
データ収集サーバ上の任意のディレクトリに、endosnipe-datacollector-5.0.3.tar.gzを展開します。ここでは、 /opt/ENdoSnipe/DataCollector の下に展開したと想定します。配置後、 /opt/EndoSnipe/DataCollector/conf/collector.properties を編集します。設定するのは、接続先のPostgreSQL DBサーバのホスト名などの情報と、自分自身が動いているサーバのホスト名です。
なお、DataCollectorを起動した際、ここで指定した名前のデータベースがPostgreSQL上に作成されるため、事前にデータベースを作成する必要はありません。
設定が完了したら、DataCollectorを起動します。
これで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を再起動します。
以上で設定は完了です。
※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の性能問題を検出・解析する手順を紹介します。