LoginSignup
6
8

More than 5 years have passed since last update.

ENdoSnipeのインストール(Javaアプリのリソース情報記録)

Last updated at Posted at 2016-03-19

APM(アプリケーション性能管理)ツールとは、アプリのリソース情報を記録するソフトウェアです。APサーバに情報を取得するエージェントを導入して、取得した情報をマネージャに集約してリソース情報を可視化、24時間体制で監視、リソース情報の動きから障害を検知することができます。Javaアプリにおいて、ヒープの使用率などリソース情報の記録・監視にはJava Flight Recorder(以下「JFR」)+Java Mission Control(以下「JMC」)というOracleが提供しているツールがあります。機能的には申し分ないのですが、商用利用には有償ライセンスが必要です。

JFRに変わって、安価で利用できるものがないか探してみると、ENdoSnipe(エンドスナイプ)にたどり着きました。オライリーのJavaパフォーマンス本などを監訳している会社が開発、OSSとして公開しているツールであり、無料で利用できます。LinuxサーバにENdoSnipeを(以下「ES」)導入してみたいと思います。

ESの主な特徴

・リソース情報に閾値を設定、超時に指定宛先へメール送付できる
・記録した情報を期間指定してグラフ出力(Excelなど)できる
・導入のために、既存のJavaソース修正不要
・OSSのため、無料で利用可能(有償サポートもあり)

実施する作業

(環境はさくらのクラウドCentOS7を利用しました)
・環境を整える
・ESのインストール
・ESの起動
・使う

環境を整える

必要なMWは以下の通り
・Java
・PostgreSQL
・Tomcat 2セット(エージェント、マネージャー用)

Javaのインストール

#1.8.0.73 is latest version of 2016/03/20
$ curl -OL --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm
$ sudo rpm -ivh jdk-8u73-linux-x64.rpm
$ java -version
java version "1.8.0_73"

#環境変数の設定
$ export JAVA_HOME=/usr/java/jdk1.8.0_73/

PostgreSQLのインストール

#yumだと、9.2が入りますが正常に動作しなかったため9.4を入れる。
$ wget http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-2.noarch.rpm
$ rpm -ivh pgdg-centos94-9.4-2.noarch.rpm
$ yum -y install postgresql94-server postgresql94-devel postgresql94-contrib

#DBの初期化
$ /usr/pgsql-9.4/bin/postgresql94-setup initdb
Initializing database ... OK

#管理ユーザにパスワードを設定するため、サービス起動
$ systemctl start postgresql
$ su - postgres 
$ psql -c "alter user postgres with password 'postgres'" 

#パスワード設定後、認証方式変更
$ vi /var/lib/pgsql/9.4/data/pg_hba.conf
# 127.0.0.1経由のアクセスではid/passwordで認証するよう、以下のように修正
(修正前)host    all             all             127.0.0.1/32            ident
(修正後)host    all             all             127.0.0.1/32            md5

Tomcatのインストール

#エージェント(リソース情報を記録する)のAPサーバ用と
#管理マネージャを動かすAPサーバ用に2セット準備する
#8.0.32 is latest version of 2016/03/20

$ wget http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32.tar.gz
$ tar -zxvf apache-tomcat-8.0.32.tar.gz -C /opt/ENdoSnipe/
$ tar -zxvf apache-tomcat-8.0.32.tar.gz -C /opt/
※このままだと、利用するポートが重複してしまうため、「conf/server.xml」を修正します(省略)

ESのインストール

公式HPからファイルをダウンロード

$ wget http://downloads.sourceforge.net/project/endosnipe/6.0.0-release/endosnipe_6.0.0-release.zip

※2017年5月現在、アクロクエスト社の公式からダウンロードできなくなりましたが以下より入手できるようです。
sourceforge ENdoSnipe6.0.2

ファイルを解凍して配置します

$ unzip endosnipe_6.0.0-release.zip
Javelin_6.0.0.zip
endosnipe-datacollector-6.0.0.tar.gz
ENdoSnipe.war

#Javelin
$ unzip Javelin_6.0.0.zip
$ mv Javelin /opt/ENdoSnipe/

#DataCollector
$ tar -zxvf endosnipe-datacollector-6.0.0.tar.gz
$ mv ENdoSnipe/DataCollector /opt/ENdoSnipe/

#ENdoSnipe.war
$ mv ENdoSnipe.war /opt/ENdoSnipe/apache-tomcat-8.0.32/webapps

設定変更

/opt/apache-tomcat-8.0.32/bin/startup.sh
#リソース情報を集計するTomcat起動スクリプトの頭に、起動オプション追加
#!/bin/sh
export JAVA_OPTS="-javaagent:/opt/ENdoSnipe/Javelin/lib/javelin.jar $JAVA_OPTS"

集計プロセス、Tomcat起動

#リソース集計
/opt/ENdoSnipe/DataCollector/bin/endosnipe-dc start
Starting ENdoSnipe DataCollector: *****           [  OK  ]

#Tomcat(エージェント用)
/opt/apache-tomcat-8.0.32/bin/startup.sh

#Tomcat(マネージャ用)
/opt/ENdoSnipe/apache-tomcat-8.0.32/bin/startup.sh

使う

エージェントにアクセスする
→http://(ホスト):8080/ENdoSnipe/

私のPC解像度が低いので、見辛いですが
ヒープ確保量、使用量のグラフを以下に表示します。

確保量
max.png

使用量
used.png
jstatコマンドで確認しましたが、だいたい同じ値が取れているようです。

閾値を設ける
signal.png
プロセスのCPU使用率が、一定の%を超えた場合に検知する設定しました。青丸は閾値超えを検知した状態であり、内容をメールを送付することができます。(設定としてSNMPトラップを送付するような項目もありましたが、試していません)

ENdoSnipeを動かし、監視項目の設定と検知までは実施できることがわかりました。無料ということを考えれば、リソース情報の記録・監視ツールとして検討に挙げられるツールだと存じます。

追記
PostgreSQLはCentOS7.2のデフォルト(9.2)を利用する場合

[root@~]# yum install --downloadonly --downloaddir=./ postgresql-server postgresql-devel postgresql-contrib

[root@~]# ls -l ./
-rw-r--r-- 1 root root  247484  7月  4  2014 libxslt-1.1.28-5.el7.x86_64.rpm
-rw-r--r-- 1 root root 3137780  3月  3 02:56 postgresql-9.2.15-1.el7_2.x86_64.rpm
-rw-r--r-- 1 root root  562628  3月  3 02:56 postgresql-contrib-9.2.15-1.el7_2.x86_64.rpm
-rw-r--r-- 1 root root  971348  3月  3 02:57 postgresql-devel-9.2.15-1.el7_2.x86_64.rpm
-rw-r--r-- 1 root root  236884  3月  3 02:57 postgresql-libs-9.2.15-1.el7_2.x86_64.rpm
-rw-r--r-- 1 root root 3967928  3月  3 02:57 postgresql-server-9.2.15-1.el7_2.x86_64.rpm
-rw-r--r-- 1 root root   56724  7月  4  2014 uuid-1.6.2-26.el7.x86_64.rpm

[root@~]# /usr/bin/postgresql-setup initdb
Initializing database ... OK

[root@~]# systemctl start postgresql


6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8