goreplay
1.github地址
https://github.com/buger/goreplay
2.简单介绍
GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。
3.出现背景
随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoReplay为用户提供了重用现有流量进行测试的简单想法,这使得它非常强大。最先进的技术(哈哈哈,即: 混杂模式+BPF过滤)允许用户分析和记录用户的应用程序流量,而不会影响它。这消除了将第三方组件置于关键路径中带来的风险。
GoReplay增强了用户对代码部署、配置和基础设施更改的信心。
4.安装
# 获取最新版本号
LATEST_VERSION=$(curl -s https://api.github.com/repos/buger/goreplay/releases/latest | grep 'tag_name' | cut -d '"' -f 4)# 下载对应架构的二进制文件
wget https://github.com/buger/goreplay/releases/download/${LATEST_VERSION}/gor_${LATEST_VERSION}_x64.tar.gz# 解压下载的文件
tar -xzf gor_${LATEST_VERSION}_x64.tar.gz# 将可执行文件移动到系统路径
sudo mv gor /usr/local/bin/# 验证安装
gor --version
验证安装结果:
5.原理
GoReplay 提供了一种独特的镜像方法。GoReplay 不是代理,而是在后台侦听网络接口上的流量,无需更改生产基础设施,只需在与服务相同的计算机上运行GoReplay守护程序即可。 大概流程为:
(1)GoReplay首先通过一个名为 listener server的组件来捕获网络流量。这个组件能够监听指定的网络接口,并实时捕获经过该接口的 HTTP 请求和响应。
(2)捕获到的流量可以被发送到replay server,也可以被保存到文件中,或者发送到 Kafka 等消息队列中。
(3)在回放阶段,replay server 会从保存的文件中读取之前捕获的流量,并将其重新发送到配置的目标地址。这样,就可以模拟原始的请求和响应,对系统进行压力测试或功能验证。
一句话小结:Goreplay 的工作原理是通过监听网络接口捕获流量,然后根据用户的配置选择将流量保存、转发或回放,以此来满足不同的测试和分析需求。
这种设计使得 GoReplay 成为一个非常灵活且功能丰富的工具,适用于多种测试场景。具体来说,GoReplay 通常被应用于以下方面:
- 性能测试:通过回放真实的用户请求来模拟高负载情况,测试服务器的性能极限。
- 故障排查:记录出现问题时的流量,以便开发人员可以详细分析并定位问题。
- 功能或接口测试:确保应用程序在特定的网络请求下能够正确执行预期的操作。
- 安全测试:检查应用程序在处理网络请求时是否存在安全漏洞。