【轉(zhuǎn)載請(qǐng)注明出處】:http://www.reibang.com/p/4129798aa4ae
Pinpoint是一個(gè)開源的 APM (Application Performance Management/應(yīng)用性能管理)工具,適用于用Java / PHP編寫的大型分布式系統(tǒng)。受Dapper的啟發(fā),Pinpoint提供了一種解決方案躲舌,通過跟蹤分布式應(yīng)用程序之間的事務(wù)捆姜,幫助分析系統(tǒng)的整體結(jié)構(gòu)以及它們中的組件如何相互連接赴恨。
Pinpoint的特性:
- 一目了然地了解您的應(yīng)用程序拓?fù)?/li>
- 實(shí)時(shí)監(jiān)控您的應(yīng)用程序
- 獲得每個(gè)事務(wù)的代碼級(jí)可見性
- 使用字節(jié)碼增強(qiáng)技術(shù)毫胜,添加新功能無需修改代碼
- 對(duì)性能的影響最锌翊颉(資源使用量增加約3%)
Pinpoint系統(tǒng)架構(gòu)
Point是基于Google Dapper擂煞,使用Hbase作為存儲(chǔ),主要有三個(gè)組件:
- pinpoint-collector:日志收集器模塊趴乡,主要手收集從agent端傳來的數(shù)據(jù)信息并存儲(chǔ)
- pinpoint-web:控制臺(tái)視圖模塊对省,主要將collector的數(shù)據(jù)可視化的展示給用戶
- pinpoint-agent:日志代理客戶端模塊,用于在客戶段進(jìn)行埋點(diǎn)來獲取到監(jiān)控信息
Pinpoint數(shù)據(jù)結(jié)構(gòu)
Pinpoint中晾捏,核心數(shù)據(jù)結(jié)構(gòu)由Span蒿涎,Trace和TraceID組成:
- Span:跟蹤的基本單元,包含一個(gè)TraceId
- Trace:多個(gè)Span集合惦辛,由關(guān)聯(lián)的RPC(Spans)組成劳秋,同一個(gè)trace共享一個(gè)相同的TransactionID,Trace通過SpanId和ParentSpanId整理繼承樹結(jié)構(gòu)。
- TraceID:由 TransactionId, SpanId(64位長(zhǎng)度的整型), 和 ParentSpanId(64位長(zhǎng)度的整型) 組成的key的集合. TransactionId 指明消息ID胖齐,而SpanId 和 ParentSpanId 表示RPC的父-子關(guān)系
- TransactionId:AgentIDs(建議使用hostname玻淑,服務(wù)器IP),JVM啟動(dòng)時(shí)間以及序列號(hào)組成
Pinpoint面板展示
- ServerMap(服務(wù)地圖):通過可視化其組件的互連方式,了解任何分布式系統(tǒng)的拓?fù)洹螕艄?jié)點(diǎn)可顯示有關(guān)組件的詳細(xì)信息,例如其當(dāng)前狀態(tài)和事務(wù)計(jì)數(shù)呀伙。
- Realtime Active Thread Chart(實(shí)時(shí)活動(dòng)線程圖):實(shí)時(shí)監(jiān)控應(yīng)用程序內(nèi)的活動(dòng)線程补履。
- Request/Response Scatter Chart(響應(yīng)散點(diǎn)圖):可視化請(qǐng)求計(jì)數(shù)和響應(yīng)模式,以識(shí)別潛在的問題剿另◇锎福可以通過拖拽圖表來選擇事務(wù)以獲得更多詳細(xì)信息。
- CallStack(調(diào)用棧):獲得分布式環(huán)境中每個(gè)事務(wù)的代碼級(jí)可視性雨女,在一個(gè)視圖中識(shí)別瓶頸和故障點(diǎn)麻汰。
- Inspector(巡查):查看應(yīng)用其他細(xì)節(jié),如CPU使用率戚篙,內(nèi)存/垃圾回收五鲫,TPS和JVM參數(shù)。
Pinpoint安裝
依賴:
先啟動(dòng)Zookeeper和HBase岔擂,下載HBase建表腳本并執(zhí)行
$HBASE_HOME/bin/hbase shell hbase-create.hbase
下載最新的發(fā)布版本https://github.com/naver/pinpoint/releases
配置pinpoint-collector
- 將pinpoint-collector-1.8.4.war到tomcat的webapps目錄中
- 修改pinpoint-collector.properties
cluster.enable=true cluster.zookeeper.address=zk1,zk2,zk3 cluster.zookeeper.sessiontimeout=30000 cluster.listen.ip=0.0.0.0 cluster.listen.port=9997
- 編輯 hbase.properties
hbase.client.host=zk1,zk2,zk3 hbase.client.port=2181
配置pinpoint-web
- 將pinpoint-web-1.8.4.war解壓后放到tomcat的webapps目錄中的ROOT目錄
- 修改 pinpoint-web.properties配置信息
cluster.zookeeper.address=zk1,zk2,zk3 cluster.enable=true cluster.web.tcp.port= cluster.zookeeper.sessiontimeout=30000 cluster.zookeeper.retry.interval=60000 cluster.connect.address=127.0.0.1:9997
- 修改hbase.properties
hbase.client.host=zk1,zk2,zk3 hbase.client.port=2181
配置pinpoint-agent
修改文件pinpoint.config
-
啟動(dòng)服務(wù)時(shí)加如下VM參數(shù)
-javaagent:$AGENT_PATH/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.agentId=$AGENT_ID -Dpinpoint.applicationName=$APPLICATION_NAME
訪問pinpoint-web的tomcat端口即可看到面板
【轉(zhuǎn)載請(qǐng)注明出處】:http://www.reibang.com/p/4129798aa4ae