PinPoint分布式全鏈路監(jiān)控
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比宏偉網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式宏偉網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋宏偉地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
安裝需要的所有包下載路徑:
鏈接: https://pan.baidu.com/s/1sl9dP9r 密碼: jsux
介紹:
PinPoint是一個(gè)開源的APM((Application Performance Management/應(yīng)用性能管理)工具,基于JAVA的大規(guī)模分布式系統(tǒng)。
仿照GOOLE DAPPER,PinPoint通過跟蹤分布式應(yīng)用之間的調(diào)用來提供解決方案,以幫助分析系統(tǒng)的總體結(jié)構(gòu)和內(nèi)部模塊之間如何相互聯(lián)系
服務(wù)器地圖(ServerMap):
通過可視化分布式系統(tǒng)的模塊和他們之間的相互聯(lián)系來理解系統(tǒng)拓?fù)?。點(diǎn)擊某個(gè)節(jié)點(diǎn)會(huì)展示這個(gè)模塊的詳情,比如它當(dāng)前的狀態(tài)和請求數(shù)量。
實(shí)時(shí)活動(dòng)線程圖表(Realtime Active Thread Chart)
實(shí)時(shí)監(jiān)控應(yīng)用內(nèi)部的活動(dòng)線程。
請求/應(yīng)答分布圖表(Request/Response Scatter Chart)
長期可視化請求數(shù)量和應(yīng)答模式來定位潛在問題。通過在圖表上拉拽可以選擇請求查看更多的詳細(xì)信息
調(diào)用棧(CallStack)
在分布式環(huán)境中為每個(gè)調(diào)用生成代碼級別的可視圖,在單個(gè)視圖中定位瓶頸和失敗點(diǎn)
巡查(Inspector)
查看應(yīng)用上的其他詳細(xì)信息,比如CPU使用率,內(nèi)存/垃圾回收,TPS,和JVM參數(shù)
分布式系統(tǒng)調(diào)用鏈監(jiān)控特點(diǎn):
1、應(yīng)用架構(gòu)由集中式向分布式演進(jìn)后,整個(gè)調(diào)用關(guān)系變得復(fù)雜
2、分布式架構(gòu)由復(fù)雜且較大規(guī)模集群構(gòu)成,哥哥應(yīng)用之間相當(dāng)獨(dú)立,可能由不同團(tuán)隊(duì)、不同語言實(shí)現(xiàn)
3、系統(tǒng)一個(gè)完整的調(diào)用過程可能橫跨多個(gè)服務(wù)及數(shù)據(jù)中心
4、復(fù)雜的調(diào)用導(dǎo)致系統(tǒng)出問題后難以定位問題
5、無法準(zhǔn)確知道整體系統(tǒng)性能及運(yùn)行情況
Pinpoint中的數(shù)據(jù)結(jié)構(gòu)
Pinpoint中,核心數(shù)據(jù)結(jié)構(gòu)由Span, Trace, 和 TraceId組成
1、Span: RPC (遠(yuǎn)程過程調(diào)用/remote procedure call)跟蹤的基本單元; 當(dāng)一個(gè)RPC調(diào)用到達(dá)時(shí)指示工作已經(jīng)處理完成并包含跟蹤數(shù)據(jù)。
為了確保代碼級別的可見性,Span擁有帶SpanEvent標(biāo)簽的子結(jié)構(gòu)作為數(shù)據(jù)結(jié)構(gòu)。每個(gè)Span包含一個(gè)TraceId
2、Trace: 多個(gè)Span的集合; 由關(guān)聯(lián)的RPC (Spans)組成. 在同一個(gè)trace中的span共享相同的TransactionId。Trace通過SpanId和ParentSpanId整理為繼承樹結(jié)構(gòu).
3、TraceId: 由 TransactionId, SpanId, 和 ParentSpanId 組成的key的集合. TransactionId 指明消息ID,而SpanId 和 ParentSpanId 表示RPC的父-子關(guān)系。
TransactionId (TxId): 在分布式系統(tǒng)間單個(gè)事務(wù)發(fā)送/接收的消息的ID; 必須跨整個(gè)服務(wù)器集群做到全局唯一.
SpanId: 當(dāng)收到RPC消息時(shí)處理的工作的ID; 在RPC請求到達(dá)節(jié)點(diǎn)時(shí)生成。
ParentSpanId (pSpanId): 發(fā)起RPC調(diào)用的父span的SpanId. 如果節(jié)點(diǎn)是事務(wù)的起點(diǎn),這里將沒有父span - 對于這種情況, 使用值-1來表示這個(gè)span是事務(wù)的根span。
Google Dapper 和 NAVER Pinpoint在術(shù)語上的不同
全鏈路性能監(jiān)控
一個(gè)請求完整的調(diào)用鏈可能如下圖,經(jīng)過多個(gè)系統(tǒng)服務(wù),調(diào)用關(guān)系:
關(guān)注各個(gè)調(diào)用的各項(xiàng)性能指標(biāo),比如吞吐量(TPS),響應(yīng)時(shí)間及錯(cuò)誤記錄等
吞吐量:根據(jù)拓?fù)淇上鄳?yīng)計(jì)算組件、平臺、物理設(shè)備的實(shí)際吞吐量
響應(yīng)時(shí)間:包括整體調(diào)用的響應(yīng)時(shí)間和各個(gè)服務(wù)的相應(yīng)時(shí)間等
錯(cuò)誤記錄:根據(jù)服務(wù)返回統(tǒng)計(jì)單位時(shí)間異常次數(shù)
全鏈路性能監(jiān)控從整體維度到局部維度展示各項(xiàng)指標(biāo),將跨應(yīng)用的所有調(diào)用鏈性能信息集中展現(xiàn),可方便度量整體和局部性能,
并且方便找到故障產(chǎn)生的源頭,生產(chǎn)上可極大縮短故障排除時(shí)間。
環(huán)境準(zhǔn)備:
系統(tǒng)環(huán)境:centos 6.X以上,不要太低
JDK最好是7或8
部署HBASE(分布式用ZOOKEEPER可以使用內(nèi)置的,單點(diǎn)就不需要)
搭建過程:
Pinpoint由4部分組成
1.Pinpoint Agent, 2. Pinpoint Collector, 3. HBase, 4.Pinpoint Web UI
1、部署JDK
具體過程略:
a、配置環(huán)境變量vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${jre_home}/lib
export PATH=${JAVA_HOME}/bin:$PATH
##配置環(huán)境變量執(zhí)行:source /etc/profile
b、檢查配置是否成功
[root@MySQL-jiachi local]# java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) Server VM (build 25.112-b15, mixed mode)
2、安裝并啟動(dòng)hbase
解壓hbase-1.1.11-bin.tar.gz
1、tar -zxvf /root/pp/hbase-1.1.11-bin.tar.gz -C /usr/local/ ##建議重命名為hbase ===>/usr/local/hbase
2、cd /usr/local/hbase/conf
vim hbase-env.sh
27 export JAVA_HOME=/usr/local/jdk # 指到自己對應(yīng)的JAVA_HOME,默認(rèn)使用java6
vim hbase-site.xml
3、啟動(dòng)服務(wù)
/usr/local/hbase/bin/start-hbase.sh
注意: 這里說明一下,我們是最簡方式啟動(dòng)的Hbase,
沒有單獨(dú)部署Hbase集群管理的zookeeper,而是直接使用Hbase自帶的zk模塊。另外,Hbase強(qiáng)烈建議將數(shù)據(jù)存入HDFS里面,目前我們是存在Hbase本地的
4、驗(yàn)證HBASE是否啟動(dòng)成功
jps
8114 Jps
7820 HMaster
5、HBASE初始化表語句
/usr/local/hbase/bin/hbase shell /usr/local/hbase-create.hbase ##建表數(shù)據(jù)自己指定位置
最后輸出幾個(gè)表名字,沒有異常說明成功了,自己看日志.....
3、安裝 Pinpoint-collector,它的服務(wù)是基于tomcat的服務(wù),所以在部署前需要解壓tomcat包
1、tar -zxvf apache-tomcat-8.0.36.tar.gz -C /usr/local/ ##建議重命名為pinpoint-collector ===>/usr/local/pinpoint-collector
2、修改pinpoint-collector的Tomcat的配置,主要修改端口,避免與pp-web的Tomcat的端口沖突(若有多臺機(jī)器部署TOMCAT,就不需要修改端口)
3、cd /usr/local/pinpoint-collector/conf
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
sed -i 's/redirectPort="8443"/redirectPort="18443"/g' server.xml
sed -i "s/localhost/`ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | awk -F: '{print $2}'`/g" server.xml
4、rm -rf /usr/local/pinpoint-collector/webapps/*
5、把包pinpoint-collector-1.5.2.war解壓
#mkdir /usr/local/pinpoint-collector/webapps/ROOT
#unzip pinpoint-collector-1.5.2.war -d /usr/local/pinpoint-collector/webapps/ROOT
6、啟動(dòng)tomcat
#/usr/local/pinpoint-collector/bin/startup.sh
4、安裝pinpoint-web,具體過程和Pinpoint-collector完全相同,在解壓一個(gè)tomcat的包。
1、tar -zxvf apache-tomcat-8.0.36.tar.gz -C /usr/local/ ##建議重命名為pinpoint-web ===>/usr/local/pinpoint-web
2、修改pinpoint-web的Tomcat的配置,主要修改端口,避免與pinpoint-collector的Tomcat的端口沖突(若有多臺機(jī)器部署TOMCAT,就不需要修改端口)
3、cd /usr/local/pinpoint-web/conf
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
sed -i "s/localhost/`ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | awk -F: '{print $2}'`/g" server.xml
4、rm -rf /usr/local/pinpoint-web/webapps/*
5、把包pinpoint-web-1.5.2.war解壓
#mkdir /usr/local/pinpoint-web/webapps/ROOT
#unzip pinpoint-web-1.5.2.war -d /usr/local/pinpoint-web/webapps/ROOT
####這里說明一下:
hbase.properties 配置我們pp-web從哪個(gè)數(shù)據(jù)源獲取采集數(shù)據(jù),這里我們只指定Hbase的zookeeper地址。
jdbc.properties pp-web連接自身Mysql數(shù)據(jù)庫的連接認(rèn)證配置。
sql目錄 pp-web本身有些數(shù)據(jù)需要存放在MySQL數(shù)據(jù)庫中,這里需要初始化一下表結(jié)構(gòu)。
pinpoint-web.properties 這里pp-web集群的配置文件,如果你需要pp-web集群的話。
applicationContext-* .xml 這些文件在后續(xù)的調(diào)優(yōu)工作中會(huì)用到。
log4j.xml 日志相關(guān)配置
6、啟動(dòng)tomcat
#/usr/local/pinpoint-web/bin/startup.sh
5、部署pinpoint-agent采集監(jiān)控?cái)?shù)據(jù)
1、解壓包tar -zxvf pinpoint-agent-1.5.2.tar.gz
2、mv pinpoint-agent-1.5.2 /data/pp-agent
3、編輯配置文件vim pinpoint.config #測試環(huán)境都在一臺機(jī)器上不做修改,走默認(rèn)
主要修改IP,只需要指定到安裝Pinpoint-collector的IP就行了,安裝Pinpoint-collector啟動(dòng)后,自動(dòng)就開啟了9994,9995,9996的端口了。
這里就不需要操心了,如果有端口需求,要去Pinpoint-collector的配置文件("Pinpoint-collector/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties")中,修改這些端口
profiler.collector.ip=192.168.245.136(這里需要確定)
5、增加探針,在服務(wù)的用戶的訪問的入口處添加文件,一般在啟動(dòng)目錄下添加文件名為" vim catalina.sh"
######部署采集器就很簡單了,只需要加3句話就好了。我這邊做一個(gè)測試的Tomcat,來模擬部署 把catalina.sh 文件存放在tomcat 下的bin目錄下
#pinpoint agent路徑
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/pinpoint-agent-1.5.1/pinpoint-bootstrap-1.5.1.jar"
#被監(jiān)控工程使用agent的標(biāo)識號
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=0000002"
#被監(jiān)控工程名字
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=172.16.10.43_3306_自定義"
#####
第一行是pp-agent的jar包位置
第二行是agent的ID,這個(gè)ID是唯一的,我是用pp + 今天的日期命名的,只要與其他的項(xiàng)目的ID不重復(fù)就好了
第三行是采集項(xiàng)目的名字,這個(gè)名字可以隨便取,只要各個(gè)項(xiàng)目不重復(fù)就好了
配置完catalina.sh這個(gè)文件啟動(dòng)tomcat文件
6、訪問pinpoint-web服務(wù)
其他細(xì)節(jié)可以更多的研究......
到這里,整個(gè)部署過程就完了。值得要注意的地方:
如果Hbase不是與pinpoint-web, Pinpoint-collector裝在一臺機(jī)器上,需要安裝zookeeper,只要安裝就好,確實(shí)2181端口啟動(dòng)就好。
如果zookeeper安裝在獨(dú)立機(jī)器上,這里需要修改一下Pinpoint-collector 和 pinpoint-web的配置文件pinpoint-collector.properties,pinpoint-web.properties,不然會(huì)導(dǎo)致倆個(gè)模塊啟動(dòng)失敗。
如果有最新版本建議使用新的版本,老版本存在一些問題。