前言:
因爲近期項目涉及到一些性能測試監控平臺相關的想法
Grafana+Influxdb+Jmeter
Grafana+Prometheus+Jmeter 等等
抽週末時間來嘗試搭建下Grafana+Influxdb+Jmeter
主要介紹使用docker-compose.yml文件的方式進行安裝,簡潔明瞭,不用逐個去安裝服務。
連接aliyun服務器實例
首先得有一臺Linux服務器(虛擬機或者雲服務器),該文以aliyun服務器爲基礎,CentOS 8.0
如果是雲服務器,記得配置需要用到的端口,3000,8086,8083,8090等,設置安全組–> 配置規則裏面:
Aliyun實例安裝Docker:
Linux:Centos 8.0
更新軟件
sudo yum update
卸載舊版本 (如果安裝過舊版本的話)
sudo yum remove docker docker-common docker-selinux docker-engine
安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
設置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo (這個是官方源,很慢)
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo (阿里的源,較快)
可以查看所有倉庫中所有docker版本,並選擇特定版本安裝
yum list docker-ce --showduplicates | sort -r
安裝docker
sudo yum install docker-ce #由於repo中默認只開啓stable倉庫,故這裏安裝的是最新穩定版17.12.0
sudo yum install # 例如:sudo yum install docker-ce-18.03.1.ce-1.el7.centos
坑:注意阿里雲的el7是EL7,切勿看錯成數字1
將root添加到docker組,以便您能夠執行Docker命令,而無需使用sudo,安裝完成之後需要重啓ssh session。
sudo usermod -a -G docker root
啓動Docker
sudo systemctl start docker #
(sudo systemctl enable docker) #開機啓動
sudo docker --version #查看Docker版本
安裝Compose,運行compose.yml
pip3 install docker-compose
docker-compose.yml如下:
version: '3.1'
services:
influxdb:
image: influxdb:latest
container_name: influxdb
ports:
- "8083:8083"
- "8086:8086"
- "8090:8090"
environment:
- INFLUXDB_DB=db0
- INFLUXDB_ADMIN_USER=${INFLUXDB_USERNAME}
- INFLUXDB_ADMIN_PASSWORD=${INFLUXDB_PASSWORD}
volumes:
- influxdb-storage:/var/lib/influxdb
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=${GRAFANA_USERNAME}
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
depends_on:
- influxdb
user: "0"
volumes:
- grafana-storage:/var/lib/grafana
- ./grafana-provisioning/:/etc/grafana/provisioning
volumes:
influxdb-storage:
chronograf-storage:
grafana-storage:
設置環境文件.env, 主要是設置用戶名和密碼
INFLUXDB_USERNAME=admin
INFLUXDB_PASSWORD=admin
GRAFANA_USERNAME=admin
GRAFANA_PASSWORD=admin
運行docker-compose,安裝influxdb和grafana,安裝完成之後如下圖:
docker-compose up -d
http://IP:3000
初始密碼爲:admin/admin
首次登陸grafana會要求設置新密碼
登陸到grafana主頁之後,創建新的Data Source:
配置Database,選擇InfluxDB:
填入你的IP地址http://*.*.*.*:8086
輸入InfluxDB信息,如果沒做更改的話user和pwd都是默認的root, 爲了安全自行修改。
Dashboards導入Jmeter模板
到Dashboards去下載: https://grafana.com/grafana/dashboards
或者直接訪問:https://grafana.com/grafana/dashboards/5496
複製該模板的ID 或者URL
到我們登陸的Grafana主頁去粘貼即可,如下圖
然後可以進行命名,填入之前建好的DataSource 名字,設置發送時間,保存即可。
然後轉到剛剛建好的主頁,如下圖,右上角可以設置:
設置界面,可更具你的需要進行設置,比如下面兩個點分別是設置時間顯示和刷新頻率。
接下來就準備運行Jmeter ,生成數據,看看效果。
挑選了一個URL,對其進行簡單的運行並返回數據。
https://mp.weixin.qq.com/s/pzsE326aPk-4iPhfBC52sQ
其結果如下:
另外再介紹一種方式就是使用docker-compose.yml的方式安裝,而是一步步通過Docker安裝的方式如下:
通過Docker images安裝
安裝influxdb
搜索influx:docker search influx
拉取influxdb鏡像:docker pull influxdb
查看鏡像Images: docker images
運行influxdb容器:docker run --name my_influxdbName -p 8086:8086 influxdb
查看運行的容器Container:docker ps -a
進入容器:docker exec -it 容器ID /bin/bash
創建數據庫jmeterDB: create database jmeterDB
influxdb容器運行成功後,通過Web瀏覽器訪問http://docker-host-ip:8083訪問influxdb後臺管理,並登錄後臺管理系統(默認用戶名:root, 默認密碼:root)
安裝grafana
搜索grafana:docker search grafana
拉取grafana鏡像:docker pull grafana/grafana
運行容器:docker run --name my_grafana -p 3000:3000 grafana/grafana
然後查看狀態
docker ps -a 查看當前運行的實例
退出來再次啓動即可
docker start ContainerID
接下來就是使用http://IPAddress:3000去登陸grafana並進行配置了
步驟如上文docker-compose的方式。
Prometheus
需要在Jmeter下裝一個插件,用於監聽。
https://search.maven.org/remotecontent?filepath=com/github/johrstrom/jmeter-prometheus-plugin/0.6.0/jmeter-prometheus-plugin-0.6.0.jar
下載jmeter-prometheus-plugin-0.6.0.jar之後放到Jmeter/lib/ext下,重啓Jmeter即可。
更多設置參考這篇文章:
https://qainsights.com/jmeter-prometheus-and-grafana-integration/
總結:
性能大佬說:
其實,很多測試朋友喜歡這個監控,是因爲炫酷,可以在領導面前裝逼,出個很炫的報告,
我覺得真正性能監控分析,用這個沒啥卵用,至少我不會用,so,模板配置,感興趣的自己研究下,之所以寫這篇,也是總結下大家的疑問;當然,如果你出去面試,可以把這個拿出去吹一下,畢竟工作不好找。
搭建其實也很簡單,一個配置文件就搞定,但是想要更好地應用到實踐中的話需要對Grafana Dashboard做更多的優化和設置。
另外Grafana+Prometheus+Jmeter這種方式不過就是換一個DataBase,將InfluxDB換成Prometheus,理念大體一樣,很細微的差別。
但是這個Grafana+Prometheus/influxDB模式可以用到其他地方的監控,也是個不錯的選擇。