专业的编程技术博客社区

网站首页 > 博客文章 正文

线上流量回放工具-GoReplay(流量回放原理)

baijin 2024-10-07 06:09:29 博客文章 3 ℃ 0 评论

1.背景

校验系统的正确性和可靠性时,仅靠用例场景无法覆盖全生产环境下的所有场景,需要一套引流工具,在系统正式上线前,用线上的请求测试待上线系统,在正常请求下,是否有报错;在数倍的请求下,系统的性能瓶颈。

GoReplay,原名叫gor,因为其易上手,且功能比较全。GoReplay是在投入生产之前使用真实流量测试用户的应用得最简单和最安全的方式。随着应用程序的增长,测试所需的工作量也呈指数增长。GoReplay为用户提供了重复使用现有流量进行测试的简单想法,能分析和记录应用程序流量,也不会对其造成影响,这消除第三方组件置于关键路径中带来的风险。

GoReplay工作流程:侦听器服务器捕获http流量并将其发送到重放服务器或保存到文件。重播服务器将流量转发给指定的地址。下载链接:http://github.com/buger/goreplay/releases/download/v1.0.0/gor_1.0.0_x64.tar.gz,在linux下载解压直接使用。

2.参数

(1)输入参数

–input-raw 捕获 HTTP 流量,需指定端口号

–input-file 使用 –output-file 记录的文件作为输入

–input-tcp 将多个 Gor 实例获取的流量聚集到一个 Gor 实例

(2)输出参数

–output-http 相应流量的终端,接收 URL 地址

–output-file 将获取的流量记录入文件

–output-tcp 将获取的流量转移至另外的 Gor 实例,与 –input-tcp 组合使用

–output-stdout debug 工具,将流量信息直接输出

(3)请求过滤

–http-allow-url 允许正则 URL,不包含主句名部分

–http-disallow-url 不允许正则 URL

–http-allow-header 允许的 Header 头

–http-disallow-header 不允许的 Header 头

–http-allow-method 允许的请求方法

3.命令

(1)获取经过本地8080端口的请求流量,然后打印出来

[root@localhost ~]# ./gor --input-raw :8080 --output-stdout

(2)获取经过本地8080端口的请求流量,然后保存在.gor文件中

[root@localhost ~]# ./gor --input-raw :8080 --output-file=request.gor

(3)从保存下来的流量文件中提取流量并向某的地址的某个端口输出

[root@localhost ~]# ./gor --input-file=request.gor --output-http="http://localhost:8000"

(4)转发

[root@localhost ~]# ./gor --input-raw :8080 --output-http="http://localhost:8000"

(5)请求过滤

只收集 /api 下的请求

[root@localhost ~]# ./gor --input-raw :8080 --output-http staging.com --http-allow-url /api

只收集请求图中符合 api-version 为 1.0x 的请求

[root@localhost ~]# ./gor --input-raw :8080 --output-http staging.com --http-allow-header api-version:^1\.0\d

使用2倍速度进行回放

[root@localhost ~]# ./gor --input-file "requests.gor|200%" --output-http "staging.com"

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表