Spring Cloud 學(xué)習(xí)(33) --- APM(三) Pinpoint

Pinpoint 是韓國人編寫的 APM 系統(tǒng)性穿,是一個分析大規(guī)模分布式系統(tǒng)的平臺,并提供處理大量跟蹤數(shù)據(jù)的解決方案雷滚。

Pinpoint

特點

  • 分布式事務(wù)追蹤需曾,跟蹤跨分布式應(yīng)用的消息
  • 自動檢測應(yīng)用拓展
  • 水平擴(kuò)展,以便支持大規(guī)模服務(wù)器集群
  • 提供代碼級了踐行,便于定位失敗點和瓶頸
  • 提供字節(jié)碼增強(qiáng)技術(shù)呆万,添加新功能無需修改代碼

優(yōu)勢

  • 非侵入式:使用字節(jié)碼增強(qiáng)技術(shù)商源,添加新功能無需修改代碼
  • 資源消耗小:對性能影響最心奔酢(資源使用量增加約3%)

架構(gòu)模塊

  • HBase:主要用于存儲數(shù)據(jù)
  • Pinpoint Collector:部署在 Web 容器上
  • Pinpoint Web:部署在 Web 容器上
  • Pinpoint Agent:附加到用于分析的 Java 應(yīng)用程序

流程:首先通過 agent 收集調(diào)用應(yīng)用的數(shù)據(jù)牡彻,將數(shù)據(jù)發(fā)送到 collector,collector 通過處理和分析數(shù)據(jù)出爹,最后存儲到 HBase 中庄吼,可以通過 Pinpoint Web UI 查看已經(jīng)分析好的調(diào)用分析數(shù)據(jù)

數(shù)據(jù)結(jié)構(gòu)

  • Span:RPC 跟蹤的基本單位,表示 RPC 到達(dá)時處理的工作严就,包含跟蹤數(shù)據(jù)总寻。Span 將子項標(biāo)記未 SpanEvent,作為數(shù)據(jù)結(jié)構(gòu)盈蛮,每個 Span 包含一個 TraceId
  • Trace:一系列跨度废菱,由相關(guān)的 RPC(Span) 組成。同一跟蹤中的跨距共享相同的 TransactionId抖誉。Trace 通過 SpanIds 和 ParentSpanIds 排序為分層樹結(jié)構(gòu)
  • TraceId:由 TransactionId殊轴、SpanId、ParentSpanId 組成的秘鑰集合袒炉。TransactionId 代表消息id旁理,SpanId 和 ParentSpanId 表示 RPC 父子關(guān)系

TransactionId:來自單個事務(wù)的分布式系統(tǒng)發(fā)送、接收的消息id我磁,必須在整個服務(wù)器組是全局唯一的
SpanId:接收 RPC 消息時處理的作業(yè) ID孽文,是在 RPC 到達(dá)節(jié)點時生成的
ParentSpanId:生成 RPC 的父 span 的 spanId,如果節(jié)點是事務(wù)的起始點夺艰,不會有父跨度芋哭。

pinpont 架構(gòu)圖

兼容性

JDK 兼容性

Pinpoint 版本 Agent 需要的 JDK 版本 Collector 需要的 JDK 版本 Web 需要的 JDK 版本
1.0.x 6-8 6+ 6+
1.1.x 6-8 7+ 7+
1.5.x 6-8 7+ 7+
1.6.x 6-8 7+ 7+
1.7.x 6-8 8+ 8+
1.8.x 6-8,9+ 8+ 8+

Base 兼容性

Pinpoint 版本 HBase 0.94.x HBase 0.98.x HBase 1.0.x HBase 1.1.x HBase 1.2.x
1.0.x × × × ×
1.1.x × not tested not tested not tested
1.5.x × not tested not tested not tested
1.6.x × not tested not tested not tested
1.7.x × not tested not tested not tested
1.8.x × not tested not tested not tested

Agent-Collector 兼容性

Agent 版本 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
1.1.x not tested
1.5.x × ×
1.6.x × × not tested
1.7.x × × × ×
1.8.x × × × × ×

Flink 兼容性

Pinpoint 版本 flink 1.3.x flink 1.4.x
1.7.x ×

實例

HBase 版本為 1.2.11,下載地址:http://mirrors.hust.edu.cn/apache/hbase/hbase-1.2.11/
Pinpoint 版本為 1.7.3郁副,下載地址:https://github.com/naver/pinpoint/releases/tag/1.7.
Tomcat 版本為:8.x

其中减牺,Pinpoint 需要下載 agentcollector存谎、web 三個文件拔疚。

HBase

啟動 HBase

解壓 HBase,修改 config/hbase-env.sh 中 JAVA 目錄

HBase Java home

修改后啟動 HBase: ./bin/start-hbase.sh

starting master, logging to /opt/hbase/bin/../logs/hbase-root-master-localhost.localdomain.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

稍等片刻后既荚,jps 查看是否啟動完成稚失,若出現(xiàn) HMaster,則啟動完成:

hbase setup

加載 Pinpoint HBase 腳本

https://github.com/naver/pinpoint/tree/master/hbase/scripts 中恰聘,獲取 hbase-create.hbase句各、hbase-drop.hbase 文件吸占,新建目錄 hbase-script,執(zhí)行腳本:

./bin/hbase shell /root/hbase-script/hbase-create.hbase 
HBase Shell

Pinpoint

啟動 Collector诫钓、Web

將 tomcat 解壓為2個包旬昭,分別為 collectorweb菌湃,刪除 tomcat 目錄下 webapps 下除 ROOT 的文件夾问拘,并刪除 ROOT 下所有文件。
將 collector惧所、web 分別解壓至對應(yīng) tomcat 的 ROOT 目錄下骤坐,解壓命令:

jar -xvf pinpoint-collector-1.7.3.war

分別修改兩個 tomcat 的 config/server.xml 文件,修改端口 8005下愈、8080纽绍、84438009 端口势似,然后分別啟動兩個 tomcat拌夏。啟動成功后訪問 zipkin:http://192.168.67.136:28080/#/main

zipkin

配置 Agent

創(chuàng)建四個文件夾:eurekaprovider履因、consumer障簿、zuul,并將四個服務(wù)移入對應(yīng)文件夾栅迄,解壓 agent.tar.gz站故,將解壓后的文件放入四個文件夾:

pinpoint agent

配置 agent 中的 pinpoint.config 文件,修改 profiler.collector.ip 設(shè)置為 pinpoint-collector 的地址毅舆,如果在同一個服務(wù)器上西篓,不用修改。

pinpoint collector ip

可以看到在 pinpoint.config 中監(jiān)聽了 9994憋活、9995岂津、9996 端口,這三個端口在 collector 啟動后就開啟了悦即,默認(rèn)即可寸爆。如果 collector 需要修改端口,需要修改 $COLLECTOR_TOMCAT_HOME/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties 文件盐欺。

啟動服務(wù)

參數(shù)解釋:
-Dpinpoint.agentId:表示 agent 的唯一標(biāo)識
-Dpinpoint.applicationName:表示用用名稱

eureka
java -javaagent:/usr/local/src/pinpoint/soft/eureka/pinpoint-agent-1.7.3/pinpoint-bootstrap-1.7.3.jar -Dpinpoint.agentId=eureka-server -Dpinpoint.applicationName=eureka-server -jar spring-cloud-eureka-server-simple-0.0.1-SNAPSHOT.jar

provider
java -javaagent:/usr/local/src/pinpoint/soft/eureka/pinpoint-agent-1.7.3/pinpoint-bootstrap-1.7.3.jar -Dpinpoint.agentId=provider -Dpinpoint.applicationName=provider -jar spring-cloud-apm-skywalking-provider-0.0.1-SNAPSHOT.jar

consumer
java -javaagent:/usr/local/src/pinpoint/soft/eureka/pinpoint-agent-1.7.3/pinpoint-bootstrap-1.7.3.jar -Dpinpoint.agentId=consumer -Dpinpoint.applicationName=consumer -jar spring-cloud-apm-skywlaking-consumer-0.0.1-SNAPSHOT.jar

zuul
java -javaagent:/usr/local/src/pinpoint/soft/eureka/pinpoint-agent-1.7.3/pinpoint-bootstrap-1.7.3.jar -Dpinpoint.agentId=zuul -Dpinpoint.applicationName=zuul -jar spring-cloud-apm-skywalking-zuul-0.0.1-SNAPSHOT.jar -Xms256m -Xmx256m

成功啟動后,訪問 pinpoint:http://192.168.67.136:28080/#/main

pinpoint dashboard

通過 zuul 獲取數(shù)據(jù):http://192.168.67.136:9020/client/get-info

pinpoint zuul

再次查看 pinpoint仅醇,切換到 zuul 選項卡:


pinpoint error

pinpoint error

紅色代表調(diào)用失斎呙馈(第一次調(diào)用時需要從 eureka 獲取數(shù)據(jù),默認(rèn)超時一秒)析二。數(shù)字代表調(diào)用次數(shù)

Inspector:檢查器粉洼,可以查看服務(wù)的調(diào)用信息节预。點擊查看:

inspector

Inspector 中,Timeline 選項卡顯示請求時間段属韧,information 選項卡顯示當(dāng)前節(jié)點啟動的信息安拟,包括:應(yīng)用名、agentId宵喂、啟動時間等糠赦,Heap Usage 顯示堆使用情況,JVM/System Cpu Usage 顯示 CPU 使用情況锅棕,Active Thread 顯示線程使用情況拙泽。Response Time 顯示響應(yīng)時間,Data Source 顯示數(shù)據(jù)庫使用情況

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末裸燎,一起剝皮案震驚了整個濱河市顾瞻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌德绿,老刑警劉巖荷荤,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異移稳,居然都是意外死亡蕴纳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門秒裕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袱蚓,“玉大人,你說我怎么就攤上這事几蜻±耍” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵梭稚,是天一觀的道長颖低。 經(jīng)常有香客問我,道長弧烤,這世上最難降的妖魔是什么忱屑? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮暇昂,結(jié)果婚禮上莺戒,老公的妹妹穿的比我還像新娘。我一直安慰自己急波,他們只是感情好从铲,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著澄暮,像睡著了一般名段。 火紅的嫁衣襯著肌膚如雪阱扬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天伸辟,我揣著相機(jī)與錄音麻惶,去河邊找鬼。 笑死信夫,一個胖子當(dāng)著我的面吹牛窃蹋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播忙迁,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼脐彩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了姊扔?” 一聲冷哼從身側(cè)響起惠奸,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恰梢,沒想到半個月后佛南,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡嵌言,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年嗅回,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摧茴。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡绵载,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苛白,到底是詐尸還是另有隱情娃豹,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布购裙,位于F島的核電站懂版,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏躏率。R本人自食惡果不足惜躯畴,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望薇芝。 院中可真熱鬧蓬抄,春花似錦、人聲如沸夯到。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽黄娘。三九已至峭状,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逼争,已是汗流浹背优床。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留誓焦,地道東北人胆敞。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像杂伟,于是被迫代替她去往敵國和親移层。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 寫在前面 部分圖片因為之前的圖床掛了所以丟失…近期目測沒有時間重新搞了… APM監(jiān)控工具之Pinpoint初探 簡...
    Lacia閱讀 11,837評論 7 6
  • 前言:由于翻譯水平有限赫粥,難免有所疏漏观话。各位讀者在本機(jī)搭建環(huán)境demo時請如有疑惑請聯(lián)系:tienchen1990@...
    32442b7b969c閱讀 10,762評論 1 2
  • 本文將講述Pinpoint的技術(shù),如事務(wù)追蹤和字節(jié)碼增強(qiáng)越平。并介紹應(yīng)用于Pinpoint Agent的優(yōu)化方法频蛔,該方...
    Ax1an閱讀 7,688評論 0 6
  • 前期準(zhǔn)備 節(jié)點準(zhǔn)備 本次節(jié)點列表如下: pinpoint集群依賴于hbase集群,因此需要先搭建好hbase集群(...
    洮生閱讀 4,120評論 1 6
  • 簡介 Pinpoint是用Java編寫的大型分布式系統(tǒng)的APM(應(yīng)用程序性能管理)工具...
    無所謂_f0aa閱讀 3,775評論 0 0