Pinpoint介紹及docker安裝方式


一、介紹

  Pinpoint是用Java編寫的大型分布式系統的APM(Application Performance Management應用程序性能管理)工具,受Dapper論文的啟發,Pinpoint 通過跟蹤分布式應用之間的調用來提供解決方案,以幫助分析系統的總體結構和內部模塊之間如何相互聯系,2012年7月開始開發,在2015年1月作為一個開源項目啟動, 是一個為大型分布式系統服務的n層架構跟蹤平台。

  Pinpoint的特點如下:

  • 分布式事務跟蹤,跟蹤跨分布式應用的消息
  • 自動檢測應用拓撲,幫助你搞清楚應用的架構
  • 水平擴展以便支持大規模服務器集群
  • 提供代碼級別的可見性以便輕松定位失敗點和瓶頸
  • 使用字節碼檢測技術添加無需修改代碼的新功能

  Pinpoint主要由四部分組成:

  • Agent:用於收集應用端監控數據,無侵入式,向收集器發送跟蹤數據
  • Collector:收集器,處理agent端發送過來的數據,並持久化
  • Web:展示系統調用關系、調用詳情、應用狀態等,並支持報警等功能
  • HBase:持久化層

  Agent的采集原理:

  配置Pinpoint主要的點就是安裝配置Agent,通過字節碼增強技術(有的叫動態探針技術)來實現無侵入式的調用鏈采集。其核心實現還是基於JVM的javaAgent機制來實現,Agent附加到應用程序采樣,也叫做埋點,主要實現是在agent配置文件pinpoint.config中修改配置profiler.collector.ip為collector所在服務器ip,這樣才能將采集到的數據發送給collector收集器,然后就是為需要采集的應用程序埋點,在tomcat啟動腳本catalina.sh中配置javaagent:pinpoint-bootstrap-$VERSION.jar的jar包,然后配置下id和應用程序名稱就ok了,windows和linux系統的tomcat稍有不同,windows系統下tomcat的bin目錄下是catalina.bat,是以bat結尾的dos批處理文件,linux系統下是catalina.sh,是以sh結尾的利用shell進行解釋的腳本文件。配置好后啟動就會按配置的agent路徑加載,在啟動的時候agent將在加載應用class文件之前做攔截並修改字節碼,在class方法調用的前后加上鏈路采集邏輯,從而實現鏈路采集功能。所以叫字節碼增強技術,非侵入式是說不需要修改應用的代碼,就可以完成agent的部署。javaAgent的底層機制主要依賴JVMTI ,JVMTI全稱JVM Tool Interface,是JVM暴露出來的一些供用戶擴展的接口集合。JVMTI是基於事件驅動的,JVM每執行到一定的邏輯就會調用一些事件的回調接口(如果有的話),這些接口可以供開發者擴展自己的邏輯。但JVMTI都是一些接口合集,需要有接口的實現,這就用到了java的instrument,可以理解instrument是JVMTI的一種實現,為JVM提供外掛支持。instrument支持啟動時加載和運行時加載兩種方式,分別實現JVMTI的Agent_OnLoad和Agent_OnAttach方法;pinpoint目前采用的是啟動時加載方式。

二、安裝

  安裝分為docker方式安裝和手動編譯源碼的方式安裝,也可以通過QuickStart快速安裝,QuickStart是使用的mvn 自帶的tomcat插件來啟動的webUI和collector。隨着部署的服務增多,數據量上來之后,難免需要進行一些參數設置,這個時候麻煩就來了。因此如果最終目的是生產的話,直接按照Installation進行,由於使用docker方式進行安裝較為方便以及學習運用下docker,所以我采用docker的方式進行安裝。

  安裝步驟:

  1.首先在已經安裝git的條件下執行如下命令,如果沒有安裝git,可以使用yum方式進行安裝,克隆該項目。

  git clone https://github.com/naver/pinpoint-docker.git

  克隆較慢,時間太長,所以我在windows環境下下載了項目然后傳到了linux服務器上,由於傳的是zip形式的壓縮包所以通過yum安裝了unzip然后對壓縮包解壓。

  2.安裝docker-compose

  sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

  3.將可執行權限應用於二進制文件

  sudo chmod +x /usr/local/bin/docker-compose

  4.查看是否安裝成功

  docker-compose –version

  5.進入該目錄

  cd pinpoint-docker

  6.拉取鏡像並創建運行容器

  docker-compose pull && docker-compose up -d

  我是分步進行,首先先進行pull操作拉取鏡像,這個過程非常慢,甚至出現了幾次錯誤,然后就重新進行拉取,已經下載好的鏡像不會重新下載。

  下載好的鏡像如下:

 

  啟動的容器如下:

 

 

 

 三、使用

   我自己裝的Linux服務器IP為192.168.0.125,所以下文IP就寫該地址。

     1.瀏覽器訪問Pinpoint的web頁面: http://192.168.0.125:8079/,出現頁面如下:

  2.瀏覽器訪問HBase頁面:http://192.168.0.125:16010/,出現頁面如下:

    3.如果上面兩個頁面都能正常訪問,那么docker方式部署Pinpoint成功。

    4.flink是可選項,Pinpoint使用flink預統計數據來優化查詢性能,flink作為目前最先進的流式處理框架,性能優秀,一致性保證,輕量級容錯。瀏覽器訪問flink頁面:http://192.168.0.125:8081/,出現頁面如下:

      5.訪問http://192.168.0.125:8000/頁面的任意接口,就可以在web界面查看到訪問信息。

      6.首頁相關介紹

 

 


免責聲明!

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



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