概述
本文将介绍如何使用Jmeter+influxDB+Grafana搭建压测可视化实时监控
痛点
在使用jmeter做性能测试的时候,监控系统性能的时候,无论是使用插件还是报告生成,都比较麻烦,比如监控服务的tps信息
为了能够及时看到实时,并且比较美观的图表,我们可以通过jmeter的AbstractBackendListenerClient类,使用Backend Listener发送数据到数据库的存储实时结果。
从jmeter2.13开始,Backend Listener提供一下功能:
- 实时数据
- 漂亮图表
- 能够对比2个以上的测试计划
JMeter 3.2的Backend Listener中引入了 InfluxDBBackendListenerClient允使用UDP或HTTP协议将统计指标发送到InfluxDB
此类提供的功能:
- 实时数据
- 漂亮图表
- 能够对比2个以上的测试计划
- 能够向图表添加注释
- 只要jmeter产生相同的Backend,就可以存储监控数据
Influxdb简介
InfluxDB是用Go语言编写的高性能、高可用的分布式时序数据存储数据库,无其他依赖,安装简单快速。
该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。
InfluxDB特征:
- 无结构(无模式):可以是任意数量的列
- 可以设置metric的保存时间
- 支持与时间有关的相关函数(如min、max、sum、count、mean、median等),方便统计
- 支持存储策略:可以用于数据的删改。(influxDB没有提供数据的删除与修改方法)
- 支持连续查询:是数据库中自动定时启动的一组语句,和存储策略搭配可以降低InfluxDB的系统占用量。
- 原生的HTTP支持,内置HTTP API
- 支持类似sql语法select * from mysql.user
- 支持设置数据在集群中的副本数
- 支持定期采样数据,写入另外的measurement,方便分粒度存储数据。
- schemaless: 结构型数据库类似Mysql需要先定义列,influxdb无需预先定义,无结构的
与传统数据库中的名词比较
influxDB中的名词 | 传统数据库的概念 |
---|---|
database | 数据库 |
measurement | 数据库中的表 |
points | 表里面的一行数据 |
influxdb的points数据说明
- time:默认存储数据会有时间,时间无需关心,会帮我们自动插入
- tags:用来存储数据标识,比如CPU.idle
- fileds:用来存储数据 value=90
influxdb下载安装
下载:
百度网盘下载地址:https://pan.baidu.com/s/13hKY22krYSLTs9_A2O7KVA
提取码:sc9z
[root@jmeter ~]#wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.0.x86_64.rpm --no-check-certificate
安装
[root@jmeter opt]# rpm -ivh influxdb-1.7.0.x86_64.rpm
Preparing... ########################################### [100%]
1:influxdb ########################################### [100%]
安装完之后,生成默认的配置文件 /etc/influxdb/influxdb.conf
修改influxDB配置文件
在配置文件中找到graphite配置项,去掉前面的“#”号
[root@jmeter opt]# vim /etc/influxdb/influxdb.conf
[[graphite]]
# Determines whether the graphite endpoint is enabled.
enabled = true
database = "jmeter" # 数据库名称
retention-policy = ""
bind-address = ":2003" # 端口
protocol = "tcp"
consistency-level = "one"
修改以下信息
[meta]
dir = "/usr/local/influxdb/meta" #存放最终存储的数据,文件以.tsm结尾
[data]
dir = "/usr/local/influxdb/data" #存放数据库元数据 wal
wal-dir = "/usr/local/influxdb/wal" #存放预写日志文件
修改HTTP端口信息
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true
# The bind address used by the HTTP service.
bind-address = ":8086"
创建目录更新权限
[root@jmeter ~]#mkdir -p /usr/local/influxdb/
[root@jmeter ~]#chown -R influxdb:influxdb /usr/local/influxdb/
修改完成之后,可以使用以下命令启动influxDB服务
两种方法:
1、[root@jmeter ~]# influxd -config /etc/influxdb/influxdb.conf
2、添加到环境变量中(推荐)
[root@jmeter ~]# vim /etc/profile
export INFLUXDB_CONFIG_PATH=/etc/influxdb/influxdb.conf
[root@jmeter ~]# source /etc/profile
[root@jmeter ~]# influxd &
influxDB的tcp端口:8088
查看端口有没有起来
[root@jmeter ~]# netstat -anp|grep 8088
influxDB数据库操作
[root@jmeter ~]# influx # 登录数据库
Connected to http://localhost:8086 version 1.6.0
InfluxDB shell version: 1.6.0
> show databases # 查看数据库
name: databases
name
----
_internal
jmeter
> create database "jmeter" # 创建数据库
> use jmeter #切换数据库
Using database jmeter
> create user "admin" with password '123456' with all privileges # 创建管理员权限的用户
Jmeter配置
- 创建一个测试计划,并添加Backend Listenter,Backend Listener implementation 选择org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient
- 添加线程
- 设置influxDB IP及端口
- 运行测试,等待几秒看数据
端口说明
- 2003端口:Jmeter往数据库发数据的端口
- 8086端口,Grafana从数据库取数据的端口
查看Jmeter数据库的表信息
[root@jmeter ~]# influx
Connected to http://localhost:8086 version 1.6.0
InfluxDB shell version: 1.6.0
> show measurements
ERR: database name required
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use <database>".
> show databases
name: databases
name
----
_internal
jmeter
> use jmeter
Using database jmeter
> show measurements
name: measurements
name
----
jmeter.all.a.avg
jmeter.all.a.count
jmeter.all.a.max
jmeter.all.a.min
jmeter.all.a.pct90
jmeter.all.a.pct95
jmeter.all.a.pct99
jmeter.all.h.count
jmeter.all.ko.avg
jmeter.all.ko.count
jmeter.all.ko.max
jmeter.all.ko.min
jmeter.all.ko.pct90
jmeter.all.ko.pct95
jmeter.all.ko.pct99
jmeter.all.ok.avg
jmeter.all.ok.count
jmeter.all.ok.max
jmeter.all.ok.min
jmeter.all.ok.pct90
jmeter.all.ok.pct95
jmeter.all.ok.pct99
jmeter.all.rb.bytes
jmeter.all.sb.bytes
jmeter.test.endedT
jmeter.test.maxAT
jmeter.test.meanAT
jmeter.test.minAT
jmeter.test.startedT
欢迎来到testingpai.com!
注册 关于