编译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 2020-07-19 21:08  荣锋亮  阅读(348)  评论(0编辑  收藏  举报

导航