目錄java
Springboot: 2.1.7.RELEASEgit
SpringCloud: Greenwich.SR2github
Pinpoint是一個由韓國人編寫的爲大型分佈式系統服務的鏈路跟蹤平臺,並提供大量鏈路跟蹤數據分析彙總解決方案。自2012年7月開始開發,與2015年1月作爲一個開源項目推出。web
先看一下官方提供的架構圖,如圖:spring
Pinpoint主要包含了4個組件:shell
架構圖從上往下看,首先是經過Agent組件收集須要的數據,經過UPD/TCP的方式將數據發送給Collector,由Collector將數據分析整理事後存入HBase,經過Web UI組件將分析好的數據從HBase中讀出,展現在現代化的UI界面上。apache
Pinpoint中,核心數據結構由Span, Trace, 和 TraceId組成。bootstrap
Pinpoint Version | Agent | Collector | Web |
---|---|---|---|
1.0.x | 6-8 | 6-8 | 6-8 |
1.1.x | 6-8 | 7-8 | 7-8 |
1.5.x | 6-8 | 7-8 | 7-8 |
1.6.x | 6-8 | 7-8 | 7-8 |
1.7.x | 6-8 | 8 | 8 |
1.8.0 | 6-10 | 8 | 8 |
1.8.1+ | 6-11 | 8 | 8 |
Pinpoint Version | HBase 0.94.x | HBase 0.98.x | HBase 1.0.x | HBase 1.2.x | HBase 2.0.x |
---|---|---|---|---|---|
1.0.x | yes | no | no | no | no |
1.1.x | no | not tested | yes | not tested | no |
1.5.x | no | not tested | yes | not tested | no |
1.6.x | no | not tested | not tested | yes | no |
1.7.x | no | not tested | not tested | yes | no |
1.8.x | no | not tested | not tested | yes | no |
Pinpoint Version | HBase 0.94.x | HBase 0.98.x | HBase 1.0.x | HBase 1.2.x | HBase 2.0.x |
Agent Version | Collector 1.0.x | Collector 1.1.x | Collector 1.5.x | Collector 1.6.x | Collector 1.7.x | Collector 1.8.x |
---|---|---|---|---|---|---|
1.0.x | yes | yes | yes | yes | yes | yes |
1.1.x | not tested | yes | yes | yes | yes | yes |
1.5.x | no | no | yes | yes | yes | yes |
1.6.x | no | no | not tested | yes | yes | yes |
1.7.x | no | no | no | no | yes | yes |
1.8.x | no | no | no | no | no | yes |
Agent Version | Collector 1.0.x | Collector 1.1.x | Collector 1.5.x | Collector 1.6.x | Collector 1.7.x | Collector 1.8.x |
Pinpoint Version | flink 1.3.X | flink 1.4.X | flink 1.5.X | flink 1.6.X | flink 1.7.X | Pinpoint Version |
---|---|---|---|---|---|---|
1.7.x | yes | yes | no | no | no | 1.7.x |
1.8.x | yes | yes | no | no | no | 1.8.x |
1.9.x | yes | yes | yes | yes | yes | 1.9.x |
Pinpoint Version | flink 1.3.X | flink 1.4.X | flink 1.5.X | flink 1.6.X | flink 1.7.X | Pinpoint Version |
1.7.x | yes | yes | no | no | no | 1.7.x |
1.8.x | yes | yes | no | no | no | 1.8.x |
1.9.x | yes | yes | yes | yes | yes | 1.9.x |
在介紹實戰以前,咱們先介紹一下Pinpoint部署構建。瀏覽器
筆者構建的一些前置條件:tomcat
java:1.8
CentOS:7.6
存儲方式須要使用HBase1.2.x的版本,筆者這裏選擇的是HBase1.2.6,下載地址爲Apache官網,推薦使用有端點續傳功能的下載器下載(實在是有點慢),HBase全版本下載地址:http://archive.apache.org/dist/hbase/ ,各位讀者選擇本身喜歡的版本下載。
下載完成後,將HBase1.2.6放入CentOS的opt目錄中,執行以下命令:
tar -xvzf hbase-1.2.6-bin.tar.gz mv hbase-1.2.6/ /data/service/hbase/
修改hbase中config目錄中的JAVA_HOME,將這裏的JAVA_HOME修改成本身本地的路徑,筆者這裏修改以下:
export JAVA_HOME=/opt/jdk1.8.0_221
修改完成後就能夠進入hbase的bin目錄,啓動hbase了,執行以下語句:
./start-hbase.sh
啓動成功後,能夠執行jps,若是看到有HMaster,可有證實啓動成功,以下:
19263 HMaster
也能夠打開瀏覽器訪問:http://ip:16010/master-status ,結果如圖:
接下來咱們先把Pinpoint的HBase的構建腳本導入,進入HBase的bin目錄下執行以下語句:
./hbase shell /opt/hbase-create.hbase
數據導入成功咱們在HBase的UI界面上能夠看到,如圖:
後面的目錄是筆者用來存放HBase初始化腳本的路徑,各位讀者可根據狀況自行替換,至此,HBase環境準備完成,接下來開始部署Collector和Web UI。
出於簡單方便考慮,不推薦初學者自行編譯代碼進行部署,能夠直接使用官方提供的發行版本進行部署。
瀏覽器訪問連接:https://github.com/naver/pinpoint/releases/ ,直接下載當前最新Release版本便可,筆者如今看到的最新版本是1.8.4,如圖,須要下載的內容有pinpoint-agent-1.8.4.tar.gz
、pinpoint-collector-1.8.4.war
和pinpoint-web-1.8.4.war
。
首先須要準備兩個tomcat,筆者這裏下載的tomcat8,解壓兩份後並重命名爲apache-tomcat-pinpoint-collector
和apache-tomcat-pinpoint-web
。
將apache-tomcat-pinpoint-collector
中的config中的server.xml進行修改。
將8005改爲18005,8080改爲18080,8443改成18443,8009改成18009。
一樣也將apache-tomcat-pinpoint-web
中的config中的server.xml進行修改。
將8005改爲28005,8080改爲28080,8443改成28443,8009改成28009。
將apache-tomcat-pinpoint-collector
中的webapp/ROOT
清空,將pinpoint-collector-1.8.4.war
放入並解壓。解壓完成後就能夠進入bin目錄使用./startup.sh
啓動tomcat了,而且使用命令tail -f ../logs/catalina.out
觀察啓動日誌是否啓動成功。
一樣,將apache-tomcat-pinpoint-web
中的webapp/ROOT
清空,將pinpoint-web-1.8.4.war
放入並解壓。解壓完成後就能夠進入bin目錄使用./startup.sh
啓動tomcat了,而且使用命令tail -f ../logs/catalina.out
觀察啓動日誌是否啓動成功。
當Collector和Web UI都啓動成功後,就可使用打開瀏覽器訪問:http://ip:28080/#/main ,初次訪問如圖:
實戰案例,本實戰案例和上一篇實戰案例保持一致,一樣是4個服務,包括Zuul-Service、Eureka-Service、Consumer-Service和Provider-Service。具體實現代碼本章再也不列出,各位讀者能夠參考上一篇或者Github倉庫(https://github.com/meteor1993/SpringCloudLearning/tree/master/chapter15),下面咱們介紹Spring Cloud是如何與Pinpoint整合使用的。
接入方式和上一篇的Skywalking是一致的,都是使用探針技術接入應用程序,java -jar的方式來加載Agent探針。
首先在工程的跟目錄中執行mvn install
,然後在CentOS的opt中新建4個目錄,分別存放4個打好包的工程。筆者這裏建立的4個目錄分別爲/opt/project/consumer_service
,/opt/project/eureka_service
,/opt/project/provider_service
和/opt/project/zuul_service
,將4個jar包分別放入對應的目錄中,並解壓剛纔咱們下載好的pinpoint-agent-1.8.4.tar.gz
探針,咱們將解壓後的探針放在/opt的目錄中,接下來,咱們使用以下命令,順次啓動4個jar包:
java -javaagent:/opt/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.agentId=consumer-service -Dpinpoint.applicationName=consumer-server -jar /opt/project/consumer_service/consumer-0.0.1-SNAPSHOT.jar java -javaagent:/opt/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.agentId=eureka-service -Dpinpoint.applicationName=eureka-server -jar /opt/project/eureka_service/eureka-0.0.1-SNAPSHOT.jar java -javaagent:/opt/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.agentId=provider-service -Dpinpoint.applicationName=provider-server -jar /opt/project/provider_service/provider-0.0.1-SNAPSHOT.jar java -javaagent:/opt/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.agentId=zuul-service -Dpinpoint.applicationName=zuul-server -jar /opt/project/zuul_service/zuul-0.0.1-SNAPSHOT.jar
上述命令執行完成以後,再打開Web UI查看顯示狀況。
首先打開瀏覽器訪問:http://192.168.44.129:8080/client/hello?name=spring ,頁面正常顯示Hello, name is spring,查看Pinpoint的Web UI,如圖:
圖清楚的顯示了咱們當前系統的拓撲結構,橫線上面的數字表明瞭調用次數,右邊部分,最上面顯示的是成功和失敗的狀況,中間部分顯示的是響應時間,下面顯示的是加載所使用的時間。
檢查器(Inspector):這裏已Zuul-Service爲例,Timeline顯示的是請求的時間段,Information顯示的是節點的一些當前信息,包含Application Name、Agent Id、Agent版本、JVM信息、開始時間等。
Heap信息的使用狀況,如圖:
系統CPU、活動線程、響應時間等信息如圖:
更多Pinpoint的信息,讀者能夠經過官方Demo(http://125.209.240.10:10123/#/main )或者自行構建試驗來查看結果,這裏再也不一一贅述。至此,Spring Cloud和Pinpoint的使用介紹也就完成了。更多有關Pinpoint的信息各位讀者能夠前往Github的官網進行查閱,地址爲:https://github.com/naver/pinpoint 。
這裏總結一下整個案例的啓動順序:
同Skywalking同樣,以上啓動順序供各位讀者參考,請各位讀者最好按照以上順序啓動,由於不一樣的組件以前實際上是有相互依賴關係的,若是隨意更改啓動順序可能會形成某些未知問題。至此,Spring Cloud和APM的相關操做就告一段落了。APM能夠很好的幫咱們理解系統行爲,也是分析系統性能的工具,更是發生問題故障的時候利器,能夠幫咱們快速的定位查找問題。