pinpoint2.X來了,學不動了?一起來看看有哪些新特性吧

前言

pinpoint2.X版本發佈已經有一段時間了,看到很多小夥伴已經上手部署了,這不,我也趕緊跟隨各位小夥伴的步伐,學習一下pp2.x有哪些新的特性吧。

2.0.0-RC1 release notes

什麼? 不知道RC1什麼意思?

RC:(Release Candidate) 顧名思義麼 ! 用在軟件上就是候選版本。系統平臺上就是發行候選版本。RC版不會再加入新的功能了,主要着重於除錯,也就是改bug。

增加了 grpc 的支持

增加了pinpoint-grpc工程,並在pinpoint-collector中增加對此模塊的依賴。使用grpc旨在爲傳輸層服務,方便支持多語言,在里程碑中也提到了此舉的目的:

  • 通過數據發送線程對傳輸模型進行優化。
  • 減少域模型的內存使用。
  • 減少對thrift的依賴。

file

增加了限制最大吞吐量的特性

其實就是限制agent代理每秒採樣的量,這裏採樣的鏈路分爲兩種:

  • profiler.sampling.new.throughput表示的是新產生的鏈路。
  • profiler.sampling.continue.throughput表示是傳遞中的鏈路。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-c2XbrAsH-1588928302531)(http://img.lifehelper.top/FvIomblmJqS9cMITqO0XlzauJUCP)]

設置後,可以通過pinpoint-web的界面觀察到是否生效:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MylUoEI1-1588928302533)(http://img.lifehelper.top/Fpg_WbvE0-ib7pBDsbJud8ZkwSUX)]

UI風格改變

2.X的UI風格改變了,感覺還是不太習慣,可能用1.X版本用太久了吧。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WHGTApqo-1588928302539)(http://img.lifehelper.top/FkA8P0l0SEMplU37QM3qd16lT7KH)]

增加了線程採集支持

在pinpoint-thread-plugin子模塊中,增加了對線程的採集插件,能採集異步的線程運行信息。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4UCVIg6F-1588928302544)(http://img.lifehelper.top/FnygVvBBe3ws4HSSvAuPCme8st-g)]

增加了Elasticsearch Client Plugin

增加對Elasticsearch客戶端的採集支持,主要是針對 elasticsearch-rest-high-level-client。

同時還增加了Elasticsearch Client BBoss Plugin插件的支持,bboss這個是操作es的開源項目

file

增加了Redisson Client Plugin

增加了對Redisson 客戶端的插件支持。

file

Log4j2 Plugin

增加了Log4j2日誌插件的支持。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-F0MpLaae-1588928302548)(http://img.lifehelper.top/FgFw4PpIVagMx9qk-totzKSAahDF)]

重要升級提醒

如果是從pinpoint-web 1.8.5或者更早版本上升級到2.X的話,在告警模塊需要修改數據的表。報錯爲:

file

需要修改告警歷史表,修改語句爲:

ALTER TABLE `alarm_history` ADD `rule_id` INT(10) NOT NULL AFTER `history_id`;

依賴變更

  • 在前端移除了,商用的依賴庫,如(amchart, go.js)。

  • HBase client 從1.2.6.1版本變更到了1.2.12版本。

  • 增加kafka 2.3.0以上版本的支持。

Agent配置文件

file

前面提到過官方有意使用Grpc減少對Thrift的依賴,所以agent的pinpoint.config配置文件變化也挺大的。不過並沒有完全排除Thrfit的依賴,我們仍然可以在配置文件中配置兩種傳輸方式,配置項爲:

profiler.transport.module=GRPC

那配置好後,該如何測試呢?

老樣子,還記得pinpoint-tools工程裏面提供的一個networktest.sh腳本嗎,可以通過執行這個腳本來測試驗證Grpc和Thrift兩種傳輸模式是否工作正常。

file

對比1.X和2.X兩個版本情況,筆者在這裏產生了一個疑問,那假如存在多個agent,並且開啓傳輸協議不一,或者是跨版本,那意味着collector必須要對具有不同協議的請求,保持來者不拒?

那是不是會增加更多的端口監控? 畢竟要通過Socket傳輸數據。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MkzMVjA9-1588928302553)(http://img.lifehelper.top/Fh8xn0Gg4Ee6M6y4XMZlcHZKv4gT)]

從collector工程上新增的配置文件上印證了我的看法。pinpoint-collector-grpc.properties是在2.X版本中新增的配置文件,主要是針對grpc進行相關屬性配置,增加的三個端口用於監聽grpc請求。

file

支持Hbase2.X

默認情況下,collector將接受到的數據按一定的數據結構存儲到Hbase中,一直以來使用的都是Hbase1.X版本,在pinpoint2.X版本中,增加了對Hbase2.X的支持,這是可選的。

file

需要注意的是,如果需要集成Hbase2.X,那麼需要重新編譯pinpoint源碼,並且需要修改hbase-shaded-client依賴包的版本爲2.X.X,官方推薦的是經過測試驗證的V2.1.1版本。

mvn clean install -P hbase2,release -DskipTests=true
或者:
mvn clean install -Dhbase.shaded.client.version=2.1.1 -DskipTests=true

然後修改pom文件中依賴的版本號
<hbase.shaded.client.version>1.2.12</hbase.shaded.client.version>

支持監控Nginx等代理

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-w4aHrL8D-1588928302556)(http://img.lifehelper.top/FpOol5gvkF8bGGTUjdBzI23wajAY)]

其實能夠監控到Nginx,是和Http 的header頭有很大關係,就像後端爲什麼能夠通過transactionId把整個鏈路串起來一樣,只需要明確一點:串聯的核心就是把信息通過Header頭透傳。

以Nginx爲例,就是通過設置請求頭Pinpoint-ProxyNginx來透傳的。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jsiuYFz6-1588928302558)(http://img.lifehelper.top/FkIwfZhKGgWtqlgoi2hHVnxswpey)]

同樣的,還可以支持監控Apache HTTP Server 或者是App等其他前端應用在Nginx模塊的耗時情況。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aZAhStQJ-1588928302559)(http://img.lifehelper.top/Fso-ZiHv2PEKc2B4GLf3O9c4t41z)]

支持多環境Profiles配置

細心的小夥伴可能已經發現了2.X版本在agent、web、collector工程的resource目錄下增加了一個profiles目錄。

file

啓動時,可以

  • 通過-Dspring.profiles.active=release or local來激活。
  • 或者還可以通過-Dkey=value的方式來增加系統變量。
  • 動態設置配置文件中支持的配置項,如-Dpinpoint.zookeeper.address=xxx。

甚至,你可以自定義一個profile文件,放在WEB-INF/classes/profiles 目錄下,然後在啓動時指定-Dspring.profiles.active=profile文件名即可使用自定義的配置啓動。

以上就是目前學習到的一些pinpoint 2.x新特性,各位喜歡研究pinpoint的小夥伴,歡迎來俠夢的開發筆記,一起交流學習。

掃碼關注加羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章