在使用Dubbo進行服務化或者整合應用後,假設某個服務後臺日誌顯示有異常,這個服務又被多個應用調用的狀況下,咱們一般很難判斷是哪一個應用調用的,問題的原由是什麼,所以咱們須要一套分佈式跟蹤系統來快速定位問題,Pinpoint能夠幫助咱們快速定位問題(固然,解決方案也不止這一種)。java
摘自Pinpoint學習筆記git
skyao.gitbooks.io/learning-pi…github
Pinpoint是一個開源的 APM (Application Performance Management/應用性能管理)工具,用於基於java的大規模分佈式系統。 仿照Google Dapper,Pinpoint經過跟蹤分佈式應用之間的調用來提供解決方案,以幫助分析系統的整體結構和內部模塊之間如何相互聯繫。web
注:對於各個模塊之間的通信英文原文中用的是transaction一詞,可是我以爲若是翻譯爲"事務"容易引發誤解,因此替換爲"交互"或者"調用"這種比較直白的字眼。spring
Pinpoint是一個分析大型分佈式系統的平臺,提供解決方案來處理海量跟蹤數據。2012年七月開始開發,2015年1月9日做爲開源項目啓動。shell
ServerMapapache
經過可視化分佈式系統的模塊和他們之間的相互聯繫來理解系統拓撲。點擊某個節點會展現這個模塊的詳情,好比它當前的狀態和請求數量。bootstrap
Realtime Active Thread Chartsegmentfault
實時監控應用內部的活動線程。tomcat
Request/Response Scatter Chart
長期可視化請求數量和應答模式來定位潛在問題。經過在圖表上拉拽能夠選擇請求查看更多的詳細信息。
CallStack
在分佈式環境中爲每一個調用生成代碼級別的可視圖,在單個視圖中定位瓶頸和失敗點。
Inspector
查看應用上的其餘詳細信息,好比CPU使用率,內存/垃圾回收,TPS,和JVM參數。
本次基礎環境搭建我就不講了,如不會,請自行搜索或者參考我博客文章www.souyunku.com
進入GitHub 找到須要的版本:github.com/naver/pinpo…
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
複製代碼
./hbase shell hbase-create.hbase
建立相關存儲結構pinpoint-collector-1.7.3.war
修改 WEB-INF\classes\hbase.properties 文件
hbase.client.host 設置爲 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 設置爲 hbase 所用的 zk 地址
修改 WEB-INF\classes\pinpoint-web.properties 文件
cluster.zookeeper.address 修改成給 Pinpoint 準備的 zk 地址
複製代碼
pinpoint-web-1.7.3.war
修改成 ROOT.war
pinpoint-collector-1.7.3.war
修改成 collector.war
查看 tomcat/logs 下的日誌, 注意觀察有沒有鏈接不到 2181 端口的日誌, 若是有, 多是 war 中的配置沒有修改正確, 建議清空 tomcat 下 work、temp 文件夾後重試
profiler.collector.ip
屬性值修改成部署 collector 機器的主機名或 IP注意: 每一個項目所在的服務器都須要部署 agent
個人測試項目:github.com/souyunku/sp…
配置 application.properties
,修改地址 zookeeper.connect=127.0.0.1:2181
爲本身的zk
mvn clean package
複製代碼
須要添加三個啓動參數
-javaagent: 指向 agent 目錄下的 pinpoint-bootstrap-1.7.3.jar
-Dpinpoint.agentId:設置全局惟一標示 ID
-Dpinpoint.applicationName: 設置項目的名稱(若是同一項目部署兩臺實例,這兩臺的參數應該一致)
複製代碼
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 後臺查看集羣的狀態, 跟蹤請求
訪問消費方地址模擬用戶請求
http://localhost:8080/sayHello?name=souyunku
首頁
指定時間點的,選中區域的請求明細 請求響應明細和系統拓撲 視圖中定位瓶頸和失敗點 消費者機器的, CPU使用率,內存/垃圾回收,TPS,和JVM參數參考: