使用pinpoint進(jìn)行SpringCloud服務(wù)鏈監(jiān)控

前言

在使用微服務(wù)架構(gòu)時(shí),客戶的一個(gè)請(qǐng)求可能會(huì)經(jīng)過(guò)多個(gè)微服務(wù)、模塊、中間件,那么如何確定客戶端的一次操作背后調(diào)用了哪些微服務(wù)、模塊、中間件,調(diào)用的先后順序是怎樣的,每個(gè)服務(wù)的性能如何?隨著業(yè)務(wù)系統(tǒng)日趨復(fù)雜,系統(tǒng)中需要調(diào)用鏈的監(jiān)控來(lái)解決這個(gè)問(wèn)題。

Pinpoint是一個(gè)開源的 APM (Application Performance Management/應(yīng)用性能管理)工具。一個(gè)分布式跟蹤系統(tǒng),基于google Dapper實(shí)現(xiàn),用于基于java的大規(guī)模分布式系統(tǒng),通過(guò)跟蹤分布式應(yīng)用之間的調(diào)用來(lái)提供解決方案,以幫助分析系統(tǒng)的總體結(jié)構(gòu)和內(nèi)部模塊之間如何相互聯(lián)系。pinpoint 有3個(gè)主要組件組成:Collector、Web、Agent,采用HBase進(jìn)行存儲(chǔ)。 Collector和Web都是WAR包,Agent采用一個(gè)JAVA應(yīng)用程序加載。

安裝部署

這里采用docker的方式部署pinpoint。相關(guān)的Dockerfile及docker-compose.yml參見(jiàn)https://gitee.com/tinylk/docker-pinpoint 。

構(gòu)建docker鏡像

  • 進(jìn)入 pinpoint-web目錄 執(zhí)行docker build -t tinylk/pinpoint-web:1.8.2 . 命令構(gòu)建鏡像
  • 進(jìn)入 pinpoint-hbase目錄 執(zhí)行 docker build -t tinylk/pinpoint-hbase:1.8.2 . 命令構(gòu)建鏡像
  • 進(jìn)入 pinpoint-collector目錄 執(zhí)行 docker build -t tinylk/pinpoint-collector:1.8.2 . 命令構(gòu)建鏡像
  • 進(jìn)入 pinpoint-mysql docker build -t tinylk/pinpoint-mysql:1.8.2 . 命令構(gòu)建鏡像

運(yùn)行容器

運(yùn)行docker-compose命令啟動(dòng)pinpoint。啟動(dòng)后使用瀏覽器打開http://localhost:58080地址訪問(wèn)pinpoint界面。

docker-compose up -d
  • docker-compose.yml中pinpoint-web里面email相關(guān)配置請(qǐng)修改為自己的郵箱配置。

使用Pinpoint Agent收集調(diào)用信息

部署好pinpoint服務(wù)端后,就可以通過(guò)pinpoint agent來(lái)收集java應(yīng)用信息。Pinpoint Agent采用javaagent無(wú)侵入的方式實(shí)現(xiàn)了應(yīng)用調(diào)用信息的收集,原應(yīng)用程序無(wú)需做任何改動(dòng)。只需要在啟動(dòng)時(shí)增加javaagent參數(shù)。啟動(dòng)時(shí)參數(shù)如下:

Java -javaagent:/opt/pinpoint-agent-1.8.2/pinpoint-bootstrap-1.8.2.jar -Dpinpoint.agentId=demo1 -Dpinpoint.applicationName=demo –jar demo.jar

說(shuō)明:

  1. javaagent 參數(shù)必須在 jar參數(shù)之前;
  2. pinpoint.agentId 應(yīng)用實(shí)例的唯一標(biāo)識(shí)(可以采用主機(jī)名+應(yīng)用名);
  3. pinpoint.applicationName 相同的名稱表示相同服務(wù)的一組應(yīng)用實(shí)例;
  4. 啟動(dòng)前需要修改pinpoint.config 文件中的相應(yīng)配置:
profiler.collector.ip (collector的ip地址 xxx.xxx.xxx.xxx)
profiler.collector.tcp.port (collector's collector.tcpListenPort - default: 9994)
profiler.collector.stat.port (collector's collector.udpStatListenPort - default: 9995)
profiler.collector.span.port (collector's collector.udpSpanListenPort - default: 9996)
profiler.sampling.rate=1(數(shù)據(jù)采樣率,搜集數(shù)據(jù)的比率,默認(rèn)為20即為1/20 5%,如想改為100%即設(shè)為1)

pinpoint的web界面

ServerMap – 可視化的方式顯示服務(wù)的依賴關(guān)系及調(diào)用計(jì)數(shù)。.

ServerMap

CallStack – 每次請(qǐng)求的調(diào)用過(guò)程,查看故障點(diǎn)及瓶頸。

CallStack

Inspector - 查看應(yīng)用程序的其他詳細(xì)信息,如CPU使用情況,內(nèi)存/垃圾收集,TPS和JVM參數(shù)。

Inspector

pinpoint的CallStack 界面需要從ServerMap界面右上角圖表中用鼠標(biāo)拖拽矩形框選擇后進(jìn)入。

報(bào)警郵件通知配置

Pinpoint-web會(huì)定期檢查應(yīng)用程序的狀態(tài),如果滿足某些預(yù)先配置的規(guī)則時(shí)會(huì)觸發(fā)警報(bào)。

Web模塊中的后臺(tái)批處理程序默認(rèn)情況每3分鐘檢查一次預(yù)定義規(guī)則。 滿足規(guī)則后,批處理程序?qū)⑾蜃?cè)到用戶組的用戶發(fā)送短信/電子郵件。

一.配置用戶及規(guī)則

  1. 點(diǎn)擊主界面右上角配置按鈕,進(jìn)入配置界面

  2. 注冊(cè)用戶

  3. 創(chuàng)建用戶組

  4. 添加用戶及用戶組

  5. 設(shè)置報(bào)警通知規(guī)則

二.實(shí)現(xiàn)郵件發(fā)送代碼及配置

為了使用報(bào)警功能,必須實(shí)現(xiàn)com.navercorp.pinpoint.web.alarm.AlarmMessageSender類的發(fā)送郵件和SMS的方法,并配置將其注冊(cè)至Spring中。當(dāng)警報(bào)觸發(fā)時(shí), AlarmMessageSender#sendEmail和 AlarmMessageSender#sendSms 方法將會(huì)被調(diào)用。(本部分已經(jīng)在前面docker安裝部署中配置好)

報(bào)警通知的詳細(xì)內(nèi)容介紹請(qǐng)參見(jiàn):https://github.com/naver/pinpoint/blob/master/doc/alarm.md

參考地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容