利用 Java Agent 和 Instrument 技术录制线上流量

本文介绍如何利用Java Agent和Instrument技术无侵入地录制线上HTTP请求数据,解决在开发过程中遇到的自动打包依赖、ClassNotFound问题以及HttpServletRequest body只能get一次的挑战。通过拆分Agent和数据收集类,利用URLClassLoader的addURL接口,成功让Recorder访问HttpServletRequest,同时在读取body后重新构造HttpServletRequest以供后续处理。
摘要由CSDN通过智能技术生成

利用 Java Agent 和 Instrument 技术录制线上流量

在做性能压测的时候,需要先准备好压测请求数据,可以采用人工制造的方式,也可以在线上录制流量,线下回放。这里,我们使用 Java Agent 和 Instrument 技术,做了一个代理 Agent 实现了不修改代码即可录制线上请求数据的功能。

Java Instrument 技术

Java Instrument 技术怎么用这里就不重复了,网上文章很多,可以看看这篇:Java SE 6 新特性 Instrumentation 新功能

遇到的难题

下面我们讲一下在开发 Agent 过程中遇到的难题。

自动打包依赖

录制 Agent 依赖的一些包,也要一同打包,否则在加载代理执行时会出现找不到类的问题。具体怎么做呢?可以在 pmo.xml 加上下面的配置:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <!-- manifestEntries 用于配置打包生成 MANIFEST.MF 文件所需的描述信息ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值