Pinpoint是一個開源的 APM (Application Performance Management/應用性能管理)工具,用於基於java的大規模分布式系統,基於Google Dapper論文。
架構組成
Pinpoint主要由四部分組成:
Pinpoint-Collector:數據收集模塊,接收Agent發送過來的監控數據,並存儲到HBase數據庫
Pinpoint-Agent:用於收集應用端監控數據,無侵入式,只需要在啟動命令中加入部分參數即可
Pinpoint-Web:UI,展示性能數據
HBase Storage:監控展示模塊,展示系統調用關系、調用詳情、應用狀態等,並支持報警等功能
優點:
1、分布式事務跟蹤,跟蹤跨分布式應用的消息
2、自動檢測應用拓撲,幫助你搞清楚應用的架構
3、水平擴展以便支持大規模服務器集群
4、提供代碼級別的可見性以便輕松定位失敗點和瓶頸
5、使用字節碼增強技術,添加新功能而無需修改代碼
功能:
1、故障快速定位
2、各個調用環節的性能分析
3、數據分析等
4、生成服務調用拓撲圖
軟件下載地址:
Pinpoint GitHub 地址:
https://github.com/naver/pinpoint
https://github.com/pinpoint-apm/pinpoint/releases/tag/1.8.5
hbbase下載地址:
http://archive.apache.org/dist/hbase/
初始化pinpoint庫
下載腳本:https://github.com/naver/pinpoint/blob/master/hbase/scripts/hbase-create.hbase
https://raw.githubusercontent.com/pinpoint-apm/pinpoint/master/hbase/scripts/hbase-create.hbase
部署軟件版本信息:
jdk1.8.0_172
pinpoint-agent-1.8.5
pinpoint-collector-1.8.5
pinpoint-web-1.8.5
hbase-1.2.12
部署主機信息:
ip地址 | 角色 | 操作系統 | 部署服務 |
10.0.10.201 | 服務端 | CentOS 7.8 | jdk collector web hbase tomcat8 |
10.0.10.46 | agent端 | CentOS 7.8 | jdk agent spring-cloud service |
10.0.10.87 | agent端 | CentOS 7.8 | jdk tomcat java service |
環境安裝:
1、安裝JDK
解壓自行安裝,環境變量配置如下:
# java config export JAVA_HOME=/usr/local/jdk1.8.0_172 export PATH=${JAVA_HOME}/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2、安裝HBase
- 將Hbase放到指定目錄,我這里下載的是1.2.12版本的。
# tar -zxvf hbase-1.2.12-bin.tar.gz -C /usr/local/ # # ln -s hbase-1.2.12 hbase
2.修改配置信息
修改hbase-env.sh文件,#加入JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_172
注釋掉如下兩行,去除告警信息:
#export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m" #export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
3.修改hbase-site.xml文件.
# vi hbase-site.xml <configuration> <property> <name>hbase.rootdir</name> <value>file:///usr/local/hbase/data</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/usr/local/hbase/zookeper</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <!-- false是單機模式,true是分布式模式 --> <property> <name>hbase.cluster.distributed</name> <value>false</value> </property> </configuration>
4.啟動HBase,並查看服務及關聯端口
bin]# ./start-hbase.sh # jps 15482 HMaster ]# netstat -anpt |grep 15482 tcp6 0 0 :::2181 :::* LISTEN 15482/java tcp6 0 0 :::16010 :::* LISTEN 15482/java tcp6 0 0 :::40012 :::* LISTEN 15482/java tcp6 0 0 10.0.10.201:44621 :::* LISTEN 15482/java tcp6 0 0 10.0.10.201:43408 :::* LISTEN 15482/java tcp6 0 0 127.0.0.1:36292 127.0.0.1:2181 ESTABLISHED 15482/java tcp6 0 0 ::1:35938 ::1:2181 ESTABLISHED 15482/java tcp6 0 0 127.0.0.1:36296 127.0.0.1:2181 ESTABLISHED 15482/java tcp6 0 0 10.0.10.201:45708 10.0.10.201:43408 ESTABLISHED 15482/java tcp6 0 0 10.0.10.201:43408 10.0.10.201:45706 ESTABLISHED 15482/java tcp6 0 0 10.0.10.201:44621 10.0.10.201:41087 ESTABLISHED 15482/java tcp6 0 0 10.0.10.201:43408 10.0.10.201:45708 ESTABLISHED 15482/java tcp6 0 0 127.0.0.1:2181 127.0.0.1:36292 ESTABLISHED 15482/java tcp6 0 0 ::1:2181 ::1:35938 ESTABLISHED 15482/java tcp6 0 0 127.0.0.1:2181 127.0.0.1:36300 ESTABLISHED 15482/java tcp6 0 0 127.0.0.1:2181 127.0.0.1:36290 ESTABLISHED 15482/java tcp6 0 0 ::1:2181 ::1:35934 ESTABLISHED 15482/java tcp6 0 0 127.0.0.1:2181 127.0.0.1:36296 ESTABLISHED 15482/java tcp6 0 0 10.0.10.201:41087 10.0.10.201:44621 ESTABLISHED 15482/java
5.初始化pinpoint庫,並導入數據腳本
hbase]# wget https://raw.githubusercontent.com/pinpoint-apm/pinpoint/master/hbase/scripts/hbase-create.hbase #執行數據腳本 hbase]# ./bin/hbase shell hbase-create.hbase # 執行完了以后,進入Hbase ./hbase shell #進入后可以看到Hbase的版本,還有一些相關的信息 [root@hztestdb01 bin]# ./hbase shell 2021-02-26 10:55:55,074 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 1.2.12, r91d5ec4c4dcd10ceec984c6e663ea82acf353995, Sat Apr 6 15:27:28 CDT 2019 hbase(main):003:0> list
登錄Hbase web,來查看HBase的數據是否初始化成功.
3、部署pinpoint-collector服務
部署war包(將war包放到tomcat webapps目錄),修改server.xml配置.
#替換端口號 sed -i 's/port="8005"/port="18005"/g' server.xml sed -i 's/port="8080"/port="18080"/g' server.xml sed -i 's/port="8443"/port="18443"/g' server.xml sed -i 's/port="8009"/port="18009"/g' server.xml #啟動tomcat服務,並檢查日志是否正常 # ./startup.sh
4、部署pinpoint-web
部署war包(以webapps目錄部署),修改server.xml配置
部署pinpoint-web 部署war包(以webapps目錄部署),修改server.xml配置 sed -i 's/port="8005"/port="28005"/g' server.xml sed -i 's/port="8080"/port="28080"/g' server.xml sed -i 's/port="8443"/port="28443"/g' server.xml sed -i 's/port="8009"/port="28009"/g' server.xml sed -i 's/redirectPort="8443"/redirectPort="28443"/g' server.xml 啟動tomcat服務,並檢查日志是否正常 # ./startup.sh
然后可以在瀏覽器中:http://10.0.10.201:28080/pp-web/
5、部署pinpoint-agent采集監控數據
首先將pinpoint-agent-1.8.5.tar.gz傳入到客戶端服務器10.0.10.46/87並解壓至/usr/local/pinpoint-agent目錄中
配置pinpoint-agent采集器
pinpoint-agent]# vi pinpoint.config #主要修改IP,只需要指定到安裝pinpoint-collector的IP就行了,安裝pp-col啟動后,自動就開啟了9994,9995,9996的端口了. profiler.collector.ip=10.0.10.201
6、tomcat方式部署的java應用的監控,只需要在配置文件添加如下幾行重啟服務即可.
# 修改測試項目下的tomcat啟動文件"catalina.sh",修改這個只要是為了監控測試環境的Tomcat,增加探針 bin]# vim catalina.sh CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar" CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=AP-TOMCAT" CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=AP-TEST" # 第一行是pp-agent的jar包位置 # 第二行是agent的ID,這個ID是唯一的,我是用pp + 日期命名的,只要與其他的項目的ID不重復就好了 # 第三行是采集項目的名字,這個名字可以隨便取,只要各個項目不重復就好了
7、springboot 包部署 如果是jar包部署,直接在啟動命令加啟動參數:
nohup $jdk_path/bin/java $jvm -Duser.timezone=GMT+08 \ -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar -Dpinpoint.agentId=應用唯一ID \ -Dpinpoint.applicationName=應用名稱 \ -jar app-boot.jar > app-boot.log 2>&1 &
在啟動jar服務時,添加如下兩行即可.
刷新頁面並展示信息如下:
微服務展示
tomcat展示:
調用鏈路展示:
weblogic 部署的java應用監控:
鏈接文檔:https://github.com/pinpoint-apm/pinpoint/tree/master/plugins/weblogic
SAVE_JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar -Dpinpoint.agentId=weblogic-112 -Dpinpoint.applicationName=test-weblogic"
參考文檔:
https://blog.csdn.net/zdshare/article/details/90640676
https://cloud.tencent.com/developer/article/1521571
https://www.jb51.net/article/171795.htm