dirtyhand-tester GoReplay 的简单使用
simonpatrick
·
2019年10月09日
·
最后由 rachellingzi 回复于 2021年02月22日
·
5630 次阅读
「原创声明:保留所有权利,禁止转载」
Gorelapy 简介
goreplay 是一款从生产环境 copy 流量到测试环境的工具,且不会影响生产环境的业务响应,又能很简单的达到复用 http 请求来做稳定性测试的目的。
GoReplay 工作方式:listener server 捕获流量,并将其发送至 replay server 或者保存至文件。replay server 会将流量转移至配置的地址
最简单的使用模式是:listener server 捕获流量,并将其发送至 kafka,然后解析 kafka 的消息并存入 mysql,处理起来还是比较方便的.
环境准备
1、安装 kafka
启动 zookeeper 和 kafka server,并创建一个 topic
温馨提示:server.properties 中的 PLAINTEX 后面需要把 ip 加上,否则其他服务器上的消息接收不到2、安装 mysql
创建 db 和表,用来保存请求数据
监听消息发送到 kafaka
- 1、在目标服务器上安装 gorepay
- a、源码:https://github.com/buger/goreplay
- b、二进制包:百度或者找我要吧。如果你的服务器是 centos7 以上,可以直接解压使用。建议使用这种方式
2、监听并往 kafka 发消息
-
使用 HTTP 请求输出到 kafka - HTTP 原始信息
sudo ./goreplay --input-raw :8179--output-kafka-host '10.8.1.43:9092' --output-kafka-topic 'test'
使用 HTTP 请求输出到 kafka - JSON 格式
sudo ./goreplay --input-raw :8080 --input-raw-track-response --output-kafka-host '10.8.1.43:9092' --output-kafka-topic 'test' --output-kafka-json-format
- 查看监听消息 在 kafka 所在的服务器上启一个 consumer,查看这个 topic 中的消息,可以看到监听端口的流量了 bin/kafka-console-consumer.sh --bootstrap-server 10.8.1.43:9092 --topic test
解析 kafka 的消息并保存到 mysql
- 安装依赖库:confluent-kafka、records、PyMySQL
sh pip install confluent-kafka pip install records pip install PyMySQL
- Confluent-kafka 是一款高效、稳定的 kafka 的 python 客户端 https://github.com/confluentinc/confluent-kafka-python
- records 一个非常简单但功能强大的库,用于对大多数关系数据库进行原始 SQL 查询
- PyMySQL 是从 Python 连接到 MySQL 数据库服务器的接口
- 编写解析 kafka 消息的 python 代码,进行解析并且保存落库
常用命令
基本命令:
- 1、获取经过本地 8080 端口的请求流量,然后打印出来
sudo ./goreplay --input-raw :8080 --output-stdout
-
2、获取经过本地 8080 端口的请求流量,然后保存在.gor 文件中
sudo ./goreplay --input-raw :8080 --output-file=request.gor
3、从保存下来的流量文件中提取流量并向某的地址的某个端口输出
sudo ./goreplay --input-file=request.gor --output-http="http://localhost:8000"
-
4、转发
sudo ./goreplay --input-raw :8080 --output-http="http://localhost:8000"
5.请求过滤
例如只收集 /api 下的请求
./gor --input-raw :8080 --output-http staging.com --http-allow-url /api
例如只收集请求头中符合 api-version 为 1.0x 的请求
./gor --input-raw :8080 --output-http staging.com --http-allow-header api-version:^1\.0\d
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「原创声明:保留所有权利,禁止转载」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!