jmeter+influxdb+grafana搭建壓測監控平臺

概述
  本文將介紹如何使用Jmeter+influxDB+Grafana搭建壓測可視化實時監控html


痛點
  在使用jmeter作性能測試的時候,監控系統性能的時候,不管是使用插件仍是報告生成,都比較麻煩,好比監控服務的tps信息mysql

 

爲了可以及時看到實時,而且比較美觀的圖表,咱們能夠經過jmeter的AbstractBackendListenerClient類,使用Backend Listener發送數據到數據庫的存儲實時結果。
從jmeter2.13開始,Backend Listener提供一下功能:sql

  • 實時數據
  • 漂亮圖表
  • 可以對比2個以上的測試計劃

 

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

此類提供的功能:數據庫

  • 實時數據
  • 漂亮圖表
  • 可以對比2個以上的測試計劃
  • 可以向圖表添加註釋
  • 只要jmeter產生相同的Backend,就能夠存儲監控數據

Influxdb簡介
 InfluxDB是用Go語言編寫的高性能、高可用的分佈式時序數據存儲數據庫,無其餘依賴,安裝簡單快速。
  該數據庫如今主要用於存儲涉及大量的時間戳數據,如DevOps監控數據,APP metrics, loT傳感器數據和實時分析數據。
InfluxDB特徵:apache

  • 無結構(無模式):能夠是任意數量的列
  • 能夠設置metric的保存時間
  • 支持與時間有關的相關函數(如min、max、sum、count、mean、median等),方便統計
  • 支持存儲策略:能夠用於數據的刪改。(influxDB沒有提供數據的刪除與修改方法)
  • 支持連續查詢:是數據庫中自動定時啓動的一組語句,和存儲策略搭配能夠下降InfluxDB的系統佔用量。
  • 原生的HTTP支持,內置HTTP API
  • 支持相似sql語法select * from mysql.user
  • 支持設置數據在集羣中的副本數
  • 支持按期採樣數據,寫入另外的measurement,方便分粒度存儲數據。

schemaless: 結構型數據庫相似Mysql須要先定義列,influxdb無需預先定義,無結構的
與傳統數據庫中的名詞比較vim

 influxDB中的名詞  傳統數據庫的概念
 database  數據庫
 measurement  數據庫中的表
 points  表裏面的一行數據

 

influxdb的points數聽說明瀏覽器

  • time:默認存儲數據會有時間,時間無需關心,會幫咱們自動插入
  • tags:用來存儲數據標識,好比CPU.idle
  • fileds:用來存儲數據 value=90

influxdb下載安裝
下載:
[root@jmeter ~]#wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.0.x86_64.rpm --no-check-certificate
百度網盤下載地址:https://pan.baidu.com/s/13hKY22krYSLTs9_A2O7KVA
提取碼:sc9z
安裝
[root@jmeter opt]# rpm -ivh influxdb-1.7.0.x86_64.rpm
Preparing... ########################################### [100%]
1:influxdb ########################################### [100%]
安裝完以後,生成默認的配置文件 /etc/influxdb/influxdb.conf 架構

修改influxDB配置文件
在配置文件中找到graphite配置項,去掉前面的「#」號
[root@jmeter opt]# vim /etc/influxdb/influxdb.conf less

[[graphite]]
# Determines whether the graphite endpoint is enabled.
enabled = true
database = "jmeter"    # 數據庫名稱
retention-policy = ""
bind-address = ":2003"    # 端口
protocol = "tcp"
consistency-level = "one"

修改如下信息
[meta]
dir = "/usr/local/influxdb/meta"    #存放最終存儲的數據,文件以.tsm結尾
[data]
dir = "/usr/local/influxdb/data"    #存放數據庫元數據 wal
wal-dir = "/usr/local/influxdb/wal"    #存放預寫日誌文件

修改HTTP端口信息
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true

# The bind address used by the HTTP service.
bind-address = ":8086"

 

建立目錄更新權限
[root@jmeter ~]#mkdir -p /usr/local/influxdb/
[root@jmeter ~]#chown -R influxdb:influxdb /usr/local/influxdb/
修改完成以後,可使用如下命令啓動influxDB服務
兩種方法:
一、[root@jmeter ~]# influxd -config /etc/influxdb/influxdb.conf

二、添加到環境變量中(推薦)
[root@jmeter ~]# vim /etc/profile
export INFLUXDB_CONFIG_PATH=/etc/influxdb/influxdb.conf
[root@jmeter ~]# source /etc/profile
[root@jmeter ~]# influxd &
influxDB的tcp端口:8088
查看端口有沒有起來
[root@jmeter ~]# netstat -anp|grep 8088
influxDB數據庫操做

[root@jmeter ~]# influx    # 登陸數據庫
Connected to http://localhost:8086 version 1.6.0
InfluxDB shell version: 1.6.0
> show databases    # 查看數據庫
name: databases
name
----
_internal
jmeter
> create database "jmeter"    # 建立數據庫
> use jmeter    #切換數據庫
Using database jmeter
> create user "admin" with password '123456' with all privileges    # 建立管理員權限的用戶

 

Jmeter配置

  • 建立一個測試計劃,並添加Backend Listenter,Backend Listener implementation 選擇org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient
  • 添加線程
  • 設置influxDB IP及端口
  • 運行測試,等待幾秒看數據

 

 

 

端口說明

2003端口:Jmeter往數據庫發數據的端口
8086端口,Grafana從數據庫取數據的端口

查看Jmeter數據庫的表信息

[root@jmeter ~]# influx
Connected to http://localhost:8086 version 1.6.0
InfluxDB shell version: 1.6.0
> show measurements
ERR: database name required
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use <database>".
> show databases
name: databases
name
----
_internal
jmeter
> use jmeter
Using database jmeter
> show measurements
name: measurements
name
----
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.avg
jmeter.all.ko.count
jmeter.all.ko.max
jmeter.all.ko.min
jmeter.all.ko.pct90
jmeter.all.ko.pct95
jmeter.all.ko.pct99
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.all.rb.bytes
jmeter.all.sb.bytes
jmeter.test.endedT
jmeter.test.maxAT
jmeter.test.meanAT
jmeter.test.minAT
jmeter.test.startedT

這個時候已經能夠將統計數據成功發送到InfluxDB

Grafana和influxDB數據源配置
什麼是Grafana
Grafana是一款可視化工具,大多使用在時序數據的監控方面,如同Kibana相似。Grafana的UI更加靈活,有豐富的插件,功能強大,數據源可使用zabbix、influxdb等
grafana的下載和安裝
官網:https://grafana.com/grafana/download
下載地址:https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.1-1.x86_64.rpm
安裝:rpm -ivh grafana-5.2.1-1.x86_64.rpm

啓動
[root@jmeter ~]# service grafana-server start
Starting Grafana Server: ... [ OK ]

瀏覽器訪問:http://IP:3000/login
grafana的默認用戶名密碼都是admin,第一次登陸會要求更改密碼

建立influxDB數據源

 

單擊save & Test,提示:data source is working,說明保存和鏈接成功

建立dashboard

新建Graph面板

數據綁定

 

選擇influxdb的數據源庫名,jmeter的相關表

查看SQL語句

定義顯示的名稱

保存數據模板
直接按ctrl+s或點擊保存按鈕

 

 

說明:想要了解這些監控都表明什麼意思,能夠訪問Jmeter的官網地址去查看閱讀「http://jmeter.apache.org/usermanual/realtime-results.html」

線程數/用戶相關指標
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模版
從Grafana官網下載相應的模板
官網模版庫:https://grafana.com/dashboards
搜索看板模版

 

下載:jmeter load test

 

下載的jar包複製到jmeter的/lib/ext下面

導入模板

加載模板文件

選擇模板數據源

重啓jmeter,選擇rocks.nt.apm.jmeter.JMeterinfluxDBBackendListenerClient,輸入influxDB的host和端口,以前建立用戶名和密碼

 

壓測的效果圖

 

軟件測試技術交流:【 687136491 】

功能測試,自動化測試,性能測試,測試開發,測試架構方面的技術問題歡迎與加羣與我交流,加羣時請備註下:博客園-芳姐

 

轉載時,請註明:https://www.cnblogs.com/mike-liu/p/10080351.html

相關文章
相關標籤/搜索