jmeter+influxdb+grafana 搭建压测监控平台 (一)

本贴最后更新于 1582 天前,其中的信息可能已经时移世易

概述
本文将介绍如何使用Jmeter+influxDB+Grafana搭建压测可视化实时监控

痛点

在使用jmeter做性能测试的时候,监控系统性能的时候,无论是使用插件还是报告生成,都比较麻烦,比如监控服务的tps信息
image.png

为了能够及时看到实时,并且比较美观的图表,我们可以通过jmeter的AbstractBackendListenerClient类,使用Backend Listener发送数据到数据库的存储实时结果。

从jmeter2.13开始,Backend Listener提供一下功能:

image.png
JMeter 3.2的Backend Listener中引入了 InfluxDBBackendListenerClient允使用UDP或HTTP协议将统计指标发送到InfluxDB
image.png

此类提供的功能:

Influxdb简介

InfluxDB是用Go语言编写的高性能、高可用的分布式时序数据存储数据库,无其他依赖,安装简单快速。
该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。

InfluxDB特征:

与传统数据库中的名词比较

influxDB中的名词 传统数据库的概念
database 数据库
measurement 数据库中的表
points 表里面的一行数据

influxdb的points数据说明

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

image.png

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及端口
- 运行测试,等待几秒看数据

image.png
image.png

端口说明

查看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
这个时候已经可以将统计数据成功发送到InfluxDB
8 回帖
请输入回帖内容 ...
  • huahua
  • huahua

    大师作品!!!点赞!

  • csy123321

    666

  • diudiushishazi

    膜拜大佬!!!

  • brush2018

    为何我设置阿里云访问不到呢,对了,阿里云的InfluxDB的web管理界面也访问不了(已开放阿里云安全策略端口),我的InfluxDB是InfluxDB starting {"log_id": "0CTHfLk0000", "version": "1.7.0", "branch": "1.7",image.png

  • Winnie

    666呀🎉

  • brush2018

    @mike.liu 还有个问题,如何将jmeter组件ServerAgent的CPU,IO,swap内容传递到influxdb中?间接在grafana展现

  • ZT

    大佬如何将测试数据导出为csv文件

请输入回帖内容 ...