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

概述
本文将介绍如何使用 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
7 回帖
请输入回帖内容 ...
  • diudiushishazi

    膜拜大佬!!!

  • 其他回帖
  • huahua

    大师作品!!!点赞!

  • brush2018

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

  • Winnie

    666 呀🎉

  • 查看更多回帖