tencent cloud

腾讯云可观测平台

动态与公告
产品动态
产品简介
产品概述
产品优势
基本功能
基本概念
应用场景
使用限制
购买指南
云产品监控
应用性能监控
终端性能监控
前端性能监控
云拨测
Prometheus 监控服务
Grafana 服务
事件总线
云压测
快速入门
监控概览
实例分组
云产品监控
应用性能监控
云拨测
云压测
Prometheus 监控服务
Grafana 服务
创建 Dashboard
事件总线
告警服务
云产品监控
云产品监控指标
控制台操作指南
云服务器监控组件
云产品监控对接 Grafana
故障处理
实践教程
应用性能监控
应用性能监控简介
接入指南
控制台操作指南
实践教程
参考信息
常见问题
终端性能监控
终端性能监控概述
控制台操作指南
接入指南
实践教程
前端性能监控
前端性能监控简介
控制台操作指南
接入指南
常见问题
云拨测
产品简介
控制台操作指南
常见问题
云压测
云压测概述
控制台操作指南
实践教程
JavaScript API 列表
常见问题
Prometheus 监控
Prometheus 监控简介
接入指南
控制台操作指南
实践教程
Terraform
常见问题
Grafana 服务
产品简介
控制台操作指南
Grafana 平台常用功能指引
常见问题
Dashboard
什么是 Dashboard
控制台操作指南
告警管理
控制台操作指南
故障处理
常见问题
事件总线
事件总线简介
控制台操作指南
实践教程
常见问题
报表管理
常见问题
腾讯云可观测平台常见问题
告警服务相关
一般性问题
监控图表相关
云服务器监控组件相关
动态阈值告警相关
云监控对接 Grafana 相关
文档阅读指南
相关协议
应用性能监控服务等级协议
APM 隐私协议
APM 数据处理和安全协议
前端性能监控服务等级协议
终端性能监控服务等级协议
云拨测服务等级协议
Prometheus 监控服务服务等级协议
Grafana 服务服务等级协议
云压测服务等级协议
云压测使用限制
Cloud Monitor Service Level Agreement
词汇表

JMeter 请求和检查点日志打印

PDF
聚焦模式
字号
最后更新时间: 2025-03-10 22:14:21
在 PTS 中,请求和检查点的总体情况,可以在 腾讯云可观测平台 > 云压测 > 测试场景 服务明细检查点明细中查看;单个请求的发送和接收详情,可以在控制台的请求采样中查看;具体的查看方法可以参考 解读报告 中的对应内容。
如果除了解读报告的内容外,对请求或检查点还有其他的查看需求,例如:
查看请求采样中未记录的其他请求细节;
查看设置的检查断言失败消息;
查看检查断言失败时的请求内容;
等等...
可以在执行过程中通过日志打印的方式,将需要查看的内容在施压机 > 日志下的引擎输出中打印出来。
注意:
在压测任务执行的过程中打印额外的日志,会占用压测机的资源,且日志的采集和展示在控制台上的速率是有限的,如果没有必要,在正式压测的时候不建议这样使用

请求日志

根据 JMeter 的 执行顺序,在请求采样 Sampler 之后的阶段都可以知道请求的执行情况,因此可以在 JMeter 的 Sampler 后面添加“JSR223 PostProcessor”,顾名思义,利用 JSR223 后置处理器在 Sampler 之后,通过脚本将请求细节打印到引擎日志中查看。
以下是 Groovy 脚本样例,其中prev可以代表请求采样的结果 SampleResult,对应的方法可以参考 JMeter 官方文档;如果有其他内容需要打印,用户可以自行进行数据获取和输出。
import java.time.LocalDateTime // 获取 Sampler 名称 def samplerName = sampler.getName() // 获取响应体 def responseBody = prev.getResponseDataAsString() // 获取响应代码 def responseCode = prev.getResponseCode() // 获取当前时间 def currentTime = LocalDateTime.now() // 打印日志 log.info("Current Time: " + currentTime + ", Sampler Name: " + samplerName + ", Response Code: " + responseCode + ", Response Body: " + responseBody)

将该 JMX 脚本在 PTS 上执行,在控制台的施压机标签的引擎输出中,可以看到我们打印出来的请求日志:

如果脚本中有多个请求,但是只需要打印单个请求的细节查看,不需要全部打印,那么可以将 Post Processor 放在对应的请求里面,如图所示:

如果需要把所有的请求细节都打印出来,那么可以将 Post Processor 放在和请求并列的位置,如图所示:


检查点日志

根据 JMeter 的 执行顺序,对于检查点的结果,不能使用 Post Processor 来进行获取,因为该阶段执行的时候,检查断言还没有执行,只有在 Listener 阶段才能知道检查断言的结果;因此,可以使用 Listener 来通过脚本将检查点细节打印到引擎日志中查看,使用 JSR223 Listener,以下是 Groovy 脚本样例,方法getAssertionResults()返回的AssertionResult可以参考 JMeter 官方文档
import org.apache.jmeter.assertions.AssertionResult; // 获取断言结果 AssertionResult[] results = prev.getAssertionResults(); // 遍历断言结果 for (int i = 0; i < results.length; i++) { AssertionResult result = results[i]; if (result.isFailure() || result.isError()) { // 打印断言失败或错误信息 log.info("Assertion failed: " + result.getFailureMessage()); } }
将该 JMX 脚本在 PTS 上执行,在控制台的施压机标签的引擎日志中,可以看到我们打印出来的日志:

这里只打印了检查断言的结果和检查断言的 Failure Message,如果有需要,也可以参考前文的请求日志将检查断言失败的请求细节打印出来。
import org.apache.jmeter.assertions.AssertionResult; // 获取断言结果 AssertionResult[] results = prev.getAssertionResults(); // 遍历断言结果 for (int i = 0; i < results.length; i++) { AssertionResult result = results[i]; if (result.isFailure() || result.isError()) { // 打印断言失败或错误信息 log.info("Assertion failed: " + result.getFailureMessage()); // 获取 Sampler 名称 def samplerName = sampler.getName() // 获取响应码 def responseCode = prev.getResponseCode() log.info("Sampler Name: " + samplerName + ", Response Code: " + responseCode) } }
如果 JMX 脚本中有多个检查断言,需要打印单个或需要全部打印的情况,可以参考前文有多个请求的情况下打印日志的方式,将 Listener 放置在不同的位置即可。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈