From 1446e535385ae798c031624183e475f6eb1e421f Mon Sep 17 00:00:00 2001 From: Tom Wilkie Date: Thu, 20 Jul 2017 15:20:15 +0100 Subject: [PATCH 1/2] Add option to not register instrumentation routes, so Server can be used for internet-facing services. --- server/server.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/server/server.go b/server/server.go index 6de17b45..0536aaa5 100644 --- a/server/server.go +++ b/server/server.go @@ -40,6 +40,8 @@ type Config struct { HTTPListenPort int GRPCListenPort int + DontRegisterInstrumentation bool + ServerGracefulShutdownTimeout time.Duration HTTPServerReadTimeout time.Duration HTTPServerWriteTimeout time.Duration @@ -111,9 +113,9 @@ func New(cfg Config) (*Server, error) { // Setup HTTP server router := mux.NewRouter() - router.Handle("/metrics", prometheus.Handler()) - router.Handle("/traces", loki.Handler()) - router.PathPrefix("/debug/pprof").Handler(http.DefaultServeMux) + if !cfg.DontRegisterInstrumentation { + RegisterInstrumentation(router) + } httpMiddleware := []middleware.Interface{ middleware.Log{}, middleware.Instrument{ @@ -144,6 +146,13 @@ func New(cfg Config) (*Server, error) { }, nil } +// RegisterInstrumentation on the given router. +func RegisterInstrumentation(router *mux.Router) { + router.Handle("/metrics", prometheus.Handler()) + router.Handle("/traces", loki.Handler()) + router.PathPrefix("/debug/pprof").Handler(http.DefaultServeMux) +} + // Run the server; blocks until SIGTERM is received. func (s *Server) Run() { go s.httpServer.Serve(s.httpListener) From 976b9eefee35162288f5120a5c83620dc2447c2f Mon Sep 17 00:00:00 2001 From: Tom Wilkie Date: Thu, 20 Jul 2017 15:53:10 +0100 Subject: [PATCH 2/2] Review feedback. --- server/server.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/server.go b/server/server.go index 0536aaa5..c5b29553 100644 --- a/server/server.go +++ b/server/server.go @@ -40,7 +40,7 @@ type Config struct { HTTPListenPort int GRPCListenPort int - DontRegisterInstrumentation bool + RegisterInstrumentation bool ServerGracefulShutdownTimeout time.Duration HTTPServerReadTimeout time.Duration @@ -55,6 +55,7 @@ type Config struct { func (cfg *Config) RegisterFlags(f *flag.FlagSet) { f.IntVar(&cfg.HTTPListenPort, "server.http-listen-port", 80, "HTTP server listen port.") f.IntVar(&cfg.GRPCListenPort, "server.grpc-listen-port", 9095, "gRPC server listen port.") + f.BoolVar(&cfg.RegisterInstrumentation, "server.register-instrumentation", true, "Register the intrumentation handlers (/metrics etc).") f.DurationVar(&cfg.ServerGracefulShutdownTimeout, "server.graceful-shutdown-timeout", 5*time.Second, "Timeout for graceful shutdowns") f.DurationVar(&cfg.HTTPServerReadTimeout, "server.http-read-timeout", 5*time.Second, "Read timeout for HTTP server") f.DurationVar(&cfg.HTTPServerWriteTimeout, "server.http-write-timeout", 5*time.Second, "Write timeout for HTTP server") @@ -113,7 +114,7 @@ func New(cfg Config) (*Server, error) { // Setup HTTP server router := mux.NewRouter() - if !cfg.DontRegisterInstrumentation { + if cfg.RegisterInstrumentation { RegisterInstrumentation(router) } httpMiddleware := []middleware.Interface{