您好,登錄后才能下訂單哦!
PinPoint分布式全鏈路監控
安裝需要的所有包下載路徑:
鏈接: https://pan.baidu.com/s/1sl9dP9r 密碼: jsux
介紹:
PinPoint是一個開源的APM((Application Performance Management/應用性能管理)工具,基于JAVA的大規模分布式系統。
仿照GOOLE DAPPER,PinPoint通過跟蹤分布式應用之間的調用來提供解決方案,以幫助分析系統的總體結構和內部模塊之間如何相互聯系
服務器地圖(ServerMap):
通過可視化分布式系統的模塊和他們之間的相互聯系來理解系統拓撲。點擊某個節點會展示這個模塊的詳情,比如它當前的狀態和請求數量。
實時活動線程圖表(Realtime Active Thread Chart)
實時監控應用內部的活動線程。
請求/應答分布圖表(Request/Response Scatter Chart)
長期可視化請求數量和應答模式來定位潛在問題。通過在圖表上拉拽可以選擇請求查看更多的詳細信息
調用棧(CallStack)
在分布式環境中為每個調用生成代碼級別的可視圖,在單個視圖中定位瓶頸和失敗點
巡查(Inspector)
查看應用上的其他詳細信息,比如CPU使用率,內存/垃圾回收,TPS,和JVM參數
分布式系統調用鏈監控特點:
1、應用架構由集中式向分布式演進后,整個調用關系變得復雜
2、分布式架構由復雜且較大規模集群構成,哥哥應用之間相當獨立,可能由不同團隊、不同語言實現
3、系統一個完整的調用過程可能橫跨多個服務及數據中心
4、復雜的調用導致系統出問題后難以定位問題
5、無法準確知道整體系統性能及運行情況
Pinpoint中的數據結構
Pinpoint中,核心數據結構由Span, Trace, 和 TraceId組成
1、Span: RPC (遠程過程調用/remote procedure call)跟蹤的基本單元; 當一個RPC調用到達時指示工作已經處理完成并包含跟蹤數據。
為了確保代碼級別的可見性,Span擁有帶SpanEvent標簽的子結構作為數據結構。每個Span包含一個TraceId
2、Trace: 多個Span的集合; 由關聯的RPC (Spans)組成. 在同一個trace中的span共享相同的TransactionId。Trace通過SpanId和ParentSpanId整理為繼承樹結構.
3、TraceId: 由 TransactionId, SpanId, 和 ParentSpanId 組成的key的集合. TransactionId 指明消息ID,而SpanId 和 ParentSpanId 表示RPC的父-子關系。
TransactionId (TxId): 在分布式系統間單個事務發送/接收的消息的ID; 必須跨整個服務器集群做到全局唯一.
SpanId: 當收到RPC消息時處理的工作的ID; 在RPC請求到達節點時生成。
ParentSpanId (pSpanId): 發起RPC調用的父span的SpanId. 如果節點是事務的起點,這里將沒有父span - 對于這種情況, 使用值-1來表示這個span是事務的根span。
Google Dapper 和 NAVER Pinpoint在術語上的不同
全鏈路性能監控
一個請求完整的調用鏈可能如下圖,經過多個系統服務,調用關系:
關注各個調用的各項性能指標,比如吞吐量(TPS),響應時間及錯誤記錄等
吞吐量:根據拓撲可相應計算組件、平臺、物理設備的實際吞吐量
響應時間:包括整體調用的響應時間和各個服務的相應時間等
錯誤記錄:根據服務返回統計單位時間異常次數
全鏈路性能監控從整體維度到局部維度展示各項指標,將跨應用的所有調用鏈性能信息集中展現,可方便度量整體和局部性能,
并且方便找到故障產生的源頭,生產上可極大縮短故障排除時間。
環境準備:
系統環境:centos 6.X以上,不要太低
JDK最好是7或8
部署HBASE(分布式用ZOOKEEPER可以使用內置的,單點就不需要)
搭建過程:
Pinpoint由4部分組成
1.Pinpoint Agent, 2. Pinpoint Collector, 3. HBase, 4.Pinpoint Web UI
1、部署JDK
具體過程略:
a、配置環境變量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
##配置環境變量執行: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、安裝并啟動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 # 指到自己對應的JAVA_HOME,默認使用java6
vim hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///data/hbase</value> # 這里我們指定Hbase本地來存儲數據,生產環境將數據建議存入HDFS中。
</property>
</configuration>
3、啟動服務
/usr/local/hbase/bin/start-hbase.sh
注意: 這里說明一下,我們是最簡方式啟動的Hbase,
沒有單獨部署Hbase集群管理的zookeeper,而是直接使用Hbase自帶的zk模塊。另外,Hbase強烈建議將數據存入HDFS里面,目前我們是存在Hbase本地的
4、驗證HBASE是否啟動成功
jps
8114 Jps
7820 HMaster
5、HBASE初始化表語句
/usr/local/hbase/bin/hbase shell /usr/local/hbase-create.hbase ##建表數據自己指定位置
最后輸出幾個表名字,沒有異常說明成功了,自己看日志.....
3、安裝 Pinpoint-collector,它的服務是基于tomcat的服務,所以在部署前需要解壓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的端口沖突(若有多臺機器部署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、啟動tomcat
#/usr/local/pinpoint-collector/bin/startup.sh
4、安裝pinpoint-web,具體過程和Pinpoint-collector完全相同,在解壓一個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的端口沖突(若有多臺機器部署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從哪個數據源獲取采集數據,這里我們只指定Hbase的zookeeper地址。
jdbc.properties pp-web連接自身Mysql數據庫的連接認證配置。
sql目錄 pp-web本身有些數據需要存放在MySQL數據庫中,這里需要初始化一下表結構。
pinpoint-web.properties 這里pp-web集群的配置文件,如果你需要pp-web集群的話。
applicationContext-* .xml 這些文件在后續的調優工作中會用到。
log4j.xml 日志相關配置
6、啟動tomcat
#/usr/local/pinpoint-web/bin/startup.sh
5、部署pinpoint-agent采集監控數據
1、解壓包tar -zxvf pinpoint-agent-1.5.2.tar.gz
2、mv pinpoint-agent-1.5.2 /data/pp-agent
3、編輯配置文件vim pinpoint.config #測試環境都在一臺機器上不做修改,走默認
主要修改IP,只需要指定到安裝Pinpoint-collector的IP就行了,安裝Pinpoint-collector啟動后,自動就開啟了9994,9995,9996的端口了。
這里就不需要操心了,如果有端口需求,要去Pinpoint-collector的配置文件("Pinpoint-collector/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties")中,修改這些端口
profiler.collector.ip=192.168.245.136(這里需要確定)
5、增加探針,在服務的用戶的訪問的入口處添加文件,一般在啟動目錄下添加文件名為" vim catalina.sh"
######部署采集器就很簡單了,只需要加3句話就好了。我這邊做一個測試的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"
#被監控工程使用agent的標識號
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=0000002"
#被監控工程名字
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=172.16.10.43_3306_自定義"
#####
第一行是pp-agent的jar包位置
第二行是agent的ID,這個ID是唯一的,我是用pp + 今天的日期命名的,只要與其他的項目的ID不重復就好了
第三行是采集項目的名字,這個名字可以隨便取,只要各個項目不重復就好了
配置完catalina.sh這個文件啟動tomcat文件
6、訪問pinpoint-web服務
其他細節可以更多的研究......
到這里,整個部署過程就完了。值得要注意的地方:
如果Hbase不是與pinpoint-web, Pinpoint-collector裝在一臺機器上,需要安裝zookeeper,只要安裝就好,確實2181端口啟動就好。
如果zookeeper安裝在獨立機器上,這里需要修改一下Pinpoint-collector 和 pinpoint-web的配置文件pinpoint-collector.properties,pinpoint-web.properties,不然會導致倆個模塊啟動失敗。
如果有最新版本建議使用新的版本,老版本存在一些問題。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。