https://www.cnblogs.com/Detector/p/10104254.htmlhtml
在作性能測試時,若是有一個性能測試結果實時展現的頁面,能夠極大的提升咱們對系統性能表現的掌握程度,進而提升咱們的測試效率。可是咱們每次打開Jmeter都會有幾個碩大的字提示別用GUI模式進行負載測試,並且它自帶的監視器效果實在通常:在Windows下渲染效果很差,在linux環境(非GUI環境)下更是沒法使用,這一點我在如何選擇性能測試工具中有過簡單的描述。linux
因此,在作性能測試時,爲Jmeter構建一個可視化的監控環境平臺是很是有價值的。這也是這篇博客的目的。web
首先咱們來看一下最後的成品,監控了TPS、併發、請求成功率、失敗率、請求&接收數據大小、平均響應時長、95%的請求平均響應時長等等。(這裏面的各個板塊都是可自定義配置的,不管多花裏花哨均可以[奸笑臉])
sql
業務服務監控:精確到具體的接口
docker
Mysql監控:精確到具體的查詢函數
數據庫
Redis監控:精確到具體的cache操做
後端
首先咱們一塊兒來簡單瞭解下今天須要用到的這幾個工具。ruby
一個開源的時序數據庫,使用GO語言開發,特別適合用於處理和分析資源監控數據這種時序相關數據。bash
Google用來監測單節點的資源信息的監控工具。Kubernetes中也缺省地將其做爲單節點的資源監控工具,各個節點缺省會被安裝上Cadvisor。併發
一款可視化度量分析和可視化套件,經常使用於可視化基礎設施和應用程序分析,與Kibana相似,UI更加靈活,且插件豐富。
Apache組織開發的基於Java的壓力測試工具。用於對軟件作壓力測試,它最初被設計用於Web應用測試,但後來擴展到其餘測試領域。
雖然直接部署、配置grafana、InfluxDB並不複雜,可是使用docker部署會有更好的環境可移植性,也更簡單,因此選擇使用docker進行部署。
若是咱們肯定本身想要的鏡像版本,能夠直接指定版本執行docker run
來運行,從而忽略掉拉取鏡像的過程,本文就是使用的這種方法。
可是有一點須要注意,若是沒有指定鏡像版本直接運行docker run
,docker
主進程首先會在本地查找,如未發現合適的鏡像,會直接到遠程鏡像倉庫(能夠指定私有倉庫)拉取最新版本(tag:latest)。
docker run -d \
-p 8083:8083 \ -p 8086:8086 \ --expose 8090 \ --expose 8099 \ --name influxsrv \ tutum/influxdb
docker run \
--volume=/:/rootfs:ro \ --volume=/var/run:/var/run:rw \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ -p 8080:8080 \ --detach=true --link influxsrv:influxsrv \ --name=cadvisor \ google/cadvisor:latest \ -storage_driver=influxdb \ -storage_driver_db=cadvisor \ -storage_driver_host=influxsrv:8086
docker run -d \
-p 3000:3000 \ -e INFLUXDB_HOST=localhost \ -e INFLUXDB_PORT=8086 \ -e INFLUXDB_NAME=cadvisor \ -e INFLUXDB_USER=root -e INFLUXDB_PASS=root \ --link influxsrv:influxsrv \ --name grafana \ grafana/grafana
參數 | 含義 |
---|---|
-d | 容器在後臺運行 |
-p | 將容器內端口映射到宿主機端口,格式爲 宿主機端口:容器內端口;8083是influxdb的web管理工具端口,8086是influxdb的HTTP API端口 |
--expose | 可讓容器接受外部傳入的數據 |
--name | 指定容器名稱 |
--link | --link [name/id]:alias, name和id是源容器的name和id,alias是源容器在link下的別名;在--link標籤下,接收容器就是經過設置環境變量和更新/etc/hosts文件來獲取源容器的信息,並與之創建通訊和傳遞數據的。 |
--volume | 把一個本地主機的目錄當作數據卷掛載在容器上,[host-dir]:[container-dir]:[rw/ro],掛載點可讓多個容器共享。 |
- storage | storage_driver/指定數據庫類型、storage_driver_db/指定數據庫實例、storage_driver_host/指定數據庫host |
鏡像名稱後面加冒號接tag,能指定docker版本,安裝完成以後執行docker ps
會看到下面的信息
也能夠執行docker exec -it container-id /bin/bash
進入容器內部查看信息,好比咱們拉取的grafana
鏡像的grafana版本是5.3.4。
咱們在上面執行了docker run
以後,其實服務就已經起來了,因此如今能夠直接使用8083這個已經映射好的influxdb的web管理端口進行influxd的配置管理。
直接訪問http://host-ip:8083/
進入配置管理界面。點擊配置管理界面右上角的 配置按鈕圖標 進入配置配置管理後臺,使用root/root
登陸。
在上圖中咱們能夠看到influxdb提供了一些查詢/操做數據的語句模版,這對咱們這些不太熟悉它的人寫SQL很是有幫助。
好比咱們選擇模板CREATE DATABASE
,在輸入框會出現CREATE DATABASE "db_name"
,把db_name 替換成咱們的數據源cadvisor,回車,咱們的數據庫就建立完成了。接下來咱們繼續執行下面的SQL來完成用戶的建立和受權:
CREATE USER "cadvisor" WITH PASSWORD 'cadvisor' grant all privileges on "cadvisor" to "cadvisor"
執行成功會有 Success! (no results to display)
的提示。
執行docker run 的命令的時候會生成的一串數字
其實在上面咱們執行docker run
安裝cAdvisor的時候,cAdvisor就已經完成了,咱們訪問http://host-ip:8080/containers/
能看到下面的信息
咱們在前面已經完成了grafana的部署啓動,訪問http://host-ip:3000
使用admin/admin
便可登陸配置管理後臺,若是不想修改密碼能夠選擇跳過。
選擇數據庫類型爲influxdb,host爲http://influxsrv:8086
,填寫cadvisor的帳戶密碼:
保存以後,點擊保存並測試:
點擊左側的 + 號,選擇Dashboard,選擇graph
進入心界面後,選擇title,選擇編輯
在展現數據配置界面選擇一個數據源,好比內存,點擊保存,便可完成該數據的動態展現:
在配置界面Axes選項卡中配置相關的顯示單位。能夠根據實際的狀況選擇監控的單位。,由於咱們監控的內存,因此選擇的是相關的單位。
至此, 全部配置步驟完成,簡單配置了兩個圖像:
是否是很奇怪怎麼說了那麼久仍是沒有說到怎麼配置Jmeter的監控?其實作完前面的事情,咱們的測試環境就已經搭建完了,在接入數據庫以前咱們可使用前面的方法在influxdb建一張叫Jmeter的表,而後在啓動測試以前選擇添加一個後端監聽器,並選擇爲 influxdb ,數據庫鏈接配置修改成咱們搭建的真實host就能夠運行測試了,數據都會寫入Jmeter這張表,剩下的就是如何配置第一張圖那樣的花裏胡哨的東西把它展現出來:
下圖是我簡單選擇的幾個維度生成的監控圖像,紅框標出的是能夠選擇的各類指標,還有一部分沒有羅列出來,能夠根據實際狀況進行選擇:
參考資料:
https://www.jianshu.com/p/21d66ca6115e
http://www.javashuo.com/article/p-xgvkyqzq-t.html
https://my.oschina.net/guol/blog/271225
https://blog.csdn.net/smooth00/article/details/79926294
https://www.jianshu.com/p/d078d353d12f