在做性能測試的時候,重點關注點是各項性能指標,用Jmeter工具,查看指標數據,就是借助於聚合報告,但查看時也並不方便。那如何能更直觀的查看各項數據呢?可以通過InfluxDB+Grafana+Jmeter
來實現數據的可視化。
講到這里,可能會對 InfluxDB+Grafana 陌生些,沒關系,后續會詳細講解。
我們先來看一張官網的配圖,如下所示:
如上所示,這就是接下來一系列教程的最終效果了,數據可視化,可添加各種指標數據,是不是很不錯。覺得不錯那就一起一探究竟吧。
注意:環境搭建基於linux+docker
工具介紹
在介紹這三個工具前,還是來簡單說下,三個工具各自的作用:
-
Jmeter:想必大家都很熟悉了,就不多說了,它在平台中扮演的角色是:采集數據
-
InfluxDB:Go 語言開發的一個開源分布式時序數據庫,非常適合存儲指標、事件、分析等數據;它在平台中扮演的角色是:數據存儲
-
Grafana:純 Javascript 開發的前端工具,用於訪問 InfluxDB,自定義報表、顯示圖表等;它在平台中扮演的角色是:數據展示
看完簡單介紹,是不是覺得比聚合報告強大多了。
InfluxDB介紹
官方網址:InfluxDB網址
官方文檔:InfluxDB文檔
- 特色功能
1)基於時間序列,支持與時間有關的相關函數(如最大,最小,求和等);
2)可度量性:可以實時對大量數據進行計算;
3)基於事件:支持任意的事件數據。
- 主要特點
1)無結構(無模式):可以是任意數量的列;
2)可拓展;
3)支持min, max, sum, count, mean, median 等一系列函數,方便統計;
4)原生的HTTP支持,內置HTTP API;
5)強大的類SQL語法;
6)自帶管理界面,方便使用。
InfluxDB安裝
自從在開發同學建議使用docker后,覺得配置環境真的太方便了,今天的博文內容,環境部署都是使用docker,需要注意下,我使用的不是虛擬機,是去年在阿里囤的個服務器,比虛擬機方便太多。
拉取鏡像
使用命令 docker pull influxdb:latest
即可,簡單。
運行容器
使用命令 docker run -itd -p 8086:8086 -p 2003:2003 -p 8083:8083 --name my_influxdb influxdb
即可,容器名字可自定義。
說明:
- 8083端口:InfluxDB的UI界面展示的端口
- 8086端口:Grafana用來從數據庫取數據的端口
- 2003端口:Jmeter往數據庫發數據的端口
修改InfluxDB配置
容器操作
服務是docker啟的,所以需要進入到容器內操作,進入容器命令如下所示:
docker exec -it influxdb_demo bash
我們進入到目錄:cd /usr/bin
,先生成配置文件,使用命令influxd config > /etc/influxdb/influxdb.conf
即可生成。
容器內沒有vim命令,可以將文件拷貝到宿主機上進行編輯,使用命令docker cp -a 819e902a45f9:/etc/influxdb/influxdb.conf /home
,將配置文件拷貝到home路徑下。
配置graphite
我們來修改配置,主要是配置存儲jmeter數據的數據庫與端口號,使用命令vim influxdb.conf
,找到graphite並且修改它的庫與端口,修改如下所示:
配置http
找到http,將前面的#號去掉,我在配置時,配置文件的http是默認啟用的,所以我這里是沒有配置的
網上有帖子說配置admin
的,我在配置時,已沒有這個配置項,應該是版本更新了的原因。
配置文件拷貝到容器
配置修改好后,還得將文件拷貝到容器中,我們可以先將配置文件刪除,再拷貝。操作命令docker cp -a /home/influxdb.conf 819e902a45f9:/etc/influxdb/influxdb.conf
即可。
重啟服務
修改了配置文件,服務重啟下,操作命令docker restart my_influxdb
。
配置數據庫
在修改配置文件時,我們配置了一個數據庫,這個數據庫默認是沒有的,需要手動創建下,我們依然進入到目錄:cd /usr/bin
。
- 文件結構
influxd # influxdb服務器
influx # influxdb命令行客戶端
influx_inspect # 查看工具
influx_stress # 壓力測試工具
influx_tsm # 數據庫轉換工具(將數據庫從b1或bz1格式轉換為tsm1格式)
- 啟動客戶端
使用命令./influx
啟動客戶端,如下所示:
啟動后,就可以輸入對應的sql語句操作數據了。
創建數據庫,使用命令create database "jmeter"
,創建后,我們可以用命令show databases
查看數據庫,如下所示:
創建人員,使用命令create user "用戶名" with password '密碼' with all privileges
,創建好后,使用命令show users
可以查看人員,如下所示:
- 啟動服務端
使用命令./influxd
啟動服務端,如下所示:
InfluxDBStudio
服務搭建好之后,可能有博友有疑問了,數據如何查詢呢?的確,我們配置好后,怎么查看數據庫中的數據。
容器內查詢
遠程連接並進入容器中,啟動influx,查詢語法跟平時用的sql差不多,直接上圖來看一下:
這是我之前用jmeter跑過數據了,所以可以查詢到數據。沒跑過,那自然是沒有數據的。今天暫時不講jmeter的使用,先把InfluxDB分享完,目前知道如何查詢數據即可。
終端連接查詢
我們在使用數據庫,一般都會使用終端連接,比如:Navicat;我們用linux系統,也會選擇用xshell或者SecureCRT連接一樣,之前在github上找到個工具,下載地址
這個工具是windows上使用,下載下來,免安裝,可以直接使用。
打開軟件,新建連接,如下所示,界面很簡潔:
我們點擊新建按鈕,就可以填寫數據,創建連接了,如下所示:
建立連接的字段說明:
- Name 名稱 - 連接的名稱。這是使用此連接時將看到的標簽
- Address 地址 - InfluxDB服務器的IP。端口默認即可
- Database 數據庫 - 用於連接的數據庫。將其留空以列出所有數據庫(需要管理員權限)
- UserName 用戶名 - 用於連接的InfluxDB用戶名
- Password 密碼 - 與連接一起使用的InfluxDB密碼
- Security - Use SSL 使用SSL - 連接到InfluxDB時是否使用SSL安全性(HTTPS)
填寫好字段數據后,我們可以點Test,測試下連接是否正常,如下界面說明連接成功:
我們連接好后,也就可以通過終端工具來查詢數據了,如下所示:
效果跟容器內查詢是一樣的,只是終端方式更加便捷。這里需要注意的是,由於我使用的是阿里服務器,所以端口還需要在安全組中開放端口,這里是需要注意下的。
完成上述配置后,InfluxDB+Grafana+Jmeter性能監控平台的第一步也就完成了,操作起來是不是挺簡單的,不動手覺得難,操作起來實際簡單。
好了,今天就到這,下期見。