mirror of https://github.com/perkeep/perkeep.git
serverconfig: conditionally install expvar handler.
Add local copy of the standard library's expvar handler. Change-Id: Ida41553345d7d29665f33268356bf16a80386e38
This commit is contained in:
parent
74eb8e6c3c
commit
b576dcc481
|
@ -62,6 +62,9 @@ CAMLI_DEV_KEYBLOBS (string):
|
||||||
CAMLI_HTTP_DEBUG (bool):
|
CAMLI_HTTP_DEBUG (bool):
|
||||||
Enable per-request logging in pkg/webserver.
|
Enable per-request logging in pkg/webserver.
|
||||||
|
|
||||||
|
CAMLI_HTTP_EXPVAR (bool):
|
||||||
|
Enable json export of expvars at /debug/vars
|
||||||
|
|
||||||
CAMLI_HTTP_PPROF (bool):
|
CAMLI_HTTP_PPROF (bool):
|
||||||
Enable standard library's pprof handler at /debug/pprof/
|
Enable standard library's pprof handler at /debug/pprof/
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ package serverconfig
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
|
"expvar"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
|
@ -409,6 +410,9 @@ func (config *Config) InstallHandlers(hi HandlerInstaller, baseURL string, conte
|
||||||
}
|
}
|
||||||
hl.setupAll()
|
hl.setupAll()
|
||||||
|
|
||||||
|
if v, _ := strconv.ParseBool(os.Getenv("CAMLI_HTTP_EXPVAR")); v {
|
||||||
|
hi.Handle("/debug/vars", expvarHandler{})
|
||||||
|
}
|
||||||
if v, _ := strconv.ParseBool(os.Getenv("CAMLI_HTTP_PPROF")); v {
|
if v, _ := strconv.ParseBool(os.Getenv("CAMLI_HTTP_PPROF")); v {
|
||||||
hi.Handle("/debug/pprof/", profileHandler{})
|
hi.Handle("/debug/pprof/", profileHandler{})
|
||||||
}
|
}
|
||||||
|
@ -426,6 +430,23 @@ func (s multiCloser) Close() (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// expvarHandler publishes expvar stats.
|
||||||
|
type expvarHandler struct{}
|
||||||
|
|
||||||
|
func (expvarHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
|
||||||
|
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||||
|
fmt.Fprintf(w, "{\n")
|
||||||
|
first := true
|
||||||
|
expvar.Do(func(kv expvar.KeyValue) {
|
||||||
|
if !first {
|
||||||
|
fmt.Fprintf(w, ",\n")
|
||||||
|
}
|
||||||
|
first = false
|
||||||
|
fmt.Fprintf(w, "%q: %s", kv.Key, kv.Value)
|
||||||
|
})
|
||||||
|
fmt.Fprintf(w, "\n}\n")
|
||||||
|
}
|
||||||
|
|
||||||
// profileHandler publishes server profile information.
|
// profileHandler publishes server profile information.
|
||||||
type profileHandler struct{}
|
type profileHandler struct{}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue