溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

PinPoint分布式全鏈路監(jiān)控

發(fā)布時(shí)間:2020-07-02 17:44:48 來(lái)源:網(wǎng)絡(luò) 閱讀:11666 作者:DBAspace 欄目:MySQL數(shù)據(jù)庫(kù)

PinPoint分布式全鏈路監(jiān)控

安裝需要的所有包下載路徑:

鏈接: https://pan.baidu.com/s/1sl9dP9r 密碼: jsux

介紹:

   PinPoint是一個(gè)開(kāi)源的APM((Application Performance Management/應(yīng)用性能管理)工具,基于JAVA的大規(guī)模分布式系統(tǒng)。

   仿照GOOLE DAPPER,PinPoint通過(guò)跟蹤分布式應(yīng)用之間的調(diào)用來(lái)提供解決方案,以幫助分析系統(tǒng)的總體結(jié)構(gòu)和內(nèi)部模塊之間如何相互聯(lián)系


    服務(wù)器地圖(ServerMap):

       通過(guò)可視化分布式系統(tǒng)的模塊和他們之間的相互聯(lián)系來(lái)理解系統(tǒng)拓?fù)?。點(diǎn)擊某個(gè)節(jié)點(diǎn)會(huì)展示這個(gè)模塊的詳情,比如它當(dāng)前的狀態(tài)和請(qǐng)求數(shù)量。

    實(shí)時(shí)活動(dòng)線(xiàn)程圖表(Realtime Active Thread Chart)

實(shí)時(shí)監(jiān)控應(yīng)用內(nèi)部的活動(dòng)線(xiàn)程。

請(qǐng)求/應(yīng)答分布圖表(Request/Response Scatter Chart)

長(zhǎng)期可視化請(qǐng)求數(shù)量和應(yīng)答模式來(lái)定位潛在問(wèn)題。通過(guò)在圖表上拉拽可以選擇請(qǐng)求查看更多的詳細(xì)信息

調(diào)用棧(CallStack)

在分布式環(huán)境中為每個(gè)調(diào)用生成代碼級(jí)別的可視圖,在單個(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ì)、不同語(yǔ)言實(shí)現(xiàn)

3、系統(tǒng)一個(gè)完整的調(diào)用過(guò)程可能橫跨多個(gè)服務(wù)及數(shù)據(jù)中心

4、復(fù)雜的調(diào)用導(dǎo)致系統(tǒng)出問(wèn)題后難以定位問(wèn)題

5、無(wú)法準(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)程過(guò)程調(diào)用/remote procedure call)跟蹤的基本單元; 當(dāng)一個(gè)RPC調(diào)用到達(dá)時(shí)指示工作已經(jīng)處理完成并包含跟蹤數(shù)據(jù)。

   為了確保代碼級(jí)別的可見(jiàn)性,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通過(guò)SpanId和ParentSpanId整理為繼承樹(shù)結(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請(qǐng)求到達(dá)節(jié)點(diǎn)時(shí)生成。

ParentSpanId (pSpanId): 發(fā)起RPC調(diào)用的父span的SpanId. 如果節(jié)點(diǎn)是事務(wù)的起點(diǎn),這里將沒(méi)有父span - 對(duì)于這種情況, 使用值-1來(lái)表示這個(gè)span是事務(wù)的根span。

Google Dapper 和 NAVER Pinpoint在術(shù)語(yǔ)上的不同

全鏈路性能監(jiān)控

    一個(gè)請(qǐng)求完整的調(diào)用鏈可能如下圖,經(jīng)過(guò)多個(gè)系統(tǒng)服務(wù),調(diào)用關(guān)系:

       PinPoint分布式全鏈路監(jiān)控

關(guān)注各個(gè)調(diào)用的各項(xiàng)性能指標(biāo),比如吞吐量(TPS),響應(yīng)時(shí)間及錯(cuò)誤記錄等

吞吐量:根據(jù)拓?fù)淇上鄳?yīng)計(jì)算組件、平臺(tái)、物理設(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)就不需要)

搭建過(guò)程:

Pinpoint由4部分組成

1.Pinpoint Agent, 2. Pinpoint Collector, 3. HBase, 4.Pinpoint Web UI

    1、部署JDK

具體過(guò)程略:

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    # 指到自己對(duì)應(yīng)的JAVA_HOME,默認(rèn)使用java6

vim hbase-site.xml

<configuration>

 <property>

<name>hbase.rootdir</name>

<value>file:///data/hbase</value>        # 這里我們指定Hbase本地來(lái)存儲(chǔ)數(shù)據(jù),生產(chǎn)環(huán)境將數(shù)據(jù)建議存入HDFS中。

 </property>

</configuration>

3、啟動(dòng)服務(wù)

/usr/local/hbase/bin/start-hbase.sh

        注意: 這里說(shuō)明一下,我們是最簡(jiǎn)方式啟動(dòng)的Hbase,

沒(méi)有單獨(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初始化表語(yǔ)句

/usr/local/hbase/bin/hbase shell  /usr/local/hbase-create.hbase   ##建表數(shù)據(jù)自己指定位置

最后輸出幾個(gè)表名字,沒(méi)有異常說(shuō)明成功了,自己看日志.....

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的端口沖突(若有多臺(tái)機(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,具體過(guò)程和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的端口沖突(若有多臺(tái)機(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

####這里說(shuō)明一下:

hbase.properties 配置我們pp-web從哪個(gè)數(shù)據(jù)源獲取采集數(shù)據(jù),這里我們只指定Hbase的zookeeper地址。

jdbc.properties pp-web連接自身Mysql數(shù)據(jù)庫(kù)的連接認(rèn)證配置。

sql目錄 pp-web本身有些數(shù)據(jù)需要存放在MySQL數(shù)據(jù)庫(kù)中,這里需要初始化一下表結(jié)構(gòu)。

pinpoint-web.properties 這里pp-web集群的配置文件,如果你需要pp-web集群的話(huà)。

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  #測(cè)試環(huán)境都在一臺(tái)機(jī)器上不做修改,走默認(rèn)

主要修改IP,只需要指定到安裝Pinpoint-collector的IP就行了,安裝Pinpoint-collector啟動(dòng)后,自動(dòng)就開(kāi)啟了9994,9995,9996的端口了。

這里就不需要操心了,如果有端口需求,要去Pinpoint-collector的配置文件("Pinpoint-collector/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties")中,修改這些端口

profiler.collector.ip=192.168.245.136(這里需要確定)

5、增加探針,在服務(wù)的用戶(hù)的訪(fǎng)問(wèn)的入口處添加文件,一般在啟動(dòng)目錄下添加文件名為" vim  catalina.sh"

  ######部署采集器就很簡(jiǎn)單了,只需要加3句話(huà)就好了。我這邊做一個(gè)測(cè)試的Tomcat,來(lái)模擬部署 把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)識(shí)號(hà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、訪(fǎng)問(wèn)pinpoint-web服務(wù)

PinPoint分布式全鏈路監(jiān)控

其他細(xì)節(jié)可以更多的研究......

到這里,整個(gè)部署過(guò)程就完了。值得要注意的地方:

如果Hbase不是與pinpoint-web, Pinpoint-collector裝在一臺(tái)機(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)失敗。

如果有最新版本建議使用新的版本,老版本存在一些問(wèn)題。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI