OSS APM pinpoint を試してみる


JavaのWebAPをトレースするため、OSSのAPM pinpointquickstartを試してみる。
サービスマップや、タイムライン、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が実行できることを確認する。

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

4.2 TestApp 起動

cd ~/pinpoint-master/quickstart/bin
./start-testapp.sh

4.3 Web UI 起動

cd ~/pinpoint-master/quickstart/bin
./start-web.sh
※もし、タイムアウトで起動しない場合は、init-hbase.sh を実行すると、起動する場合がある。


以降は、ホストOSのブラウザで確認する。

5. pinpoint web でのステータス確認

5.1 テスト用 Web AP 実行

http://192.168.33.10:28080/ で、テストAPメニューにアクセスし、適当なAPを実行する。

5.2 pinpoint web ステータス確認

http://192.168.33.10:28081/ で、pinpoint webのコンソール画面にアクセスすると、5.1 のAP実行状況が確認できる。

※webコンソールのデモが、下記に動画が掲載されている。
https://naver.github.io/pinpoint/

TEST APP のコンソールトップ、サービスマップ

APサーバのリソース状況

AP実行のトレース

同種のツール、サービスとしては、Zipkin、jaeger、AWS X-Ray 等がある。

参考情報

https://naver.github.io/pinpoint/
http://naver.github.io/pinpoint/1.8.0/quickstart.html