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

第8回ENdoSnipeのセットアップ

前回は、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は現在開発中のため、一部の機能に制限があります。利用に際してはご注意ください。

おすすめ記事

記事・ニュース一覧