Locust+InfluxDB+Grafana 效能測試資料視覺化展示
前言
日常執行執行效能測試,測試結果的監控與分析至關重要,Locust 工具在內部採用了一個時間序列資料結構,專門用來記錄每個事件的統計資訊。這種資料結構允許我們在 Charts 標籤頁中輕鬆檢視各個時間節點的效能資料。然而生成了報告也是獨立一份檔案,不易儲存也不好分類,特別在系統多次迭代後再執行效能測試,對歷史資料進行參照和比對會有一定困難。
為了長期儲存這些資料,以供後續深入分析,我們可以考慮將 Locust 的測試資料傳送至外部資料儲存系統,比如 InfluxDB。同時結合使用 Grafana 等視覺化工具,我們可以更直觀地展示和分析這些資料。
配置完成的大致效果如下
本文講解如何使用 Locust 進行負載測試並將測試資料上報至 InfluxDB。此外展示如何利用 Grafana 對測試資料進行視覺化展示。
如下整個安裝和配置過程在 Centos7 上完成
安裝和配置 InfluxDB
首先是安裝和配置 InfluxDB,安裝並配置 InfluxDB 以接收 Locust 傳送的測試資料。InfluxDB 是一個時間序列資料庫,非常適合儲存和查詢 Locust 生成的測試資料。
我這裡使用的是 docker 安裝的方式,附上 docker 的安裝過程。
docker 安裝
安裝依賴
sudo yum install -y yum-utils
設定儲存庫
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
關閉防火牆
docker 會用到各種埠,不是生產環境的話, 建議是關閉防火牆
systemctl stop firewalld
systemctl disable firewalld
安裝 docker 引擎
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
啟動 docker 服務
sudo systemctl start docker
執行 hello-world 映象,驗證安裝成功
我看的官網教程,執不執行這個都無所謂,使用 docker -version 一樣可以確認安裝效果,run hello-world 還要多裝一個映象。但是我都執行了就貼上結果。
sudo docker run hello-world
docker images
配置騰訊雲映象源加速下載
vim /etc/docker/daemon.json
新增內容
{ "registry-mirrors": [ "https://mirror.ccs.tencentyun.com" ] }
重啟 Docker
systemctl restart docker
安裝 influxdb
後邊使用的監聽指令碼只支援 influxdb1 版本,influxdb2 與 1 的使用和配置大有不同。
docker run -p 8086:8086 -v $PWD:/var/lib/influxdb influxdb:1.8
新建 influxdb 資料庫
docker exec -it influxdb influx
CREATE DATABASE bucket
至此配置 InfluxDB 以接受 Locust 的連線過程已經完成。按上邊的配置,InfluxDB 應該監聽 8086 埠。我這 InfluxDB 和 Locust 均在一臺主機,如果是環境不在一塊,請確保防火牆設定允許 Locust 機器連線到這個埠。
安裝 locust
docker pull locustio/locust
安裝監聽
pip3 install locust-influxdb-listener
這是 github 上一個既有的專案,主要是透過監聽 Locust 的 event 事件,在壓測過程中將資料實時錄入 influxdb。
專案地址在這:- locust-influxdb-listener
新建一個 py 檔案做測試
touch locustfile.py
編寫一個基礎的 get 請求
from locust import between, events, tag, task, HttpUser
#匯入監聽的包
from locust_influxdb_listener import InfluxDBListener, InfluxDBSettings
# 新增監聽事件
@user1ener
def on_locust_init(environment, **_kwargs):
# 寫上influxDB配置
influxDBSettings = InfluxDBSettings(
host='localhost', # influxDBIP
port='8086', # 對應埠號
user='admin', # influxDBIP賬號
pwd='1234123', # 密碼
database='bucket',
# 新增tag,便於分類
additional_tags={
'environment': 'test',
'some_other_tag': 'tag_value',
}
)
# 使用配置啟用監聽
InfluxDBListener(env=environment, influxDbSettings=influxDBSettings)
class TestWebUser(HttpUser):
wait_time = between(1, 5)
@tag('home_page')
@task(1)
def home_page(self):
with self.client.get("/", catch_response=True) as response:
if response.status_code != 200:
response.failure("Got wrong response")
def on_start(self):
print('New user was spawned')
執行 locust 確認服務正常
locust
訪問 IP:8089,填寫測試入參並執行
(是的,又是百度)
執行完成後,返回 influxdb 確認資料是否正確入庫
docker exec -it influxdb influx
> use bucket
> SHOW MEASUREMENTS
檢查資料
按如上指令碼會新建兩個容器,分別是 locust_events、locust_requests 兩個基礎的壓測資訊,詳細的表欄位如下
到這裡基礎的 locust 資料入庫 influxdb 算是完成了,接下來只要展示對應的報表資料即可,我這使用的是公司的 Granfana,所以跳過了 Granfana 模組,直接進入配置環節。
Grafana 配置
Granfana 新增 influxdb 資料來源
從首頁進入管理模組以後,點選資料來源
點選 add new data source
填寫自己 influxdb 的資料來源 IP、賬號、密碼、庫名
新建一個儀表板,這裡是獲取上邊指令碼的響應時間示例
SELECT mean("response_time") FROM "autogen"."locust_requests" WHERE ("environment"::tag = 'test') AND $timeFilter GROUP BY time($__interval) fill(null)
儲存一下,重新整理以後能夠出現資料即配置成功了
這個作者的 dashboard 很好看,我附上地址
locust-grafana-dashboard.json
執行到入庫環節,大家應該可以看到採用監聽方式獲取的效能測試資料並不多,基本只有響應時間、使用者數,我看了網上很多文章,有的透過分析日誌進行資料入庫的方式還可以獲取到 TPS 和報錯明細等資料,再透過 Grafana 的計算和圖表配置可以展示非常豐富的測試資料,感興趣可以自己上手配置和分析。
參考文件
Locust1.x 的監控平臺
相關文章
- Python疫情資料分析,並做資料視覺化展示Python視覺化
- Django 視覺化Web展示 學習Django視覺化Web
- 資料視覺化【十五】視覺化
- 資料看板視覺化視覺化
- Matlab資料視覺化Matlab視覺化
- 如何利用Python詞雲和wordart視覺化工具對朋友圈資料進行視覺化展示PythonDart視覺化
- 資料視覺化基本原理——視覺化模型視覺化模型
- 展示企業情況的BI資料視覺化大屏怎麼做?視覺化
- 什麼是資料視覺化,為什麼資料視覺化很重要?視覺化
- 資料視覺化--實驗五:高維非空間資料視覺化視覺化
- 視覺化之資料視覺化最強工具推薦視覺化
- 什麼是資料視覺化?hightopo資料視覺化助力企業數字化視覺化
- 資料視覺化實踐視覺化
- python資料視覺化——echartsPython視覺化Echarts
- 如何看待資料視覺化?視覺化
- 視覺化中的資料視覺化
- python 資料視覺化利器Python視覺化
- 資料視覺化的秘密視覺化
- 【matplotlib教程】資料視覺化視覺化
- 資料視覺化的作用視覺化
- [效能測試+資料採集展示分析+告警策略]Jmeter+Collectd+Influxdb+GrafanaJMeterUXGrafana
- 資料視覺化能否代替資料分析視覺化
- 試驗資料的篩選和質量視覺化視覺化
- Mysql效能監控視覺化MySql視覺化
- (在模仿中精進資料視覺化03)OD資料的特殊視覺化方式視覺化
- 資料視覺化的基本原理——視覺通道視覺化
- 思邁特軟體Smartbi:如何快速打造資料大屏視覺化展示系統視覺化
- Python資料視覺化matplotlib庫Python視覺化
- pyecharts做資料視覺化(二)Echarts視覺化
- 資料視覺化的藝術視覺化
- 什麼是資料視覺化?視覺化
- 新冠肺炎資料視覺化視覺化
- 視覺化資料分析軟體視覺化
- 如何做好資料視覺化視覺化
- Matplotlib資料視覺化基礎視覺化
- 資料視覺化如何選擇合適的視覺化圖表?視覺化
- 獲獎的資料視覺化示例 讓人視覺震撼視覺化
- 使用 Robot Framework 進行自動化視覺測試Framework視覺