Simple http request logger for GoReplay
Go to file
2024-03-07 12:00:48 -06:00
.github/workflows First commit 2024-03-07 11:56:15 -06:00
.goreleaser.yaml First commit 2024-03-07 11:56:15 -06:00
go.mod First commit 2024-03-07 11:56:15 -06:00
LICENSE.txt First commit 2024-03-07 11:56:15 -06:00
main.go First commit 2024-03-07 11:56:15 -06:00
README.md Update docs with example usage 2024-03-07 12:00:48 -06:00

goreplay-http-logger

I needed a way to directly capture http traffic for use with GoReplay, and there did not seem to be an official method. As such, I wrote my own quick server to do the job. I may as well share it with the world as it has been useful to me. I did not do anything fancy here, just a simple cli argument configuration.

$ ./goreplay-http-logger --help
http log server
  -bind string
        HTTP bind address
  -log-file string
        Log file name with date (default "http-%Y%m%d.log")
  -port int
        HTTP port (default 8080)

Example Nginx config for mirroring requests:

upstream backend {
    server 127.0.0.1:8087;
}

upstream mirror_backend {
    server 127.0.0.1:8080;
}
server {
    listen       8086 default_server;
    server_name  localhost;

    # Send body to mirror.
    mirror_request_body on;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location / {
        mirror @mirror;
        proxy_pass http://backend;
    }

    location = @mirror {
        internal;
        proxy_pass http://mirror_backend$request_uri;
    }
}