Jmeter + Grafana + InfluxDB 1.8 性能测试监控
一、部署Grafana + InfluxDB
(一)、docker-compose部署Grafana + InfluxDB
1、docker-compose.yml文件
version: '3.9'
services:
influxdb:
image: influxdb:1.7.9
ports:
- '8086:8086'
volumes:
- influxdb-storage:/var/lib/influxdb
grafana:
image: grafana/grafana:latest
ports:
- '3000:3000'
volumes:
- grafana-storage:/var/lib/grafana
- ./grafana-provisioning/:/etc/grafana/provisioning/
depends_on:
- influxdb
environment:
- GF_SECURITY_ADMIN_USER=${GRAFANA_USERNAME}
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
volumes:
influxdb-storage:
grafana-storage:
2、.env文件
这里配置好了InfluxDB的数据库名、登录用户名、密码(密码不能太短,否则部署时报错),以及Grafana的登录用户名、密码。
GRAFANA_USERNAME=admin
GRAFANA_PASSWORD=admin
3、run.sh脚本
#!/usr/bin/env bash
docker-compose down
docker-compose rm
docker system prune
docker volume rm $(docker volume ls -q)
docker-compose up -d --build
执行run.sh脚本后,服务开始启动:

其他操作可参见,第二项,docker部署Grafana + InfluxDB。
二、docker部署Grafana + InfluxDB
(一)、安装部署influxdb
1、下载docker镜像
镜像查询地址:https://registry.hub.docker.com/
docker pull influxdb
2、创建docker实例
docker run -d -p 8086:8086 -p 8083:8083 --name=jmeterdb influxdb
这一步可以省略8083端口,因为新版本已经移除web控制台部分,在1.3版本之前还有web控制台。
3、创建数据库
[root@manager ~]# docker exec -it jemeterdb bash
#进入influx数据库
root@99cbc5ab7f20:/# influx
Connected to http://localhost:8086 version 1.7.9
InfluxDB shell version: 1.7.9
> show databases
name: databases
name
----
_internal
#删除数据库
> drop database jmeter
#创建数据库
> create database jmeter
> show databases
name: databases
name
----
_internal
jemeter
> use jmeter
Using database jmeter
>
4、配置jemeter
首先,添加Backend listener

然后,选择influxdb组件,接着配置相关的参数,比如:连接的主机IP,apllication名称(可以随意命名),以及testtitle(任意命名)

5、检查数据库
首先,运行jemeter录制好的脚本

然后,测试数据库是否连接正确,有数据从jmeter传递过来时说明配置没有问题
> show databases
name: databases
name
----
_internal
jmeter
> use jmeter
Using database jmeter
> select * from jmeter
name: jmeter
time application avg count countError endedT hit max maxAT meanAT min minAT pct90.0 pct95.0 pct99.0 rb sb startedT statut transaction
---- ----------- --- ----- ---------- ------ --- --- ----- ------ --- ----- ------- ------- ------- -- -- -------- ------ -----------
1580358813328000000 test 0 0 0 0 0 internal
1580358816460000000 test 257.2625 80 0 80 345 147 311 331.55 345 1090940 37590 all all
1580358816460000000 test 10 10 8 1 10 internal
(二)、安装部署grafana
1、下载grafana镜像
docker pull grafana/grafana
2、创建docker实例
docker run -d -p 3000:3000 --name=jmeterGraf grafana/grafana
3、登录grafana
服务器地址:192.168.31.4;开放端口:3000
浏览器地址栏输入192.168.31.4:3000
首次登录时,用户名和密码分别为admin

4、添加grafana数据源
首先,选择数据源,这里选择influxDB

然后,配置数据源,这里将数据库地址填好:http://192.168.31.4:8086,access选择Browser也可以选择默认设置,Database填写创建的jmeter,其他的为默认。

最后,点击保存并测试,通过测配置成功。

5、导入bashboard
选择import导入bashboard模板

bashboard下载地址:https://grafana.com/grafana/dashboards/5496

导入模板

导入bashboard模板后,配置好数据库名称

成功导入后,展示监控表图

三、运行监控器
1、配置Backend Listener
在上述第一步中(安装部署influxdb)已详述此步骤,线程组中—>Add—>Listener—>Backend Listener

选择influxdb组件,接着配置相关的参数,比如:连接的主机IP,apllication名称(可以随意命名),以及testtitle(任意命名)

运行jmeter

2、监控器显示结果

四、存在问题
1、时间不同步问题
-
问题描述:由于虚拟机和宿主机的时间不同步,导致监控器无法及时展示数据,只能展示application数据。
-
问题排查:在linux系统中输入date命令,发现虚拟机和宿主机的时间不同步。
-
处理方法:同步宿主机和虚拟机时间

2、influxdb的web无法访问
- 问题描述:根据网上的教程,映射8083端口,但浏览器无法访问influxdb的web管理页面。
docker run -d -p 8086:8086 -p 8083:8083 --name=jmeterdb influxdb
- 问题排查:
排查本机是否已经占用8083端口,结果显示没有占用
netstat -ano | grep 8083
排查是否防火墙导致端口拒绝访问,结果显示防火墙已经关闭
[root@localhost ~]# firewall-cmd --state
not running
- 问题解决:在influxDB1.3版本之前还有web控制台,在influxDB1.3版本之后已经移除web控制台部分。
五、附录
1、防火墙常用命令
1.查看防火墙状态:
firewall-cmd --state
2.启动防火墙
systemctl start firewalld
3.关闭防火墙
systemctl stop firewalld
4.检查防火墙开放的端口
firewall-cmd --permanent --zone=public --list-ports
5.开放一个新的端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
6.重启防火墙
firewall-cmd --reload
7.验证新增加端口是否生效
firewall-cmd --zone=public --query-port=8080/tcp
8.防火墙开机自启动
systemctl enable firewalld.service
9.防火墙取消某一开放端口
firewall-cmd --zone=public --remove-port=9200/tcp --permanent
2、docker常用命令
docker pull images:下载镜像
docker run :创建容器实例对象
docker images:列出已下载docker镜像
docker ps:列出运行中的docker 容器
docker ps –a:列出运行中+已停止docker 容器
docker stop [docker container id]:停止容器
docker start [docker container id]:启动容器
docker rm [docker container id]:删除容器
docker exec –it [docker container id] bash:进入容器内部
3、正则表达式

六、参考
1、jmeter + grafana + influxdb 2.0:https://www.jianshu.com/p/dd0456b8054c
2、jmeter + grafana + influxdb 2.0: https://mp.weixin.qq.com/s/msIT8iaU8tC8GF7sZDyaag

浙公网安备 33010602011771号