性能工具之 JMeter+InfluxDB+Grafana 打造壓測可視化實時監控

      網友投稿 1350 2025-03-31

      概述


      引言

      解決方案

      Jmeter&InfluxDB集成

      InfluxDB安裝

      安裝要求

      概述

      引言

      解決方案

      Jmeter&InfluxDB集成

      InfluxDB安裝

      安裝要求

      下載安裝

      InfluxDB配置

      JMeter配置

      Grafana&InfluxDB集成

      安裝啟動

      導入Dashboard模版

      概述

      本文我們將介紹如何使用JMeter+InfluxDB+Grafana打造壓測可視化實時監控。

      引言

      我們很多時候在使用JMeter做性能測試,我們很難及時察看壓測過程中應用的性能狀況,總是需要等到測試完成后去看Report,如果是長時間壓測,比如壓測1~2天,那就更煩人了。

      壓測的時候,我們實時通過- GenerateSummaryResults匯總輸出,可以看到如下內容

      GenerateSummaryResults匯總展示了壓測中需要關注的大量信息,其中包括:Avg (Average), Min (Minimum) 、Max (Maximum)響應時間,TPS,錯誤率,活躍線程數等, jmeter.properties默認是30秒的統計頻率,如果我們想使用小于30秒更細顆粒度的統計頻率的時候,那么在控制臺會有大量的輸出,這個時候我們就不好觀察結果了。

      # jmeter.properties # Define the following property to automatically start a summariser with that name # (applies to non-GUI mode only) # summariser.name=summary # # interval between summaries (in seconds) default 3 minutes # summariser.interval=30 # # Write messages to log file # summariser.log=true # # Write messages to System.out # summariser.out=true

      另一方面,如果需要分享給其它人員,這種控制臺輸出方式并不是一個很友好的方式,我們需要一個簡單漂亮的圖形,比如HTML Dashboard,但需要等待整個測試完成。

      因此,我們可以在測試計劃中去除GenerateSummaryResults,把測試結果發送到數據庫中持久化,這樣我們就可以通過SQL查詢數據庫來創建展示圖表。

      從JMeter2.13開始,通過提供實現AbstractBackendListenerClient的類,可以使用(JDBC,JMS,Webservice,…)通過Backend Listener發送到數據庫的存儲實時結果。

      BackendListenerGraphiteBackendListenerClient,允許將統計指標發送到Graphite

      此功能提供:

      實時數據

      漂亮圖表

      能夠對比2個以上的測試計劃

      只要JMeter產生相同的Backend,就可以存儲監控數據

      JMeter 3.2 Backend Listener中引入的 InfluxDBBackendListenerClient允使用UDP或HTTP協議將統計指標發送到InfluxDB

      此功能提供:

      實時數據

      漂亮圖表

      能夠對比2個以上的測試計劃

      能夠向圖表添加注釋

      只要JMeter產生相同的Backend,就可以存儲監控數據

      解決方案

      JMeter引入Backend Listener,用于在壓測過程中實時發送統計指標數據給時序數據庫Influxdb,通過配置Grafana(開源的WEB可視化看板)數據源連接到Influxdb,我們就可以創建炫酷的可視化看板,并可以實時獲取到測試指標數據。

      相關介紹:

      時序數據庫:處理帶時間標簽(按照時間的順序變化,即時間序列化)的數據,帶時間標簽的數據也稱為時間序列數據。想象它就像一個sql表,其中時間是它的主鍵

      InfluxDB:是一款用Go語言編寫的開源分布式時序、事件和指標數據庫,無需外部依賴。該數據庫現在主要用于存儲涉及大量的時間戳數據,如DevOps監控數據,APP metrics, loT傳感器數據和實時分析數據。

      官網地址:https://www.influxdata.com/

      數據DEMO

      > select* from weather name: weather ------------- time altitude area humidity temperature 1456386985094000000 1000 北 18 17 1456386985094000000 5000 上 20 47 1456386985094000000 5000 北 26 68 1456386985094000000 1000 廣 17 83 1456387267668000000 1000 上 12 77 1456387267668000000 1000 北 16 20 1456387267668000000 5000 廣 -3 66 1456387267668000000 5000 上 19 60

      與傳統數據庫中的名詞做比較

      InfluxDB中獨有的一些概念

      Point由時間戳(time)、數據(field)、標簽(tags)組成。

      JMeter&InfluxDB集成

      InfluxDB安裝

      網絡端口

      InfluxDB默認使用以下網絡端口:

      TCP端口8086用于通過InfluxDB的HTTP API進行客戶端-服務器通信

      TCP端口8088用于RPC服務以進行備份和還原

      除了上面的端口,InfluxDB還提供了多個可能需要自定義端口的插件??梢酝ㄟ^配置文件修改所有端口映射,配置文件位于/etc/influxdb/influxdb.conf默認位置。

      網絡時間協議(NTP)

      InfluxDB使用主機的UTC本地時間為數據分配時間戳并用于協調目的。使用網絡時間協議(NTP)同步主機之間的時間; 如果主機的時鐘與NTP不同步,寫入InfluxDB的數據的時間戳可能不準確。

      下載安裝

      wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.2.x86_64.rpm sudo yum localinstall influxdb-1.6.2.x86_64.rpm

      InfluxDB配置

      找到InfluxDB配置文件(/etc/influxdb/influxdb.conf)

      vi /etc/influxdb/influxdb.conf

      influxdb.conf中的大多數設置都被注釋掉了;所有注釋掉的設置將確定為內部默認值。如果配置文件中的任何未注釋的設置都會覆蓋內部默認值。

      請注意,本地配置文件不需要包含每個配置設置。

      如果你無法找到配置文件,可以使用InfluxDB顯示配置命令

      Influxd config

      Jmeter使用graphite協議去寫入數據到InfluxDB,因此,需要在InfluxDB配置文件啟用它,如下圖所示:

      [[graphite]] enabled = true bind-address = ":2003" database = "jmeter" retention-policy = "" protocol = "tcp" batch-size = 5000 batch-pending = 10 batch-timeout = "1s" consistency-level = "one" separator = "." udp-read-buffer = 0

      修改后,使用以下命令加載InfluxDB啟動

      有兩種方法可以使用配置文件啟動InfluxDB:

      1.使用以下-config選項將進程指向正確的配置文件

      influxd -config /etc/influxdb/influxdb.conf

      2.將環境變量設置為INFLUXDBCONFIGPATH配置文件的路徑并啟動

      echo $INFLUXDB_CONFIG_PATH /etc/influxdb/influxdb.conf influxd

      InfluxDB操作

      [root@zuozewei ~]# influx #登錄數據庫 Connected to http://localhost:8086 version 1.6.2 InfluxDB shell version: 1.6.2 > show databases #查看所有數據庫 name: databases name ---- _internal > CREATE DATABASE "jmeter" #創建數據庫 > use jmeter #切換數據庫 Using database jmeter > CREATE USER "admin" WITH PASSWORD 'admin' WITH ALL PRIVILEGES # 創建管理員權限的用戶

      JMeter配置

      創建一個測試計劃,并添加Backend Listener

      設置InfluxDB IP及端口設置InfluxDB IP及端口

      運行測試,等待幾秒運行測試,等待幾秒

      查看JMeter是否生成錯誤日志查看JMeter是否生成錯誤日志

      端口說明:

      8086端口,Grafana用來從數據庫取數據的端口

      2003端口,JMeter往數據庫發數據的端口

      查看JMeter數據庫下所有的表

      > show measurements name: measurements name ---- delta jmeter.all.a.avg jmeter.all.a.count jmeter.all.a.max jmeter.all.a.min jmeter.all.a.pct90 jmeter.all.a.pct95 jmeter.all.a.pct99 jmeter.all.h.count jmeter.all.ko.count jmeter.all.ok.avg jmeter.all.ok.count jmeter.all.ok.max jmeter.all.ok.min jmeter.all.ok.pct90 jmeter.all.ok.pct95 jmeter.all.ok.pct99 jmeter.test.endedT jmeter.test.maxAT jmeter.test.meanAT jmeter.test.minAT jmeter.test.startedT total

      OK,我們已經可以將統計指標數據成功發送到InfluxDB

      Grafana&InfluxDB集成

      什么是Grafana?

      性能工具之 JMeter+InfluxDB+Grafana 打造壓測可視化實時監控

      Grafana是一個開源軟件,擁有豐富的指標儀表盤和圖形編輯器,適用Graphite, Elasticsearch, OpenTSDB, Prometheus,InfluxDB。簡單點說就是一套開源WEB可視化平臺。

      官網地址:https://grafana.com/

      安裝啟動

      下載安裝

      wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.2.0-1.x86_64.rpm sudo yum localinstall grafana-4.2.0-1.x86_64.rpm

      啟動

      service grafana-server start Starting grafana-server (via systemctl): [ OK ]

      使用瀏覽器打開 http://IP:3000/login,訪問Grafana主頁

      創建InfluxDB數據源

      單擊save&test,確保可以連接上InfluxDB

      創建dashboard

      添加Graph面板

      數據綁定

      線程數/用戶相關指標

      test.minAT-Min active threads:最小活躍線程數

      test.maxAT-Max active threads:最大活躍線程數

      test.meanAT-Mean active threads:活躍線程數

      test.startedT-Started threads:啟動線程數

      test.endedT-Finished threads:結束線程數

      響應時間指標

      .ok.count:采樣器的成功響應數

      .h.count:每秒點擊數

      .ok.min:采樣器成功最短響應時間

      .ok.max:采樣器成功最長響應時間

      .ok.avg:采樣器成功平均響應時間

      .ok.pct:采樣器成功響應百分比

      .ko.count:采樣器失敗響應數

      .ko.min:采樣器失敗的響應最短時間

      .ko.max:采樣稱失敗最長響應時間

      .ko.avg:采樣器失敗平均響應時間

      .ko.pct:采樣器失敗響應百分比

      .a.count:采樣器響應數(ok.count和ko.count的總和)

      .a.min:采樣器最小響應時間(ok.count和ko.count的最小值)

      .a.max:采樣器最大響應時間(ok.count和ko.count的最大值)

      .a.avg:采樣器平均響應時間(ok.count和ko.count的平均值)

      .a.pct:采樣器響應百分比(根據和失敗樣本的總數計算)

      Backend Listener的默認百分位設置為“90;95;99”,即百分位數為90%,95%和99%。

      Graphite使用點(“.”)去拆分的元素,這可能與十進制百分位值混淆。JMeter轉換任何此類值,用下劃線(“ - ”)替換點(“.”)。例如,“99.9 ”變為“99_9 ”

      默認情況下,JMeter發送在samplerName“all”下累計的所有采樣器的指標。 如果配置了 BackendListenerSamplersList,那么JMeter還會發送匹配樣本名稱的指標,前提是配置 summaryOnly=true

      壓測中的效果

      導入Dashboard模版

      如果讓大家去設計一個好看的Dashboard,估計大家都不太想從零開始自己設計,其實Grafana官網提供豐富的模版的庫,大家可以自己上去找,然后進行二次擴展。

      官網模版庫:https://grafana.com/dashboards

      搜索看板模版

      此處,我選擇下載這個下載量3000+的模版

      下模版JSON文件

      導入模版

      選擇數據源

      JMeter Backend Listener設置

      壓測期間的動畫效果

      至此,我初步打造的壓測可視化實時監控大功告成~?

      云性能測試服務 CPTS 數據庫 自動化測試

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel表格如何轉換為圖片
      下一篇:wps如何按底色進行統計
      相關文章
      国产精品无码亚洲一区二区三区| 2020天堂在线亚洲精品专区| 亚洲精品无码成人| 91亚洲自偷在线观看国产馆| 亚洲精品在线不卡| 久久精品国产亚洲AV麻豆网站 | 亚洲午夜无码片在线观看影院猛| 亚洲av无码专区在线观看下载| 涩涩色中文综合亚洲| 2020天堂在线亚洲精品专区| 亚洲日本国产综合高清| 亚洲综合激情五月色一区| 亚洲va久久久久| 亚洲精品国产第一综合99久久 | 亚洲精品制服丝袜四区| 亚洲日本va在线视频观看| 亚洲精品无码精品mV在线观看| 亚洲综合另类小说色区| 亚洲色大成网站WWW久久九九| 亚洲色大成网站WWW久久九九 | 国产精品亚洲综合久久| 亚洲欧美日韩综合久久久| 亚洲人成电影网站色www| 亚洲AV无码一区二区三区电影| 国产精品亚洲专区无码WEB| 国产亚洲高清在线精品不卡| 亚洲一级片免费看| 亚洲人成网站在线播放vr| 亚洲Av无码专区国产乱码DVD| 亚洲欧洲日产国产综合网| 7777久久亚洲中文字幕蜜桃 | 亚洲大片免费观看| 亚洲最大中文字幕无码网站| 亚洲高清毛片一区二区| 日韩亚洲国产综合久久久| 激情综合色五月丁香六月亚洲| 精品久久久久久亚洲| 久久久久亚洲AV无码观看| 欧洲 亚洲 国产图片综合| 含羞草国产亚洲精品岁国产精品| 亚洲精品成人久久久|