Web proxy for Go pprof endpoints - access pprof debug endpoints through firewalls with an interactive UI.
PProf-Web can be deployed in a restricted network zone and expose a single web endpoint to proxy pprof requests, providing the full pprof web interface for profiling remote Go applications.
docker run -p 8080:8080 ghcr.io/wzxjohn/pprof-webgo build
./pprof-webOpen http://localhost:8080, enter the target IP, port, and profile type, then view the interactive pprof UI.
- Profile Types: CPU, heap, and goroutine profiles
- Interactive UI: Full pprof web interface with flame graphs and call graphs
- Proxy Mode: Direct proxy to
/debug/pprof/*endpoints at/proxy/{ip}/{port}/debug/pprof/ - Persistent Storage: Profiles saved locally for later viewing
- Reverse Proxy Support: Configurable base path for deployment behind nginx/ingress
| Flag | Environment Variable | Default | Description |
|---|---|---|---|
-l |
PPROF_LISTEN_ADDRESS |
:8080 |
Listen address |
-t |
PPROF_TMP_PATH |
/tmp/pprof-web |
Temp directory for profile storage |
-b |
PPROF_BASE_PATH |
/ |
Base path for reverse proxy deployments |
./pprof-web -l :9090 -t /data/profiles -b /pprof/Helm chart available in manifests/charts/pprof-web/.
When using nginx as a reverse proxy, set proxy_read_timeout larger than the max profile duration (60s) since the server cannot send data while profiling.
location /cluster-1/ {
rewrite ^/cluster-1(/.*)$ $1 break;
proxy_redirect / /cluster-1/;
proxy_read_timeout 120s;
proxy_pass http://pprof-web:8080/;
}Start pprof-web with matching base path:
./pprof-web -b /cluster-1/- Use only the official
github.com/google/pproftool as dependency - Minimal implementation of pprof interfaces
- Auto-delete inactive profiles
- Improved logging
- Unit tests
- Enhanced web UI