You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter开启Generate parent sampler后事务控制器报错如何在Grafana展示

解决JMeter父事务控制器同步子请求错误并展示到Grafana的方案

1. 配置JMeter端同步子请求错误到父事务控制器

在你勾选了「Generate parent sampler」的事务控制器下,直接新增一个JSR223 PostProcessor,语言选择Groovy,填入以下代码:

// 获取当前父事务采样器实例
def parentSampler = ctx.getCurrentSampler()
// 获取该事务下所有子请求的执行结果
def subSamplers = ctx.getPreviousResults()
def errorMsg = new StringBuilder()
def hasSubError = false

subSamplers.each { subRes ->
    if (!subRes.isSuccessful()) {
        hasSubError = true
        // 可按需拼接需要的错误字段,比如请求URL、响应体内容等
        errorMsg.append("子请求[${subRes.getSampleLabel()}]报错:响应码=${subRes.getResponseCode()}, 错误信息=${subRes.getResponseMessage()}; ")
        // 若只需保留第一个报错子请求的信息,解开下面一行注释即可
        // break
    }
}

if (hasSubError) {
    // 将拼接后的错误信息赋值给父事务的响应消息字段
    parentSampler.setResponseMessage(errorMsg.toString())
    parentSampler.setSuccessful(false)
    // 如需将错误信息同步到父事务的响应体,解开下面一行注释
    // parentSampler.setResponseData(errorMsg.toString(), "UTF-8")
}

注意事项:

  • 该后置处理器必须直接放在事务控制器的子级,不能放在任意子请求的下级,才能捕获到所有子请求的执行结果
  • 必须选择Groovy作为执行语言,避免BeanShell的性能问题影响压测结果
  • 配置完成后可以先用查看结果树验证:触发子请求报错后,父事务控制器的响应消息字段会显示拼接后的子请求错误信息,不再显示None或采样器数量

2. 配置后端监听器上报事务错误信息到存储介质

通常压测对接Grafana会用InfluxDB作为中间存储,按以下要求配置JMeter的Backend Listener:

  • 若使用官方默认的InfluxDBBackendListenerClient,确保参数sendAllSamples设为true、summaryOnly设为false,否则不会上报父事务采样器的responseMessage等详细字段
  • 若使用自定义后端监听器,确认已将父采样器的responseMessage、responseCode字段纳入上报字段列表

3. Grafana面板配置展示错误信息

  • 编辑你用来展示压测错误的面板,查询语句新增对responseMessage、responseCode字段的提取
  • 以InfluxDB数据源为例,查询失败事务错误信息的参考语句:
SELECT "transaction", "responseCode", "responseMessage", "time" FROM "jmeter" 
WHERE "error" = 'true' AND "samplerType" = 'transaction' AND $timeFilter 
ORDER BY time DESC
  • 可新增表格类型面板,将上述查询结果映射为「事务名称」「响应码」「错误信息」「发生时间」列,即可直观展示所有失败事务的具体报错原因

内容的提问来源于stack exchange,提问作者Raghav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:18:04