Jmeter+InfluxDB+Grafana实时监控部署

本文档介绍了如何在Azure的CentOS Linux上部署InfluxDB和Grafana,以及如何结合JMeter进行性能测试。通过JMeter的BackendListener,数据被发送到InfluxDB,然后在Grafana中展示实时图表。InfluxDB是一个无模式的时间序列数据库,适合存储监控数据。Grafana则是一个强大的可视化工具,能展示美观的图表。在JMeter中配置BackendListener并设置相关参数,即可实现性能测试结果的实时监控。最后,文章提供了Linux下JMX文件执行压测的步骤。

本次部署说明:

InfluxDB+Grafana 部署在Azure 云端 linux(CentOS)

Jmeter部署在本地windows

一、背景

在使用jmeter做性能测试的时候,监控系统性能的时候,无论是使用插件还是报告生成,都比较麻烦,比如监控服务的tps信息。为了能够实时看到比较美观的图表,我们可以通过jmeter的AbstractBackendListenerClient类,使用Backend Listener发送数据到数据库的存储实时结果。

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

此类提供的功能:

  • 实时数据
  • 漂亮图表
  • 能够对比2个以上的测试计划
  • 能够向图表添加注释
  • 只要jmeter产生相同的Backend,就可以存储监控数据

二、Influxdb简介

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

  • 无结构(无模式):可以是任意数量的列
  • 可以设置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

 表里面的一行数据

  • time:默认存储数据会有时间,时间无需关心,会帮我们自动插入
  • tags:用来存储数据标识,比如CPU.idle
  • fileds:用来存储数据 value=90

三、InfluxDB下载安装

下载

[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

修改influxDB配置文件

[root@jmeter opt]# vim /etc/influxdb/influxdb.conf  (在配置文件中找到graphite配置项,去掉前面的“#”号)

[[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    # 创建管理员权限的用户

四、Grafana下载安装配置

Grafana是一款可视化工具,大多使用在时序数据的监控方面,如同Kibana类似。Grafana的UI更加灵活,有丰富的插件,功能强大,数据源可以使用zabbix、influxdb等
grafana的下载和安装。

下载:wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.1-1.x86_64.rpm

安装插件

      yum -y install fontconfig

      yum -y install urw-fonts

安装grafana:rpm -ivh grafana-5.2.1-1.x86_64.rpm

启动:

[root@jmeter ~]# service grafana-server start

http://40.XX.XX.200:3000/login  (grafana服务的监听端口 3000)  grafana的默认用户名密码都是admin,第一次登录会要求更改密码

创建influxDB数据源

看到下图,说明保存成功、连接成功。

导入Dashboard模版

官网模版库:https://grafana.com/dashboards
搜索看板模版

下载

导入模板

加载模板

选择模板数据源

重启Jmeter

五、Jmeter 配置

创建一个测试计划,并添加Backend Listenter

执行效果

注意:

2003端口:Jmeter往数据库发数据的端口
8086端口:Grafana从数据库取数据的端口 
3000端口:Grafana自身服务端口

安装配置好以后,执行压测脚本,如果数据库还是没有数据,一定要看下jmeter所在服务器跟influxdb所在服务器联通性,端口是否开放

六  调用 linux jmx文件执行压测

在安装jmeter的linux服务器上新建文件夹mytest

[root@product mytest]# pwd
/usr/local/jmeter/mytest


1、上传jmx文件到此目录

点击xshell菜单

 

打开sftp窗口,切换到/home/producttest/

拖jmx文件到光标输入处

查看已上传成功

2、放到待运行目录 mv Console-API-query-1.jmx /usr/local/

3.运行压测。 使用jmeter.sh运行jmx文件,将压测结果输出到result.jtl文件中,命令如下。

sh /usr/local/apache-jmeter-5.4.1/bin/jmeter.sh -n -t Console-API-query-1.jmx -l result.jtl

如果不能执行,很可能是权限问题,运行命令:chmod -R 777 apache-jmeter-5.4.1

Grafana已显示执行结果

<think> 根据用户需求,用户希望了解JMeterInfluxDBGrafana的搭配方法。结合提供的引用信息,我将整理一个清晰的配置流程。 核心步骤包括: 1. 安装和配置InfluxDB 2. 安装和配置Grafana 3. 配置JMeter的Backend Listener将数据发送到InfluxDB 4. 在Grafana中导入JMeter监控模板 具体实施如下: --- ### 一、InfluxDB安装配置(Windows环境) 1. **下载安装** 从官网下载InfluxDB([下载地址](https://portal.influxdata.com/downloads/)),解压到本地目录。 2. **修改配置文件** 编辑`influxdb.conf`文件: - 配置`[meta]`和`[data]`部分(通常保持默认) - 关键配置`[graphite]`(启用并设置端口): ```ini [[graphite]] enabled = true database = "jmeter" retention-policy = "" bind-address = ":2003" protocol = "tcp" ``` > 注:引用[1]提到“如果使用5496的模板,templates不要放开”,建议根据模板要求调整。 3. **启动InfluxDB** 命令行执行: ```bash influxd -config influxdb.conf ``` 或直接双击`influxd.exe`(确保配置文件路径正确)。 --- ### 二、Grafana安装配置(Windows环境) 1. **下载安装** 从官网下载Grafana([下载地址](https://grafana.com/grafana/download)),解压后进入`bin`目录。 2. **启动Grafana** 双击`grafana-server.exe`启动服务。 3. **访问并登录** 浏览器打开`http://localhost:3000`,使用默认账号`admin/admin`登录。 4. **添加InfluxDB数据源** - 点击左侧齿轮图标 → "Data Sources" → "Add data source" - 选择"InfluxDB",填写配置: - URL: `http://localhost:8086`(InfluxDB默认端口) - Database: `jmeter`(与InfluxDB配置一致) - HTTP Auth可勾选(若InfluxDB设置了账号密码,引用[2]中账号为`root/root`) - 点击"Save & Test",显示"Data source is working"即成功[^4]。 --- ### 三、JMeter配置 1. **添加Backend Listener** 在JMeter测试计划中右键添加监听器 → "Backend Listener"。 2. **配置参数** - `backend`类型选择`GraphiteBackendListenerClient` - 关键参数: - `influxdbUrl`: `http://localhost:8086/write?db=jmeter`(写入接口) - `summaryOnly`: `false`(记录所有样本) - `samplersRegex`: `.*`(监控所有请求) - `application`: 自定义名称(如`MyApp`) > 注:引用[3]说明此配置将实时发送TPS、响应时间等数据到InfluxDB。 --- ### 四、Grafana展示数据 1. **导入JMeter模板** - 登录Grafana,点击"+" → "Import" - 输入模板ID(如`5496`,此为常用JMeter仪表板模板) - 选择刚添加的InfluxDB数据源 2. **查看监控仪表板** 模板会自动展示关键指标: - 实时TPS、响应时间 - 线程数、错误率 - 网络流量等 --- ### 注意事项 - **端口冲突**:确保InfluxDB(8086/2003)和Grafana(3000)端口未被占用。 - **Docker方案**:引用[2]提供了Linux/docker部署方式(适合生产环境): ```bash # InfluxDB docker run -d -p 8086:8086 -e INFLUXDB_DB=jmeter tutum/influxdb # Grafana docker run -d -p 3000:3000 --link influxdb grafana/grafana ``` - **数据持久性**:InfluxDB默认数据保留策略为7天,可通过`ALTER RETENTION POLICY`调整。 [^1]: [InfluxDB基础配置参考](https://portal.influxdata.com/downloads/) [^2]: [Docker部署方案](https://hub.docker.com/_/influxdb) [^3]: [JMeter+InfluxDB集成原理](https://jmeter.apache.org/usermanual/realtime-results.html) [^4]: [Grafana数据源配置指南](https://grafana.com/docs/grafana/latest/datasources/influxdb/) §§相关问题§§ 1. 如何解决JMeter数据写入InfluxDB失败的问题? 2. Grafana中如何自定义JMeter监控图表? 3. InfluxDB的数据保留策略如何修改? 4. Docker部署InfluxDB+Grafana时如何配置网络? </think> ### JMeter + InfluxDB + Grafana 搭配方法 以下为完整的集成步骤(基于Windows环境),参考引用内容综合整理: --- #### 一、InfluxDB 安装配置 1. **下载安装** - 官网下载 [InfluxDB](https://portal.influxdata.com/downloads/)(选择Windows版)[^1] - 解压到本地目录(如 `D:\influxdb`) 2. **修改配置文件** 编辑 `influxdb.conf` 文件: ```ini [meta] dir = "/path/to/meta" # 元数据存储路径 [data] dir = "/path/to/data" # 数据存储路径 wal-dir = "/path/to/wal" [[graphite]] enabled = true # 启用Graphite协议(关键!) bind-address = ":2003" # JMeter默认写入端口 database = "jmeter" # 指定数据库名 ``` 3. **启动InfluxDB** ```bash influxd -config influxdb.conf # 指定配置文件启动[^1] ``` > 浏览器访问 `http://localhost:8086` 验证服务 --- #### 二、Grafana 安装配置 1. **下载安装** - 官网下载 [Grafana](https://grafana.com/grafana/download)(Windows版)[^4] - 解压后进入 `bin` 目录,双击 `grafana-server.exe` 启动 2. **配置数据源** - 访问 `http://localhost:3000`(默认端口) - 登录:账号/密码 `admin/admin` - 添加数据源 → 选择 **InfluxDB** → 填写配置: ```yaml URL: http://localhost:8086 Database: jmeter # 与InfluxDB配置一致 User: root # 引用[2]的默认账号 Password: root ``` - 点击 **Save & Test** 显示成功提示[^4] --- #### 三、JMeter 配置实时写入 1. **添加后端监听器** 在测试计划中右键: `Add → Listener → Backend Listener` ![](https://jmeter.apache.org/images/screenshots/backend_listener.png) 2. **配置参数** ```ini backendImplementation: org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient graphiteHost: localhost # InfluxDB地址 graphitePort: 2003 # 与InfluxDB的Graphite端口一致[^3] summaryOnly: false # 记录所有样本数据 ``` --- #### 四、Grafana 可视化仪表板 1. **导入JMeter模板** - 登录Grafana → `Create → Import` - 输入模板ID:**5496**(官方JMeter仪表板) - 选择刚配置的InfluxDB数据源 2. **关键监控指标** 模板自动展示: - ✅ 实时TPS(每秒事务数) - ✅ 响应时间分布(90%, 95%, 99%分位值) - ✅ 活动线程数 & 错误率 - ✅ 网络吞吐量(KB/s) --- #### 五、验证流程(Docker方案备选) 若需Linux环境,参考引用[2]的Docker部署: ```bash # InfluxDB容器 docker run -d -p 8086:8086 -p 2003:2003 -e INFLUXDB_DB=jmeter tutum/influxdb # Grafana容器 docker run -d -p 3000:3000 --link influxdb grafana/grafana ``` > ⚠️ **注意** > 1. JMeter的`Backend Listener`端口必须匹配InfluxDB的Graphite端口(默认2003)[^3] > 2. Grafana模板5496需关闭`templates`配置(引用[1]特别提醒) [^1]: InfluxDB Windows安装配置指南 [^2]: Docker容器化部署方案 [^3]: JMeter-InfluxDB数据写入原理 [^4]: Grafana数据源连接步骤
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值