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

如何将JMeter分布式测试中2台Slave的server.log合并到Master节点

JMeter分布式压测从节点日志合并到主节点的实现方案

下面分三种场景给出可落地的操作方法:

场景1:压测还未启动,希望自动完成日志合并

提前配置后压测过程中从节点日志会自动同步到主节点,不需要事后操作:

  • 编辑所有从节点的log4j2.xml配置文件,在Appenders节点下添加SocketAppender,指向主节点IP和自定义的日志接收端口(示例用9999端口):
<Socket name="SocketMaster" host="主节点IP" port="9999" protocol="TCP">
  <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c{1}:%L - %m%n"/>
</Socket>
  • 在同一配置文件的Root节点下,新增SocketAppender的引用:
<Root level="info">
  <AppenderRef ref="Server" />
  <AppenderRef ref="SocketMaster" />
</Root>
  • 编辑主节点的log4j2.xml配置文件,添加SocketReceiver接收从节点日志,直接写入本地的jmeter-server.log即可。

场景2:压测已经结束,需要事后合并已有日志

不需要调整配置,直接拉取从节点日志合并即可:

  • 第一步:从主节点通过scp拉取两台从节点的日志到本地,示例命令(请替换为你实际的节点IP和日志路径):
# 拉取slave-1日志
scp root@192.168.3.101:/usr/local/jmeter/bin/jmeter-server.log ./slave1.log
# 拉取slave-2日志
scp root@192.168.3.102:/usr/local/jmeter/bin/jmeter-server.log ./slave2.log
  • 第二步(可选):给从节点日志添加来源标识,方便后续排查时区分日志所属节点:
sed -i 's/^/[slave-1] /' ./slave1.log
sed -i 's/^/[slave-2] /' ./slave2.log
  • 第三步:按时间顺序合并所有日志到主节点的jmeter-server.log中:
cat ./jmeter-server.log ./slave1.log ./slave2.log | sort -t ' ' -k 1,2 > ./merged_temp.log && mv -f ./merged_temp.log ./jmeter-server.log

说明:默认JMeter日志前两个字段为日期、时间,上述命令会按日志生成时间排序合并,不会出现时序混乱。如果你的日志格式做过自定义,调整-k参数后的排序字段即可。

场景3:长期进行分布式压测,需要自动聚合日志

可以配置rsyslog服务实现日志实时同步:

  • 所有从节点配置rsyslog规则,监听jmeter-server.log的新增内容,实时发送到主节点
  • 主节点配置rsyslog接收规则,将收到的从节点日志直接追加到本地jmeter-server.log即可,配置完成后所有压测的日志都会自动合并,不需要人工干预。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 01:15:03