Add pprof endpoint
This requires moving to a non-default ServeMux so we can control whether pprof is enabled or not
This commit is contained in:
parent
73a0e50ee1
commit
6cfa3e1690
|
|
@ -27,6 +27,7 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/http/pprof"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
|
@ -101,6 +102,8 @@ var flHTTPBind = flag.String("http-bind", envString("GIT_SYNC_HTTP_BIND", ""),
|
||||||
"the bind address (including port) for git-sync's HTTP endpoint")
|
"the bind address (including port) for git-sync's HTTP endpoint")
|
||||||
var flHTTPMetrics = flag.Bool("http-metrics", envBool("GIT_SYNC_HTTP_METRICS", true),
|
var flHTTPMetrics = flag.Bool("http-metrics", envBool("GIT_SYNC_HTTP_METRICS", true),
|
||||||
"enable metrics on git-sync's HTTP endpoint")
|
"enable metrics on git-sync's HTTP endpoint")
|
||||||
|
var flHTTPprof = flag.Bool("http-pprof", envBool("GIT_SYNC_HTTP_PPROF", false),
|
||||||
|
"enable the pprof debug endpoints on git-sync's HTTP endpoint")
|
||||||
|
|
||||||
var log = newLoggerOrDie()
|
var log = newLoggerOrDie()
|
||||||
|
|
||||||
|
|
@ -242,14 +245,24 @@ func main() {
|
||||||
fmt.Fprintf(os.Stderr, "ERROR: unable to bind HTTP endpoint: %v\n", err)
|
fmt.Fprintf(os.Stderr, "ERROR: unable to bind HTTP endpoint: %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
mux := http.NewServeMux()
|
||||||
go func() {
|
go func() {
|
||||||
if *flHTTPMetrics {
|
if *flHTTPMetrics {
|
||||||
http.Handle("/metrics", promhttp.Handler())
|
mux.Handle("/metrics", promhttp.Handler())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if *flHTTPprof {
|
||||||
|
mux.HandleFunc("/debug/pprof/", pprof.Index)
|
||||||
|
mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
|
||||||
|
mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
|
||||||
|
mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
|
||||||
|
mux.HandleFunc("/debug/pprof/trace", pprof.Trace)
|
||||||
|
}
|
||||||
|
|
||||||
// This is a dumb liveliness check endpoint. Currently this checks
|
// This is a dumb liveliness check endpoint. Currently this checks
|
||||||
// nothing and will always return 200 if the process is live.
|
// nothing and will always return 200 if the process is live.
|
||||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {})
|
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {})
|
||||||
http.Serve(ln, http.DefaultServeMux)
|
http.Serve(ln, mux)
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue