一、前言
當前所測試業務需求為集成在業務系統WMS的jar包,jar包測試主要集中在本地拉取開發編寫的代碼做單元測試,因為jar包沒有單獨的應用,每當大促壓測或日常壓測,架構師或開發同事問道:這個jar包的JVM指標如何?jar包的火焰圖是什么樣的?對此,只能望洋興嘆?;谝陨媳尘?,對jar監控做了一些調研和實戰。
?
二、調研過程
1.forcebot平臺
forcebot平臺是泰山上一款支持Groovy腳本編寫的壓測平臺,通過將jar包上傳,編寫腳本,便可看到當前壓測的響應時間、TP99等監控信息。forcebot平臺也支持抓取火焰圖信息,抓取到的火焰圖結果如下,但是此信息為Groovy腳本進程火焰圖信息,而并非Groovy腳本調用jar的火焰圖信息。
2.jconsole/jvisualvm+Grafana監控
jconsole
jconsole是JDK自動的、基于jmx協議的、對JVM進行可視化監視和管理的工具。jconsole支持連接本地進程和遠程進程,如果需要連接遠程進程,那么遠程進程必須開啟jmx協議。
jvisualvm
jvisualvm也是JVM自帶的一個類似于jconsole的可視化監控工具,jvisualvm也支持本地進程和遠程進程。
遠程監控的其他監控信息可以在易維平臺查看到Grafana監控情況,但是對于相同指標比如CPU使用率信息的記錄,jvisualvm和Grafana對指標的描述結果有偏差,初步分析是兩個監控看板對于指標數據的采集及統計有偏差。
通過以上監控信息我們可以明確的看到當前jar包的JVM、CPU以及相應方法的耗時情況。但是現有易維平臺提供的Grafana看板指標數據有限,無法詳細看到TP99、TPS等數據,且通過visuals拿到的數據和Grafana拿到的數據對于相同指標來說數據值有差異,搭建一套統一的看板勢在必行。經調研易維平臺沒有用influxdb來存儲數據,用的是ES,易維grafana中展示的數據是在ES中出的,ES中就沒有JVM相關的監控信息,遂探究了如何自建性能測試工具進行監控看板的搭建。
三、性能測試平臺搭建
1.jmeter
常用的壓力測試軟件有:LoadRunner、ApacheJMeter、NeoLoad、WebLOAD、Loadster、Load impact、CloudTest、Loadstorm、阿里云PTS等等,jmeter是一款使用Java開發的,開源免費的測試工具, 主要用來做功能測試和性能測試(壓力測試/負載測試),且簡單易用,本文便使用了jmeter壓測工具。
?
jmeter可以對http請求做壓測,但是做jar包的壓測,需要對jmeter做二次開發進行定制化編寫,對于以上jemter的二次開發之前已有文章發表對此不做過多贅述,詳見 jmeter二次開發發送java請求
?
我們可以通過使用插件等方式設置線程數、循環次數等信息定制化監控我們我們壓測的需要監控的指標數據。
2.telegraf
1.1.Telegraf是什么
Telegraf是一個Go語言編寫的代理程序,可收集系統和服務的統計數據,并寫入到InfluDB數據庫。內存占用小,通過插件系統可輕松添加支持其他服務的擴展。是一個輕量級數據采集系統。
?
Telegraf metric是用于在處理期間對數據建模的內部表示。這些指標完全基于InfluxDB的數據模型,包含四個主要組件:
?度量名稱(Measurement)
?標簽(tags)
?字段(Field)
?時間戳(time)
1.2.為什么要用Telegraf
?可以采集多種組件的運行信息,不需要自己手動寫定時腳本,降低了數據獲取的難度
?CPU
?內存
?不需要自己手動寫定時腳本,降低了數據獲取的難度
?配置簡單
?與InfluxDB完美結合,按照時間序列采集數據
?輕量級,占用內存小
3.influxdb
3.1.InfluxDB簡介
是一個由InfluxData開發的開源時序型數據庫。它由Go語言寫成,著力于高性能地查詢與存儲時序數據。InfluxDB被廣泛應用于存儲系統的監控數據,IoT行業的實時數據等場景。
Influxdb有如下三大特性
?基于時間序列
?可度量性
?基于事件
相應的,我們也可以使用prometheus數據庫采集數據,Prometheus也是由go語言開發的,是一套開源的監控&報警&時間序列數據庫的組合。
3.2.InfluxDB使用
InfluxDB數據模型包括Measurement(表)、Tags(維度列)組件、Field(數值列)以及point。
InfluxDB數據保留策略操作
創建數據庫保留策略
?:保留策略的名稱
?:為哪個數據庫創建保留策略
?:該保留策略對應的數據過期時間
?REPLICATION:副本因子:幾個副本
?SHARD DURATION:分片組的默認時長
?[DEFAULT]:是否為默認策略
CREATE RETENTION POLICY "influx_retention" ON "telegraf" DURATION 30d REPLICATION 1 DEFAULT;
查看數據庫保留策略
SHOW RETENTION POLICIES ON telegraf;
使用telegraf+InfluxDB搭建的數據資源管理看板。
4.Grafana
4.1.Grafana是什么?
Grafana是開源的、炫酷的可視化監控、分析工具,它主要包含以下特點:
?多種展示方式
?支持多數據源:
?Graphite:時間序列 圖形系統
?InfluxDB
?Opentsdb:基于HBase
?Prometheus:開源 服務監控系統和時序數據庫
?ElasticSearch,elk:
?多種通知提醒
?Email、SMS、
?混合展示
?同一個圖表中,混合使用不同的數據源
4.2.為什么要用Grafana?
Grafana主流數據庫:ElasticSearch、InfluxDB、MySQL、Opentsdb、Postgresql。涵蓋了大部分數據庫,并且有很炫酷的圖表庫,開源、可以進行二次開發、漢化、可以做前端開發。
搭建的Grafana看板如下
?
四、特別提醒
1.jmeter與telegraf的銜接需要使用Jolokia工具,此工具的作用為作為JMX的HTTP橋接器,使得Telegraf能夠通過HTTP協議輕松地訪問JMX管理的Java應用程序的數據。關于Jolokia的官網及簡介鏈接如下:
jolokia詳細文檔: jolokia官網?
2. 指標的采集及監控數據對齊可以參考MDC監控 監控指標簡介
3. 火焰圖數據的采集可以使用arthas工具,安裝過程可參考神燈文章 JVM虛擬機之字節碼文件詳解
五、總結與展望
千里之行,始于足下,本次從0到1搭建監控性能指標看板的歷程中得到了深刻的體現。從最初的設想、規劃,到一步步實施、調試,再到最終的呈現與優化,每一步都凝聚了搭建者的心血與智慧。在這個過程中,不僅成功搭建了一個功能完善的監控性能指標看板,更重要的是,學會了如何在壓測過程中,根據指標情況提出合理的優化建議,為開發團隊提供了有力的數據支持,幫助他們更好地優化代碼,提升系統性能。這一成果不僅是對自我技術能力的肯定,更是對團隊協作精神的最好詮釋。
同時,這次經歷也讓我深刻感受到了自我技術成長的巨大飛躍。在解決問題的過程中,我不斷挑戰自我,學習新知識,掌握新技能,逐漸形成了自己的技術體系和方法論。這些寶貴的經驗和收獲,將成為我未來職業生涯中不可或缺的財富。
最后,特別感謝在搭建看板過程中給予我無私幫助和支持的同學們!
審核編輯 黃宇
-
監控
+關注
關注
6文章
2307瀏覽量
56600 -
JVM
+關注
關注
0文章
160瀏覽量
12519 -
JMX
+關注
關注
0文章
3瀏覽量
5682
發布評論請先 登錄
一張圖看懂混合云數據同步一站式解決方案
阿里云容器Kubernetes監控(二) - 使用Grafana展現Pod監控數據
NodeMCU+Influxdb+Grafana主要由哪幾部分構成
三步搭建RK3568編譯OpenHarmony一站式開發環境
influxdb+grafana+nodemcu

評論