概述
本文我们将介绍如何使用JMeter+InfluxDB+Grafana打造压测可视化实时监控
方案介绍
JMeter引入Backend Listener,用于在压测过程中实时发送统计指标数据给时序数据库Influxdb,通过配置Grafana(开源的WEB可视化看板)数据源连接到Influxdb,我们就可以创建炫酷的可视化看板,并可以实时获取到测试指标数据。
influxDB介绍
时序数据库:处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。想象它就像一个sql表,其中时间是它的主键
InfluxDB:是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。
官网地址:www.influxdata.com/
数据Demo:
select time,application,avg from jmeter limit 10
name: jmeter
time application avg
---- ----------- ---
1672975692792000000 flaskservice 67.99
1672975697780000000 flaskservice 66.92
1672975702790000000 flaskservice 68.35
1672975707793000000 flaskservice 139.1299999999999
1672975712792000000 flaskservice 230.17999999999984
1672975717784000000 flaskservice 311.08000000000004
1672975722791000000 flaskservice 391.6
1672975727790000000 flaskservice 442.39000000000004
1672975732784000000 flaskservice 422.21
1672975737790000000 flaskservice 402.06000000000006
与传统数据库中的名词做比较
influxDB中的名词 | 传统数据库中的概念 |
---|---|
database | 数据库 |
measurement | 数据库中的表 |
points | 表里面的一行数据 |
InfluxDB中独有的一些概念 Point由时间戳(time)、数据(field)、标签(tags)组成。
Point属性 | 传统数据库中的概念 |
---|---|
time | 每个数据记录时间,是数据库中的主索引(会自动生成) |
fields | 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度,实际jmeter压测的avg,countError等 |
tags | 各种有索引的属性:地区,海拔,实际jmeter压测的application字段等 |
JMeter&InfluxDB集成
安装:
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.2.x86_64.rpm
sudo yum localinstall influxdb-1.6.2.x86_64.rpm
找到InfluxDB配置文件(/etc/influxdb/influxdb.conf)
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
重启influx服务
systemctl daemon-reload
systemctl restart influxd.service
systemctl restart influxdb.service
创建jmeter database
#输入influx进入数据库
influx
#创建数据库
CREATE DATABASE "jmeter" #创建数据库
use jmeter #切换数据库
CREATE USER "admin" WITH PASSWORD 'admin' WITH ALL PRIVILEGES # 创建管理员权限的用户
JMeter配置
创建一个测试计划,并添加Backend Listener
设置InfluxDB IP及端口设置InfluxDB IP及端口
运行测试,等待几秒运行测试,等待几秒
查看JMeter是否生成错误日志查看JMeter是否生成错误日志
端口说明:
8086端口,Grafana用来从数据库取数据的端口
2003端口,JMeter往数据库发数据的端口
Grafana&InfluxDB集成
安装
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.2.0-1.x86_64.rpm
sudo yum localinstall grafana-4.2.0-1.x86_64.rpm
检查服务状态
systemctl status grafana-server.service
使用浏览器打开 http://IP:3000/login,访问Grafana主页,默认用户名和密码为admin/admin
创建InfluxDB数据源
导入Dashboard模版设置DB和Measurement
模板可从grafana官网下载,也可使用下面网盘内的模板
链接: https://pan.baidu.com/s/12BbLOLc5HdzvAI64RZPeFA 提取码: 4rks
压测监控效果