點擊鏈接加入QQ群 522720170(免費公開課、視頻應有盡有):https://jq.qq.com/?_wv=1027&k=5C08ATe
在使用Dubbo進行服務化或者整合應用后瓷蛙,假設(shè)某個服務后臺日志顯示有異常悼瓮,這個服務又被多個應用調(diào)用的情況下,我們通常很難判斷是哪個應用調(diào)用的艰猬,問題的起因是什么横堡,因此我們需要一套分布式跟蹤系統(tǒng)來快速定位問題,Pinpoint可以幫助我們快速定位問題姥宝。
什么是Pinpoint
Pinpoint是一個開源的 APM (Application Performance Management/應用性能管理)工具翅萤,用于基于java的大規(guī)模分布式系統(tǒng)。 仿照Google Dapper,Pinpoint通過跟蹤分布式應用之間的調(diào)用來提供解決方案套么,以幫助分析系統(tǒng)的總體結(jié)構(gòu)和內(nèi)部模塊之間如何相互聯(lián)系培己。
服務器地圖
ServerMap
通過可視化分布式系統(tǒng)的模塊和他們之間的相互聯(lián)系來理解系統(tǒng)拓撲。點擊某個節(jié)點會展示這個模塊的詳情胚泌,比如它當前的狀態(tài)和請求數(shù)量省咨。
實時活動線程圖表
Realtime Active Thread Chart
實時監(jiān)控應用內(nèi)部的活動線程。
請求/應答分布圖表
Request/Response Scatter Chart
長期可視化請求數(shù)量和應答模式來定位潛在問題玷室。通過在圖表上拉拽可以選擇請求查看更多的詳細信息零蓉。
調(diào)用棧
CallStack
在分布式環(huán)境中為每個調(diào)用生成代碼級別的可視圖,在單個視圖中定位瓶頸和失敗點穷缤。
巡查
Inspector
查看應用上的其他詳細信息敌蜂,比如CPU使用率,內(nèi)存/垃圾回收津肛,TPS章喉,和JVM參數(shù)。
支持模塊
JDK 6+
Tomcat 6 / 7 / 8身坐,Jetty 8/9秸脱,JBoss EAP 6,Resin 4部蛇,Websphere 6 / 7 / 8摊唇,Vertx 3.3 / 3.4 / 3.5
Spring,Spring Boot(嵌入式Tomcat涯鲁,Jetty)
Apache HTTP Client 3.x / 4.x巷查,JDK HttpConnector,GoogleHttpClient抹腿,OkHttpClient吮便,NingAsyncHttpClient
Thrift Client,Thrift Service幢踏,DUBBO PROVIDER,DUBBO CONSUMER
ActiveMQ许师,RabbitMQ
MySQL房蝉,Oracle,MSSQL微渠,CUBRID搭幻,POSTGRESQL,MARIA
Arcus逞盆,Memcached檀蹋,Redis,CASSANDRA
iBATIS云芦,MyBatis
DBCP俯逾,DBCP2贸桶,HIKARICP
gson,Jackson桌肴,Json Lib
log4j皇筛,Logback
部署
說下我的測試環(huán)境:hadoop-2.7.4 集群,hbase-1.3.1 集群坠七,zookeeper-3.4.9 單機水醋,一共四臺機器。為避免部分端口不通等可疑問題, 建議關(guān)閉防火墻
好消息彪置!咨詢QQ:2083503238拄踪,咨詢微信:qiangfans
小強性能測試班19年3月3號開課,年底前報名優(yōu)惠500元拳魁,課程大綱與介紹點擊文末【閱讀原文】
所有學員享受免費惶桐、不限次數(shù)、無限重學的權(quán)利直到學會為止的猛,拒絕限制次數(shù)耀盗、繳納重學費的惡心規(guī)矩。
公眾號內(nèi)回復6獲取詳情(不是本文回復)
下載
進入GitHub 找到需要的版本:https://github.com/naver/pinpoint/releases
wget https://github.com/naver/pinpoint/releases/download/1.7.3/pinpoint-agent-1.7.3.tar.gz
wget https://github.com/naver/pinpoint/releases/download/1.7.3/pinpoint-collector-1.7.3.war
wget https://github.com/naver/pinpoint/releases/download/1.7.3/pinpoint-web-1.7.3.war
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.4.5/hbase-1.4.5-bin.tar.gz
準備環(huán)境
配置 JDK 環(huán)境 (筆者使用 Oracle 1.8, openJdk 可以)
搭建 Zookeeper 環(huán)境
搭建 Hbase (單節(jié)點即可)
在 Hbase/bin 下執(zhí)行./hbase shell hbase-create.hbase創(chuàng)建相關(guān)存儲結(jié)構(gòu)
準備 Tomcat 環(huán)境
準備可分布式部署的項目用于測試
修改 Pinpoint
pinpoint-collector-1.7.3.war
修改 WEB-INF\classes\hbase.properties 文件
hbase.client.host 設(shè)置為 hbase 所用的 zk 地址
修改 WEB-INF\classes\pinpoint-collector.properties 文件
cluster.zookeeper.address 修改為給 Pinpoint 準備的 zk 地址
pinpoint-web-1.7.3.war
修改 WEB-INF\classes\hbase.properties 文件
hbase.client.host 設(shè)置為 hbase 所用的 zk 地址
修改 WEB-INF\classes\pinpoint-web.properties 文件
cluster.zookeeper.address 修改為給 Pinpoint 準備的 zk 地址
部署 collector 和 web
將準備好的 tomcat 中 webapps 目錄清空
將上一步修好的兩個 war 包放置到 webapps
將pinpoint-web-1.7.3.war修改為ROOT.war
將pinpoint-collector-1.7.3.war修改為collector.war
啟動 Tomcat
查看 tomcat/logs 下的日志, 注意觀察有沒有連接不到 2181 端口的日志, 如果有, 可能是 war 中的配置沒有修改正確, 建議清空 tomcat 下 work卦尊、temp 文件夾后重試
部署 agent
安裝agent叛拷,不需要修改哪怕一行代碼
Pinpoint對性能的影響最小(資源使用量增加約3%)
將 pinpoint-agent-1.7.3.tar.gz 解壓,
把 pinpoint.config 文件中profiler.collector.ip屬性值修改為部署 collector 機器的主機名或 IP
注意: 每個項目所在的服務器都需要部署 agent
準備Dubbo示例程序
我的測試項目:https://github.com/souyunku/spring-boot-examples/tree/master/spring-boot-dubbo
配置application.properties岂却,修改地址zookeeper.connect=127.0.0.1:2181為自己的zk
mvn clean package
修改自己項目的啟動參數(shù)
需要添加三個啟動參數(shù)
-javaagent: 指向 agent 目錄下的 pinpoint-bootstrap-1.7.3.jar
-Dpinpoint.agentId:設(shè)置全局唯一標示 ID
-Dpinpoint.applicationName: 設(shè)置項目的名稱(如果同一項目部署兩臺實例,這兩臺的參數(shù)應該一致)
Tomcat 和 Jar 項目有不同的添加方式,可參考如下方式修改
Tomcat
找到 bin/catalina.sh 添加下面的代碼
CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-1.7.3.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=tomcat1"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=webcontroller"
SpringBoot
# DUBBO 提供者
java -javaagent:/opt/pinpoint-bootstrap-1.7.3.jar -Dpinpoint.agentId=dubbo-provider-1 -Dpinpoint.applicationName=dubbo-provider -jar dubbo-provider-1.0-SNAPSHOT.jar
# DUBBO 消費者
java -javaagent:/opt/pinpoint-bootstrap-1.7.3.jar -Dpinpoint.agentId=dubbo-consumer-1 -Dpinpoint.applicationName=dubbo-consumer -jar dubbo-consumer-1.0-SNAPSHOT.jar
在自己的項目添加完畢啟動后,即可登錄 web 后臺查看集群的狀態(tài), 跟蹤請求
測試
訪問消費方地址模擬用戶請求
http://localhost:8080/sayHello?name=souyunku
截圖
首頁
指定時間點的忿薇,選中區(qū)域的請求明細
請求響應明細和系統(tǒng)拓撲
視圖中定位瓶頸和失敗點
消費者機器的, CPU使用率躏哩,內(nèi)存/垃圾回收署浩,TPS,和JVM參數(shù)
參考:
https://segmentfault.com/a/1190000011290541
http://dubbo.apache.org/#!/blog/pinpoint.md?lang=en-us