使用pinpoint進行SpringCloud服務鏈監控


前言

在使用微服務架構時,客戶的一個請求可能會經過多個微服務、模塊、中間件,那么如何確定客戶端的一次操作背后調用了哪些微服務、模塊、中間件,調用的先后順序是怎樣的,每個服務的性能如何?隨着業務系統日趨復雜,系統中需要調用鏈的監控來解決這個問題。

Pinpoint是一個開源的 APM (Application Performance Management/應用性能管理)工具。一個分布式跟蹤系統,基於google Dapper實現,用於基於java的大規模分布式系統,通過跟蹤分布式應用之間的調用來提供解決方案,以幫助分析系統的總體結構和內部模塊之間如何相互聯系。pinpoint 有3個主要組件組成:Collector、Web、Agent,采用HBase進行存儲。 Collector和Web都是WAR包,Agent采用一個JAVA應用程序加載。

安裝部署

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

構建docker鏡像

  • 進入 pinpoint-web目錄 執行docker build -t tinylk/pinpoint-web:1.8.2 . 命令構建鏡像
  • 進入 pinpoint-hbase目錄 執行 docker build -t tinylk/pinpoint-hbase:1.8.2 . 命令構建鏡像
  • 進入 pinpoint-collector目錄 執行 docker build -t tinylk/pinpoint-collector:1.8.2 . 命令構建鏡像
  • 進入 pinpoint-mysql docker build -t tinylk/pinpoint-mysql:1.8.2 . 命令構建鏡像

運行容器

運行docker-compose命令啟動pinpoint。啟動后使用瀏覽器打開http://localhost:58080地址訪問pinpoint界面。

docker-compose up -d
  • docker-compose.yml中pinpoint-web里面email相關配置請修改為自己的郵箱配置。

使用Pinpoint Agent收集調用信息

部署好pinpoint服務端后,就可以通過pinpoint agent來收集java應用信息。Pinpoint Agent采用javaagent無侵入的方式實現了應用調用信息的收集,原應用程序無需做任何改動。只需要在啟動時增加javaagent參數。啟動時參數如下:

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

說明:

  1. javaagent 參數必須在 jar參數之前;
  2. pinpoint.agentId 應用實例的唯一標識(可以采用主機名+應用名);
  3. pinpoint.applicationName 相同的名稱表示相同服務的一組應用實例;
  4. 啟動前需要修改pinpoint.config 文件中的相應配置:
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(數據采樣率,搜集數據的比率,默認為20即為1/20 5%,如想改為100%即設為1) 

pinpoint的web界面

ServerMap – 可視化的方式顯示服務的依賴關系及調用計數。.

 
ServerMap

CallStack – 每次請求的調用過程,查看故障點及瓶頸。

 
CallStack

Inspector - 查看應用程序的其他詳細信息,如CPU使用情況,內存/垃圾收集,TPS和JVM參數。

 
Inspector

pinpoint的CallStack 界面需要從ServerMap界面右上角圖表中用鼠標拖拽矩形框選擇后進入。

報警郵件通知配置

Pinpoint-web會定期檢查應用程序的狀態,如果滿足某些預先配置的規則時會觸發警報。

Web模塊中的后台批處理程序默認情況每3分鍾檢查一次預定義規則。 滿足規則后,批處理程序將向注冊到用戶組的用戶發送短信/電子郵件。

一.配置用戶及規則

  1. 點擊主界面右上角配置按鈕,進入配置界面

  2. 注冊用戶

  3. 創建用戶組

  4. 添加用戶及用戶組

  5. 設置報警通知規則

二.實現郵件發送代碼及配置

為了使用報警功能,必須實現com.navercorp.pinpoint.web.alarm.AlarmMessageSender類的發送郵件和SMS的方法,並配置將其注冊至Spring中。當警報觸發時, AlarmMessageSender#sendEmail和 AlarmMessageSender#sendSms 方法將會被調用。(本部分已經在前面docker安裝部署中配置好)

報警通知的詳細內容介紹請參見:https://github.com/naver/pinpoint/blob/master/doc/alarm.md

參考地址



作者:tinylk
鏈接:https://www.jianshu.com/p/5a6dc609acea
來源:簡書


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM