编译goreplay v1.1.0 minio 集成支持

goreplay 默认对于minio s3 的支持不是很好,所以修改了关于s3 的部分代码,可以方便的集成minio

需要修改的代码

注意pro 特性也是需要修改的

  • s3_reader.go
    修改的不好,实际应该走环境变量
 
func awsConfig() *aws.Config {
    region := os.Getenv("AWS_DEFAULT_REGION")
    if region == "" {
        region = os.Getenv("AWS_REGION")
        if region == "" {
            region = "us-east-1"
        }
    }
    config := &aws.Config{Region: aws.String(region)}
    if endpoint := os.Getenv("AWS_ENDPOINT_URL"); endpoint != "" {
        config.Endpoint = aws.String(endpoint)
        log.Println("Custom endpoint:", endpoint)
    }
    log.Println("Connecting to S3. Region: " + region)
    config.CredentialsChainVerboseErrors = aws.Bool(true)
//  使用url 模式,同时禁用ssl
+    config.S3ForcePathStyle = aws.Bool(true)
+    config.DisableSSL = aws.Bool(true)
    if os.Getenv("AWS_DEBUG") != "" {
        config.LogLevel = aws.LogLevel(aws.LogDebugWithHTTPBody)
    }
    return config
}
  • pro.go
var PRO = true

试用

  • docker-compose 文件
version: "3"
services: 
  minio: 
    image: minio/minio
    command: server /data
    volumes: 
    - "./data:/data"
    ports: 
    - "9000:9000"
    environment:
      - "MINIO_DOMAIN=minios3.com"
      - "MINIO_REGION_NAME=demo"
      - "MINIO_ACCESS_KEY=minio"
      - "MINIO_SECRET_KEY=minio123"
  pg: 
     image:  postgres:9.6.11
     environment: 
     - "POSTGRES_PASSWORD=dalong"
     ports:
     - "5432:5432"
  • 启动
docker-compose up -d
 
export AWS_ACCESS_KEY_ID=minio
export AWS_REGION=demo
export AWS_BUCKET=demo
export AWS_SECRET_ACCESS_KEY=minio123
export AWS_ENDPOINT_URL=http://minios3.com:9000
export AWS_DEBUG=true
  • 运行命令
gor --input-raw :5432 --input-raw-protocol binary --output-file=requests.gor  --output-file s3://logs/%Y-%m-%d.gz
  • 效果

 

 

说明

以上只是一个简单的修改,为了测试s3 的特性,还可以使用s3 的回放功能,当然支持的协议有限,但是对于web的请求,我们基于s3 还是一个很不错的选择的

参考资料

https://github.com/buger/goreplay/wiki/%5BPRO%5D-Replaying-Binary-protocols

posted on   荣锋亮  阅读(356)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-07-19 openjdk k8s port-forward 连接容器jmx服务
2018-07-19 Cockpit 容器&&kubernetes 管理可视化工具
2017-07-19 maven-assembly-plugin 打包简单案例
2015-07-19 jQuery全屏滚动插件fullPage.js

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示