I have the following simple reverse proxy:
func main() {
go func() {
for range time.NewTicker(30 * time.Second).C {
log.Println("NUMBER OF OPEN CONNECTIONS")
}
}()
http.HandleFunc("/", handleRequestAndRedirect)
if err := http.ListenAndServe(getListenAddress(), nil); err != nil {
panic(err)
}
}
func handleRequestAndRedirect(res http.ResponseWriter, req *http.Request) {
serveReverseProxy("https://example.com", res, req)
}
func serveReverseProxy(target string, res http.ResponseWriter, req *http.Request) {
url, _ := url.Parse(target)
req.URL.Host = url.Host
req.URL.Scheme = url.Scheme
req.Host = url.Host
proxy := httputil.NewSingleHostReverseProxy(url)
proxy.ServeHTTP(res, req)
}
All I am trying to figure out how to do is print the current number of open TCP connections every 30 seconds. Is there some property I can access in http or httputil to do this? Is there a way I can track this myself with minimal modifications to the code?
Thanks.