PinPoint全鏈路監控
簡介
Pinpoint是一個開源的 APM (Application Performance Management/應用性能管理)工具,用於基於java的大規模分布式系統,基於Google Dapper論文。
仿照 Google Dapper , Pinpoint 通過跟蹤分布式應用之間的調用來提供解決方案, 以幫助分析系統的總體結構和內部模塊之間如何相互聯系。
如今的服務通常由很多不同模塊組成,前端向后台發起一個查詢請求,后台服務可能要調用多個服務,每個服務可能又會調用其它服務,最終將結果返回,匯總到頁面上。如果某個環節發生異常,工程師很難准確定位這個問題到底是由哪個服務調用造成的,Pinpoint的作用就是追蹤每個請求的完整調用鏈路,收集調用鏈路上每個服務的性能數據,方便工程師能夠快速定位問題。
架構圖
如圖所示,為Pinpoint的架構圖,主要由四部分組成:
Pinpoint-Collector:收集器,收集各種性能數據
Pinpoint-Agent:探針,與應用服務器關聯,采集性能數據,傳給Collector
Pinpoint-Web:UI,展示性能數據
HBase Storage:存儲,保存性能數據
優點
1、分布式事務跟蹤,跟蹤跨分布式應用的消息
2、自動檢測應用拓撲,幫助你搞清楚應用的架構
3、水平擴展以便支持大規模服務器集群
4、提供代碼級別的可見性以便輕松定位失敗點和瓶頸
5、使用字節碼增強技術,添加新功能而無需修改代碼
功能
1、故障快速定位
2、各個調用環節的性能分析
3、數據分析等
4、生成服務調用拓撲圖
支持的模塊
ü JDK 6+
ü Tomcat 6/7/8, Jetty 8/9, JBoss EAP 6
ü Spring, Spring Boot
ü Apache HTTP Client 3.x/4.x, JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
ü Thrift Client, Thrift Service, DUBBO PROVIDER, DUBBO CONSUMER
ü MySQL, Oracle, MSSQL, CUBRID, DBCP, POSTGRESQL, MARIA
ü Arcus, Memcached, Redis, CASSANDRA
ü iBATIS, MyBatis
ü gson, Jackson, Json Lib
ü log4j, Logback
環境搭建所需要的工具
1、JDK 1.8
2、Tomcat 8.5.3 發布用
3、Pinpoint-Web 將收集到的數據顯示成WEB網頁形式
4、Pinpoint-Collector 收集各種性能數據
5、Pinpoint-Agent 和自己運行的應用關聯起來的探針
6、HBase Storage 收集到的數據存到HBase中
7、hbase_scripts Pinpoint初始化數據庫
HBase腳本介紹
l hbase-create.hbase - 創建pinpoint必須的表。
l hbase-drop.hbase - 刪除pinpoint必須的所有表
l hbase-flush-table.hbase - 刷新所有表
l hbase-major-compact-htable.hbase- 壓縮主要的所有表
JDK和Tomcat的搭建這里就不再介紹了。
1、安裝HBase
下載地址:http://archive.apache.org/dist/hbase/
這里下載hbase-1.4.12來進行安裝
將hbase-1.4.12-bin.tar.gz包移動到/apps/software目錄下,然后解壓
接下來進入到hbase目錄下的conf文件夾夾中修改hbase-env.sh文件對JAVA的配置,找到JAVA_HOME的位置,打開JAVA_HOME的注釋行並修改,或者直接添加一行,如下圖
然后回到bin目錄下啟動hbase服務 sh start-hbase.sh
啟動如果遇到錯誤,可以檢查一下虛擬機cpu的核心數,貌似至少得雙核以上才能起得來。啟動成功會顯示如下畫面
Hbase默認端口是16010,在網頁上訪問http://192.168.3.31:16010
然后初始化Hbase的pinpoint庫,執行
登錄web,來查看HBase的數據是否初始化成功
2、安裝pinpoint
為了方便省事,我們把pinpoint-web 和 pinpoint-collector 都放進一個Tomcat中
為了方便訪問將pinpoint-web-1.1.2.war改名為pinpoint
啟動tomcat然后訪問http://192.168.3.31:8080/pinpoint
到這里我們的環境就發布好了