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

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

概述
本文将介绍如何使用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文件

请输入回帖内容 ...