JavaのWebAPをトレースするため、OSSのAPM pinpointのquickstartを試してみる。
サービスマップや、タイムライン、APサーバのリソース状況などを可視化できる。
下記によると、コードを変更せずに、AP状態を可視化することが可能とのこと。
https://github.com/naver/pinpoint/wiki/Technical-Overview-Of-Pinpoint#bytecode-instrumentation-not-requiring-code-modifications
##実行環境
OS:CentOS7.5(VirtualBox + Vagrantで作成。ホストOSはWindows10)
pinpoint:ver.1.8.0
完成イメージは、下記が、ゲストOS内で稼働している状態。
※出展:http://naver.github.io/pinpoint/1.8.0/overview.html
##手順
※1~4 は、ゲストOSの操作。0、5は、ホストOSでの操作。
###0.ゲストOSの準備
####0.1 VirtualBox、Vagrant のインストール
Vagrant、VirtualBoxのWindows版を、下記からダウンロードしてインストールする。
※インストーラのデフォルト設定で良い。
Vagrant
https://www.vagrantup.com/downloads.html
VirtualBox
https://www.virtualbox.org/wiki/Downloads
2つともインストールしたら、OSを再起動する。再起動後、コマンドプロンプトで、vagrantが実行できることを確認する。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F294476%2F74cf3f26-41e7-9597-870b-0f261242fcc4.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=8cf8048f46ec65657e392c10e5fd08b6)
####0.2 ゲストOS の起動
#####0.2.1 Vagrantファイルの作成
ホストOSで、適当なディレクトリを作って、コマンドプロンプトで作成したディレクトリで、下記を実行する。
vagrant init bento/centos-7.5
#####0.2.2 Vagrantファイルの編集
実行後に作成されたVagrantfile の、IP設定と、リソースサイズの設定を変更する。
●IP設定
Create a private network, which allows host-only access to the machine
using a specific IP.
config.vm.network "private_network", ip: "192.168.33.10"
●リソース設定
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true
# Customize the amount of memory on the VM:
vb.memory = "2048"
vb.customize ["modifyvm", :id, "--memory", "2048", "--cpus", "2", "--ioapic", "on"]
end
#####0.2.3 ゲストOS起動
下記コマンドで、ゲストOSを起動する。
vagrant up
#####0.2.3 ゲストOSにSSH
ゲストOS起動後、下記コマンドで、ゲストOSにSSHする。
vagrant ssh
以降は、0.2.4 でSSHしたゲストOS内の操作。
###1.Javaインストール
jdk6,7,8,9 をインストールして、環境変数を設定する。
####1.1 jdk6,7,8をインストール
sudo yum install openjdk-1.6.0-devel
sudo yum install openjdk-1.7.0-devel
sudo yum install openjdk-1.8.0-devel
####1.2 jdk9をインストール
※手順は、こちらを参考に実施。
wget https://download.java.net/java/GA/jdk9/9.0.4/binaries/openjdk-9.0.4_linux-x64_bin.tar.gz
tar xzvf openjdk-9.0.4_linux-x64_bin.tar.gz
sudo mv jdk-9.0.4 /opt/
sudo alternatives --install /usr/bin/java java /opt/jdk-9.0.4/bin/java
sudo alternatives --install /usr/bin/jar jar /opt/jdk-9.0.4/bin/jar 1
sudo alternatives --install /usr/bin/javac javac /opt/jdk-9.0.4/bin/javac 1
####1.3 環境変数設定
~/.bashrc に下記を追加。
JAVA_6_HOME=/etc/alternatives/java_sdk_1.6.0
JAVA_7_HOME=/etc/alternatives/java_sdk_1.7.0
JAVA_8_HOME=/etc/alternatives/java_sdk_1.8.0
JAVA_9_HOME=/opt/jdk-9
JAVA_HOME=$JAVA_8_HOME
###2. pinpointインストール
これをダウンロードして、展開して、下記を実行。
※インストールは、かなり時間がかかる。
※ホームディレクトリに展開した前提で記載。
cd ~/pinpoint-master
./mvnw install -DskipTests=true
###3. HBASEインストール、初期化
cd ~/pinpoint-master/quickstart/bin
./start-hbase.sh
./init-hbase.sh
###4. pinpointのデーモンを起動する
####4.1 Collector 起動
cd ~/pinpoint-master/quickstart/bin
./start-collector.sh
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F294476%2Fc03f0a4a-ef1e-5b19-6404-f321662f04f4.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b3121d0e52264b9a0fdea7517d00b0bc)
####4.2 TestApp 起動
cd ~/pinpoint-master/quickstart/bin
./start-testapp.sh
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F294476%2Fdcf4c609-9798-ea1f-5434-bad3719e7068.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f8c3aa5e7da790e362e518297c5307dc)
####4.3 Web UI 起動
cd ~/pinpoint-master/quickstart/bin
./start-web.sh
※もし、タイムアウトで起動しない場合は、init-hbase.sh を実行すると、起動する場合がある。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F294476%2F29321352-a491-6ce1-9e53-3c26253f3454.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=78565db9aeccbaecd13130dd94f764b0)
###5. pinpoint web でのステータス確認
####5.1 テスト用 Web AP 実行
http://192.168.33.10:28080/ で、テストAPメニューにアクセスし、適当なAPを実行する。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F294476%2Fc2ae8625-5b9a-e65d-4aa8-0b56decaf3e9.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0e2999bd37201d34c1bdbefb24c887f4)
####5.2 pinpoint web ステータス確認
http://192.168.33.10:28081/ で、pinpoint webのコンソール画面にアクセスすると、5.1 のAP実行状況が確認できる。
※webコンソールのデモが、下記に動画が掲載されている。
https://naver.github.io/pinpoint/
#####TEST APP のコンソールトップ、サービスマップ
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F294476%2F495655b4-99ad-dd3d-2fa5-20aa4fc54530.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=57a0886c7bb0969a6e6cd274ea68cec5)
同種のツール、サービスとしては、Zipkin、jaeger、AWS X-Ray 等がある。
##参考情報
https://naver.github.io/pinpoint/
http://naver.github.io/pinpoint/1.8.0/quickstart.html