☰
JMeter+InfluxDB+Grafana:构建性能测试实时监控平台
2026/10/20 17:50:25 网站建设 项目流程

做压测最烦的是什么?我觉得不是脚本写不出来,而是跑完一两个小时,最后只能拿到一份聚合报告,整个过程里系统到底发生了什么,全靠猜。哪怕你盯着 JMeter 的 GUI 看,那个数字也是跳来跳去,看不出趋势,更没法回溯异常是从哪一秒开始的。如果你也有这种感觉,那这篇文章应该能帮到你。

我要说的是一个在 Windows 环境下,用 JMeter 配合 InfluxDB 和 Grafana 搭建实时监控平台的完整过程。这套组合解决的核心问题只有一个:压测过程中的吞吐量、响应时间、错误率、线程数等关键指标,全部以秒级刷新的图表形式呈现在你面前,压测还没结束,你就能看到系统是否已经到达瓶颈。适合的人群很明确:正在做性能测试的工程师、负责压测环境运维的同学,以及需要经常跟领导汇报压测进展但又拿不出过程曲线的倒霉蛋。全文没有任何虚的,全是实操过的步骤和踩坑记录。

1. 整体方案设计思路——为什么非要用 InfluxDB + Grafana

1.1 先看看常见的 JMeter 结果收集方式有什么毛病

很多人刚接触性能测试时,默认就是看 JMeter 自带的聚合报告(Aggregate Report),或者跑完生成一份 HTML 报告。这两种方式不是不能用,但它们的短板非常明显。

聚合报告是测试彻底结束后才统计出来的平均数据。它告诉你整个压测期间平均响应时间是多少,但回答不了这几个问题:系统是在第几分钟开始变慢的?数据库连接池是什么时候被耗尽的?错误率飙升的时候,并发线程数是多少?我见过不少同学拿着聚合报告去定位性能瓶颈,结果只能看到"平均耗时 3 秒"这种粗颗粒度指标,完全不知道瓶颈出现的准确时间点,排查起来大海捞针。

HTML 报告比聚合报告好一点,它有时间趋势图,但生成时机依然是压测结束之后。你没法在压测进行中实时发现问题,更没法在脚本还在跑的时候就判断"是不是应该停掉压测,避免把系统打挂"。做压测的人都知道,在线系统经不起你盲跑一晚上,出一个事故就是大事故。所以,实时的指标可视化,不是锦上添花,而是刚需。

1.2 数据收集方案对比:时序数据库才是正确答案

有人可能第一反应是"我可以把 JMeter 的结果写进 MySQL,然后自己写个查询页面"。理论上确实可行,但注意,JMeter 在高并发压测下,每秒会生成成千上万条采样数据。用 MySQL 这种关系型数据库来存时序数据,写入性能首先就是瓶颈,再加上你还要自己写后端接口、写前端图表,工作量直接翻倍,到最后你都不知道自己是在做压测还是在做开发。

InfluxDB 是专门为时序数据设计的数据库,它最擅长处理的就是"时间戳 + 指标 + 标签"这种结构的数据。JMeter 每产生一条采样结果,都可以实时推送给它,它的写入吞吐量完全扛得住。Grafana 则是目前最流行的开源可视化平台,它原生支持 InfluxDB 作为数据源,配置好之后,你只需要拖拽几下就能生成实时刷新的图表,完全不需要自己写图表代码。

这套组合在行业内已经是事实标准,尤其在性能测试监控领域。Stack Overflow 的开发者调查里也能看到,InfluxDB + Grafana 是最常用的监控组合之一。更重要的是,JMeter 官方自带一个叫做 Backend Listener 的后端监听器,里面内置了 InfluxDB 的发送实现,也就是说,从 JMeter 到 InfluxDB 这一段,官方已经帮你打通了,你要做的只是配参数。

1.3 完整数据流转链路

在这里先把这个架构的整体数据走向梳理清楚,后面配置的时候你就不会迷茫。

JMeter 在压测过程中,每完成一次采样(Sampler),Backend Listener 就会把聚合后的指标数据通过 HTTP 或 UDP 协议发送到 InfluxDB 的接口。InfluxDB 把这些数据按照时间戳存储在指定的数据库(1.x 版本)或桶(2.x 版本)中。Grafana 作为 web 服务运行在另一个端口上,它通过配置好的数据源连接 InfluxDB,用 InfluxQL 或 Flux 查询语句读取数据,最后渲染成折线图、柱状图、仪表盘等可视化面板,并在浏览器里以 1 秒到 5 秒的间隔自动刷新。

整个链路的数据格式非常统一:每条数据都包含 measurement(类似关系型数据库的表名),以及一组 field(实际的指标值)和 tag(用于过滤的属性标签)。JMeter 发送的数据里,measurement 默认叫 jmeter,field 包括响应时间、吞吐量、错误率等,tag 包括测试计划名称、采样器名称等。理解了这个结构,你在 Grafana 里写查询语句时就能有的放矢。

2. 环境准备与基础安装——先把地基打牢

2.1 工具清单与版本匹配说明

在 Windows 上搭建这套平台,需要准备以下工具,我直接给出我验证过的版本组合:

工具推荐版本说明
JDK8 或 11JMeter 的运行基础,建议用 11,兼容性更好
JMeter5.4.1 及以上5.x 版本都对 InfluxDB 有良好支持
InfluxDB1.8.10最稳妥的版本,官方内置 HTTP 写入接口,配置简单
Grafana9.x 或 10.x对 InfluxDB 1.x 数据源支持非常成熟

为什么我推荐 InfluxDB 1.8 而不是 2.x?原因在于 JMeter 的 Backend Listener 和 1.x 的兼容性最好。2.x 引入了桶(Bucket)和令牌(Token)认证,配置方式完全变了,而且 1.8 至今仍有很长的生命周期支持。如果你非要上 2.x,也不是不行,但配置难度会明显上升,后面我会专门用一节来讲两者的差别,帮你在选型上少踩坑。

版本选择上还有一个细节:Grafana 的版本迭代非常快,9.x 到 10.x 的界面和告警规则配置略有差异。我个人推荐直接用 10.x,因为它的告警系统更完善,但如果你熟悉旧版,用 9.x 也完全没问题,下面讲的配置步骤在两个版本里都适用。

2.2 Windows 下 InfluxDB 的安装与启动细节

InfluxDB 是绿色软件,不需要安装向导。下载 zip 包后解压到指定目录,比如 D:\tools\influxdb-1.8.10。解压后目录里会有一个 influxd.exe,这就是数据库服务端,还有一个 influx.exe,这是命令行客户端。

启动前需要先改配置文件。默认情况下 InfluxDB 会读取解压目录下的 influxdb.conf,但 1.8 版本如果不指定配置文件,它也会使用内置的默认配置直接启动。为了把数据落到指定位置,我习惯先编辑配置文件,找到 [meta] 和 [data] 两个配置段,修改 dir 参数指向统一的数据目录。

我实际用的配置文件核心改动如下:

[meta] dir = "D:/data/influxdb/meta" [data] dir = "D:/data/influxdb/data" wal-dir = "D:/data/influxdb/wal" [http] bind-address = ":8086" enabled = true

修改完配置后,用命令行启动服务:

D:\tools\influxdb-1.8.10\influxd.exe -config D:\tools\influxdb-1.8.10\influxdb.conf

注意,HTTP 服务的默认端口是 8086,这个端口在 JMeter 配置、Grafana 数据源配置中都要用到。确认能启动后,可以等下一节讲 Windows 服务化的时候再用工具把它做成开机自启,现在先保持前台运行,便于看日志。

2.3 Windows 下 Grafana 的安装与初始化

Grafana 在 Windows 上的安装有两种方式:一种是用官方提供的 Windows Installer(.msi),另一种是下载绿色版 zip 解压。我个人更喜欢 zip 方式,因为方便迁移和备份配置。

解压后目录里有一个 bin 文件夹,里面有 grafana-server.exe 和 grafana-cli.exe。启动命令:

D:\tools\grafana-10.0.3\bin\grafana-server.exe

默认情况下它会监听 3000 端口。启动成功后,浏览器访问 http://localhost:3000 ,首次登录的用户名和密码都是 admin,登录后会强制让你修改密码。这步没什么难度,但要注意,如果你不想每次都手动启动 Grafana,后面也得让它服务化。

还有一个小细节:Grafana 的配置文件是 conf/defaults.ini,一般不直接改它,而是复制一份 custom.ini 来覆盖配置。比如要改端口、改数据目录、配置邮件告警,都在 custom.ini 里操作。

2.4 端口规划与 Windows 防火墙的坑

这一节非常重要。JMeter、InfluxDB、Grafana 三者联调的时候,端口规划一旦没做好,排查起来极其痛苦。

我的建议是固定一套端口约定:

服务默认端口说明
InfluxDB HTTP API8086JMeter 发送数据的入口
Grafana Web3000浏览器访问看板
Grafana HTTP 探测未开启无需放开
JMeter GUI无无网络监听

如果你用的是 InfluxDB 1.x,还有 8088 端口用于备份和 RPC 服务,但一般不用对外开放。Windows 防火墙默认会拦截外网访问,如果你的客户端和服务器不在同一台机器上,就必须在防火墙里放行 8086 和 3000 端口。放行有两种做法,一种是在控制面板里新建入站规则,另一种是直接用命令行:

netsh advfirewall firewall add rule name="InfluxDB" dir=in action=allow protocol=TCP localport=8086 netsh advfirewall firewall add rule name="Grafana" dir=in action=allow protocol=TCP localport=3000

我在第一次联调的时候就因为忘记了防火墙,导致客户端访问不了 Grafana,查了半天才发现问题。

3. 数据链路配置与联调——从 InfluxDB 到 JMeter 再到 Grafana

3.1 在 InfluxDB 中创建数据库与用户

InfluxDB 启动后,打开命令行客户端 influx.exe,连接到本机实例。注意,一定要先确认 HTTP 服务已经起来了,否则会提示连接失败。

influx -host 127.0.0.1 -port 8086

进入命令行后,依次执行:

CREATE DATABASE jmeter CREATE USER jmeter_user WITH PASSWORD 'yourpassword' GRANT ALL ON jmeter TO jmeter_user

这里的 jmeter 就是 JMeter 数据要写入的数据库名。如果你喜欢用别的名字也没问题,但要记得后面 JMeter 的 URL 里也要改成对应的名字,别这里建了 A,JMeter 里写 B,那数据肯定写不进去。

验证一下当前数据库:

SHOW DATABASES

你就能看到 jmeter 数据库出现在列表里。这一步的产物是:你知道了数据库名、用户名、密码,以及 HTTP API 端口,这四个信息就是整个链路的核心凭证。

3.2 配置 JMeter 的 Backend Listener

在 JMeter 的测试计划里,右键添加路径是:测试计划 -> 添加 -> 监听器 -> Backend Listener。

添加完成后,右侧会出现一堆配置选项,核心需要修改的参数如下:

配置项推荐值说明
backend_listener_classorg.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient选择 InfluxDB 实现
influxdbUrlhttp://127.0.0.1:8086/write?db=jmeter指向 InfluxDB 的写入接口
application比如 perf_test_demo测试项目标识,会作为 tag 写入
measurementjmeter数据库中的表名
samplersRegex.*匹配需要汇报的采样器,默认全部
useRegexForSamplerListtrue是否用正则匹配采样器
percentiles90;95;99要记录的响应时间百分位
summaryOnlyfalse是否只发送聚合汇总数据

配置里的 influxdbUrl 格式是重中之重。这个 URL 里的 /write?db=jmeter 是 InfluxDB 1.x 的 HTTP 写入接口标准格式。db 参数的值必须和刚才建的数据库名完全一致,我建议写绝对地址,不要用 localhost,因为 JMeter 和 InfluxDB 有可能不在同一台机器上。

samplersRegex 这个参数容易被忽略。如果你的测试计划里包含多个 Sampler,比如 /api/login 和 /api/order,但只关心某几个接口的指标,正则就派上用场了。默认的 .* 表示所有采样器都上报,如果你只想知道 login 接口的情况,可以填 /api/login.* 并要求 useRegexForSamplerList 为 true。

要有心理准备:这些参数名称比较长,Value 列表也很长,经常看到有人复制配置时把行数搞错,导致数据完全没发出去。每次改完配置,建议在压测启动的一瞬间就观察 InfluxDB 的日志有没有收到写入请求,这样能最快发现配置问题。

3.3 不用 JMeter,先用 curl 验证写入链路

这一步是我特别想强调的调优方法:在接入 JMeter 之前,先用 curl 或 Postman 手动往 InfluxDB 写一条数据,确认数据库写入链路是通的,再让 JMeter 介入。这个顺序能帮你把"数据库问题"和"JMeter 配置问题"清晰隔离。

以 Windows 的 cmd 或 PowerShell 为例:

curl -i -XPOST "http://127.0.0.1:8086/write?db=jmeter" --data-binary "jmeter,application=testtool,testPlan=hello count=1,total=100,hit=1"

这条命令的含义是:向 InfluxDB 发送一行 line protocol 格式的数据,measurement 为 jmeter,tag 里有 application 和 testPlan,field 里有 count、total、hit。如果返回 HTTP 204,说明写入成功。

然后在 influx 命令行里执行:

USE jmeter SELECT * FROM jmeter

你能看到刚才那条数据。到这里,数据库链路已经打通,接下来再启动 JMeter,你就知道如果 Grafana 没数据,问题一定出在 JMeter 侧或 Grafana 查询侧,而不是 InfluxDB。

3.4 启动 JMeter 压测并观察数据落地

在 JMeter 里配置好 Backend Listener 后,运行一个最简单的测试计划,比如一个 HTTP 请求,循环跑 100 次,线程数设为 10。压测进行中,在 influx 命令行执行:

SELECT * FROM jmeter ORDER BY time DESC LIMIT 10

你就能看到持续不断有新数据写入。每条数据都包含类似下面的字段:

timeapplicationresponseTimethroughputerrorCountstatus
2024-11-20T10:30:00Zperf_test_demo12512.50OK

到这里,数据链路联调完成。接下来才是重头戏:让 Grafana 把这些数据变成图表。

4. Grafana 仪表盘制作与常用查询——把裸数据变成可视化看板

4.1 在 Grafana 中添加 InfluxDB 数据源

浏览器登录 Grafana 后,鼠标放到左侧齿轮图标上,选择 Data Sources,点击 Add data source,找到 InfluxDB 类型。

需要填的配置项有这些:

配置项填什么
Name随意,比如 JMeter-InfluxDB
Query Language这里选择 InfluxQL
URLhttp://127.0.0.1:8086
Databasejmeter
Userjmeter_user
Password你设的密码
HTTP MethodPOST(默认即可)

注意 Query Language 选项非常关键。Grafana 10.x 默认支持 Flux 和 InfluxQL 两种查询语法,对 InfluxDB 1.x 来说,必须选 InfluxQL,因为 1.x 本身就是 InfluxQL 体系。如果选错,后面写查询语句会各种报错。

填写完点击 Save & Test,如果配置正确,会提示 Data source is working。到了这一步,说明 Grafana 已经能读取 InfluxDB 里的压测数据了。

4.2 导入现成看板还是从零搭建?我的建议

这是一个经常被问到的选择题。社区确实有一堆现成的 JMeter 监控看板模板,在 Grafana 官网的 Dashboards 市场里搜索 jmeter 就能看到不少,比较常见的有 5496、4022、11556 等编号。直接导入省时省力,几秒钟就能看到完整的图表矩阵。

但我的建议是:模板可以导入,但一定要把模板的查询语句逐条看一遍。因为你不知道模板作者的版本、命名、指标定义方式和你是否一致。比如有些模板假设数据里包含命中数(hit)字段,有些则用的是 count 字段,名称对不上,图自然就是空的。我自己就遇到过导入一个评分很高的模板,结果 80% 的图都没数据,最后只能一个个面板重新改查询语句。

导入模板的方法是:左侧点击 Dashboards -> Import,在 Import via panel id 输入框里输入模板编号,然后选择数据源,点击 Import。它会把所有面板一次性创建好。

4.3 手工创建三个核心面板:吞吐量、响应时间、错误率

如果不想用模板,或者模板不适合,手工建面板才是真正掌握这套方案的关键。在 Grafana 里,新建 Dashboard,点击 New Panel,进入面板编辑页。

第一个面板:每秒事务数(Throughput)

Query 部分,选择 InfluxDB 数据源,查询语句写成:

SELECT mean("hit") / 60 FROM "jmeter" WHERE $timeFilter GROUP BY time(1s)

这里的关键逻辑是:JMeter 发送的指标里,hit 表示本秒内完成的请求数,但因为 Backend Listener 默认是每 5 秒聚合一次,所以要除以 60(或除以相应的聚合周期)得到每秒事务数。实际取值要根据你的上报频率调整,如果你的 Grafana 面板上数字明显偏高,大概率就是没除以这个聚合窗口。

第二个面板:响应时间(RT)

SELECT mean("p99") FROM "jmeter" WHERE $timeFilter GROUP BY time(10s)

这里的 p99 是 JMeter 的 Backend Listener 按照你配置的百分位参数算出来的 99 分位响应时间。也可以把 mean("p90") 和 mean("p95") 同时查出来,用两条查询语句叠加在一张图上,展示不同分位的响应时间曲线,这对判断系统稳定性的帮助远大于只看平均值。

第三个面板:错误率

SELECT sum("errorCount") / sum("count") * 100 FROM "jmeter" WHERE $timeFilter GROUP BY time(10s)

错误率计算的核心是要把 errorCount 求和除以总请求数 count 求和,再乘以 100 变成百分比。注意这里不能用 mean,因为错误率是一个比例,对比例做算术平均没有意义,必须分别聚合分子和分母再相除。

这三个面板建好后,把右下角的 Refresh 间隔设为 1s 或 5s,再把时间范围选成 Last 30 minutes,一张实时刷新的监控效果就出来了。压测过程中,你就能盯着这些曲线观察系统状态,而不是事后翻报告。

4.4 设置阈值与告警,让看板主动通知你

Grafana 的看板是给人看的,但你不能 24 小时盯着显示器。所以告警是必须的。在 Grafana 10.x 中,告警规则的配置在左侧菜单 Alerting 下。

以响应时间告警为例。在 Alerting 页面点击 New alert rule,配置项如下:

  • Rule name:响应时间异常告警
  • Conditions:查询语句沿用面板里的查询,然后设置一个阈值,比如 p99 大于 2000(单位是毫秒),持续 1 分钟就触发
  • Evaluation behavior:每 30 秒评估一次,等待时间 0 秒
  • Notifications:选择通知渠道,比如邮件、Webhook

我个人实际中使用最有效的是 Webhook 通知,把告警消息推到某个群机器人。这样压测只要一出现异常,手机立刻就能收到推送,不用一直坐在电脑旁边。触发告警的条件设置建议先用比较宽的值,比如响应时间大于 3000 毫秒,观察一两次正常触发后再收紧,避免告警风暴把自己搞烦。

5. 常见问题排查与避坑清单——每一个坑都是真金白银换来的

5.1 Grafana 面板迟迟不出数据,排查顺序是这样的

我见过太多次有人在群里问"为什么我的 Grafana 没有数据",多半是链路里的某个环节配错了。排查时我坚持一条原则:自底向上,从数据产生端开始逐层检查。

顺序如下:

  1. 确认 JMeter 是否真的在跑,Backend Listener 有没有加到测试计划里(很多人忘记加,或者加了但测试计划没保存就关了)。
  2. 确认 InfluxDB 里有没有数据。执行 SELECT * FROM jmeter ORDER BY time DESC LIMIT 5,如果返回空,说明数据根本没到数据库,问题出在 JMeter 或 URL 配置。
  3. 确认 InfluxDB 的 HTTP 最大写入大小有没有超过限制,如果单次写入太大可能返回 413,但这种情况极少。
  4. 确认 Grafana 数据源配置里的 Database 和 InfluxDB 里的库名一致。
  5. 确认面板的查询语句里有没有带时间过滤器,Grafana 每个面板默认都会加上 $timeFilter,如果你复制了别人的查询语句但没带这个变量,结果往往是把所有历史数据都聚合了,看起来只有孤零零一个点。
  6. 确认面板右上角的时间范围不是可选到了老数据区间,有时候你选了 Last 5 minutes,但压测 10 分钟前就停了,自然没数据。

这条链路排查下来,90% 的问题都出在第 2 步或第 5 步。

5.2 时区问题导致时间轴偏移,图看着就是不对

Windows 默认时区是 CST(中国标准时间),而 InfluxDB 和 Grafana 默认使用 UTC 时区存储和展示时间。有时你会发现数据明明写入了,但图表上的时间点跟你实际压测的时间对不上,整体晚了 8 个小时。

解决办法分两处:一是 InfluxDB 的数据存储本身就带时区偏移,不要管它,因为它是按 UTC 存储的,这没有错;二是 Grafana 的展示时区可以调整,打开 Grafana 的 Preferences,把 Timezone 改成标准时间(或者直接选为浏览器的本地时区)。面板右上角也可以临时设置。改完之后,时间轴就对了。

一个小技巧:如果你用 curl 手写 line protocol 插入数据,时间戳一定要带时区信息,否则 InfluxDB 默认按 UTC 处理。比如用本地时间 10:00:00 写入,没带时区,它以为是 UTC 的 10:00,显示出来自然会"未来"8 小时。手写数据验证时最容易犯这个错。

5.3 InfluxDB 1.x 和 2.x 的差异,千万别混着配

数据源选型时,如果你不小心下了 2.x 版本,就能体会到什么叫配置痛苦。这里帮大家把差别几个要点列清楚:

维度InfluxDB 1.xInfluxDB 2.x
数据组织单位databasebucket
认证方式用户名 + 密码Token(API Token)
写接口POST /write?db=xxxPOST /api/v2/write?bucket=xxx&org=xxx
查询语法InfluxQLFlux(也支持 InfluxQL 但通过兼容 API)
可视化集成难易度非常顺滑需要处理 token 和 org 配置

如果你已经下了 2.x,也不是不能用,JMeter 5.4 以上的 Influxdb Backend Listener 也能发送数据到 2.x,但要额外配置 token。我的建议是,除非你的团队已经全面使用 2.x 并且有完善的运维支撑,否则在 Windows 本地搭建还是老老实实上 1.8。稳定压倒一切。

5.4 Windows 下把服务做成开机自启,防止重启后全都要手动打开

InfluxDB 和 Grafana 都是 exe 程序,如果不处理,电脑重启之后你得手动依次启动,非常烦人。我的做法是用工具把两个程序注册成 Windows 服务。

这里推荐用一款名为 NSSM 的小工具(Non-Sucking Service Manager),它专门用来把任意 exe 注册为服务。把 NSSM 解压后,打开管理员命令行:

nssm install InfluxDB

它会弹出一个窗口,在 Application Path 里选择 influxd.exe,在 Arguments 里填上 -config D:\tools\influxdb-1.8.10\influxdb.conf,然后点击 Install service。Grafana 同理。

注册完成后,在服务管理器里把这两个服务启动类型设为"自动",这样每次开机就会自动拉起整个监控平台。不用再记着先去启动两个黑窗口了。

还有一个额外的建议:建议把 InfluxDB 的日志输出重定向到文件,这样排查故障时可以直接看日志文件,不用每次打开命令行窗口看滚动输出。NSSM 的 I/O 配置页里可以设置输出到 D:\logs\influxdb.log。

5.5 压测过程中 InfluxDB 写入压力过大怎么办

当并发线程数很高时,JMeter 的 Backend Listener 默认是每 5 秒聚合一次发送,这个频率在绝大多数场景下足够。但如果你把采样器上报粒度调得非常细,或者线程数突破几千,InfluxDB 的写入压力会明显上升。

如果发现 InfluxDB 的 CPU 占用过高,第一反应不是加机器,而是调整 JMeter 的聚合周期。在 Backend Listener 配置里,有一项是 interval(默认单位毫秒,默认值 5000),你可以把它调大到 10000,即每 10 秒聚合发送一次。这样写入压力直接减半,图表依然有实时性,完全够用。

另外,InfluxDB 的默认 HTTP 写入并发数是有限的,如果并发量实在太高,可以调整配置文件里的 max-concurrent-write-limit,但一般情况下你真的用不到这个参数。大多数压测场景,1.8 版本单机写入几万点每秒毫无压力。

5.6 Backend Listener 上报的数据字段含义

最后补充一个自研看板时一定会用到的字段速查表。JMeter 的 Influxdb Backend Listener 上报的数据,核心字段如下:

字段名含义
time时间戳
application通过配置项 application 指定的应用名,用于区分不同项目
count聚合周期内完成的请求总数
errorCount聚合周期内的错误请求数
hit聚合周期内命中的请求数(对于事务请求)
max最大响应时间
min最小响应时间
avg平均响应时间
p90 / p95 / p9990/95/99 分位响应时间
responseTime总响应时间累计值
throughput单位时间内的请求吞吐量
status200 或 500 之类的状态码集合

这些字段就是你构造 Grafana 查询语句的原料。比如想看到 95 分位响应时间,直接 SELECT mean("p95") FROM "jmeter",想看到总错误率,就用 errorCount / count 组合。理解了字段,你就能根据自己的需求做出任何维度的图表,而不是只会抄模板。

最后再分享一个实际操作中的小技巧

这套平台我前前后后搭过不下十次,从最初的摸索到如今的顺手,最大的体会是:先把链路里每一环单独验证一遍,再连起来。很多人喜欢一步到位全部装好再配置,结果出了问题根本不知道从哪查起。我每次在新电脑上搭建,顺序严格固定:先装 InfluxDB,用 curl 手动写一条数据,确认入库;再装 Grafana,连数据源,写查看语句确认能查出来;最后才去动 JMeter 的 Backend Listener。每一步都有明确验证点,半小时就能全部搞定。

如果你之后想把这套监控做得更完整,还可以往前端加一步,把 Grafana 看板嵌入到自己的项目管理平台里,或者用 Grafana 的分享功能生成一个只读链接发给同事。再往后,你还可以把它整合进定时压测任务,用脚本一键触发压测并自动生成监控报告。不过这些都是后话了,先把今天说的这几个环节配好,你的压测过程就不再是黑盒了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询