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

評(píng)論