版本信息:
1. Jmeter5.1.1
2. InfluxDB1.8.0
3. grafana8.1.3
一、概述
本文我们从零开始搭建JMeter+InfluxDB+Grafana压测可视化实时监控。
二、工具下载安装准备
1. JMeter的下载安装:点击这里
2. InfluxDB的下载与安装:
2.1、安装要求:
网络端口
InfluxDB默认使用以下网络端口:
- TCP端口8086用于通过InfluxDB的HTTP API进行客户端-服务器通信
- TCP端口8088用于RPC服务以进行备份和还原
- 除了上面的端口,InfluxDB还提供了多个可能需要自定义端口的插件。可以通过配置文件修改所有端口映射,配置文件默认位置:/etc/influxdb/influxdb.conf
网络时间协议(NTP)
InfluxDB使用主机的UTC本地时间为数据分配时间戳并用于协调目的。使用网络时间协议(NTP)同步主机之间的时间; 如果主机的时钟与NTP不同步,写入InfluxDB的数据的时间戳可能不准确。
2.2、下载安装InfluxDB
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpm
sudo yum localinstall influxdb-1.8.0.x86_64.rpm
2.3、修改InfluxDB配置
vi /etc/influxdb/influxdb.conf
Jmeter使用graphite协议去写入数据到InfluxDB,因此,我们需要在InfluxDB配置文件启用它,修改选项如下:
[[graphite]]
enabled = true
bind-address = ":2003"
database = "jmeter"
retention-policy = ""
protocol = "tcp"
batch-size = 5000
batch-pending = 10
batch-timeout = "1s"
consistency-level = "one"
separator = "."
udp-read-buffer = 0
修改后保存。
2.4、启动InfluxDB有以下两种方法:
1.使用config选项将进程指向正确的配置文件
influxd -config /etc/influxdb/influxdb.conf
2.将环境变量设置为INFLUXDBCONFIGPATH配置文件的路径并启动
echo $INFLUXDB_CONFIG_PATH
/etc/influxdb/influxdb.conf
influxd
启动成功如图:
2.5、InfluxDB创建数据库与管理员的操作
[root@localhost ~]# influx -precision rfc3339 #进入数据库(首先使用:influxd 命令启动数据库,再复制一个连接输入:influx -precision rfc3339 )
Connected to http://localhost:8086 version 1.8.0
InfluxDB shell version: 1.8.0
> show databases #查看所有数据库
name: databases
name
----
_internal
> CREATE DATABASE "jmeter" #创建数据库
> use jmeter #切换进入刚创建的数据库
Using database jmeter
> CREATE USER "admin" WITH PASSWORD 'admin' WITH ALL PRIVILEGES # 创建管理员权限的用户与密码
2.6、JMeter配置发送数据至InfluxDB
- 创建一个测试计划,并添加Backend Listener
- 设置InfluxDB IP及端口
- 运行测试,等待几秒
- 进入到刚刚创建的jmeter数据库中输入:show measurements 查看是否出现如图数据,出现就表示Jmeter运行的统计指标数据能成功发送至InfluxDB
三、Grafana&InfluxDB集成
1、Grafana下载与安装
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-enterprise-8.1.3-1.x86_64.rpm
sudo yum localinstall grafana-enterprise-8.1.3-1.x86_64.rpm
2、启动Grafana
service grafana-server start #启动
service grafana-server stop #停止
3、启动成功,浏览器打开:http://服务器ip:3000/login
访问Grafana主页
【Grafana默认账号密码都是:admin】
4、创建InfluxDB数据源
5、导入创建dashboard
5.1、点击这里去复制模板ID
5.2、进入Grafana去导入模板
导入成功如图:
6、可自己配置查询条件展示数据
线程数/用户相关指标
test.minAT-Min active threads:最小活跃线程数
test.maxAT-Max active threads:最大活跃线程数
test.meanAT-Mean active threads:活跃线程数
test.startedT-Started threads:启动线程数
test.endedT-Finished threads:结束线程数
响应时间指标
.ok.count:采样器的成功响应数
.h.count:每秒点击数
.ok.min:采样器成功最短响应时间
.ok.max:采样器成功最长响应时间
.ok.avg:采样器成功平均响应时间
.ok.pct:采样器成功响应百分比
.ko.count:采样器失败响应数
.ko.min:采样器失败的响应最短时间
.ko.max:采样称失败最长响应时间
.ko.avg:采样器失败平均响应时间
.ko.pct:采样器失败响应百分比
.a.count:采样器响应数(ok.count和ko.count的总和)
.a.min:采样器最小响应时间(ok.count和ko.count的最小值)
.a.max:采样器最大响应时间(ok.count和ko.count的最大值)
.a.avg:采样器平均响应时间(ok.count和ko.count的平均值)
.a.pct:采样器响应百分比(根据和失败样本的总数计算)
Backend Listener的默认百分位设置为“90;95;99”,即百分位数为90%,95%和99%。
Graphite使用点(“.”)去拆分的元素,这可能与十进制百分位值混淆。JMeter转换任何此类值,用下划线(“ - ”)替换点(“.”)。例如,“99.9 ”变为“99_9 ”
默认情况下,JMeter发送在samplerName“all”
下累计的所有采样器的指标。 如果配置了 BackendListenerSamplersList
,那么JMeter还会发送匹配样本名称的指标,前提是配置 summaryOnly=true