diff --git a/pkg/manager/internal.go b/pkg/manager/internal.go index 4f11b5e028..5f5ced1ffe 100644 --- a/pkg/manager/internal.go +++ b/pkg/manager/internal.go @@ -230,17 +230,19 @@ func (cm *controllerManager) GetWebhookServer() *webhook.Server { } func (cm *controllerManager) serveMetrics(stop <-chan struct{}) { + var metricsPath = "/metrics" handler := promhttp.HandlerFor(metrics.Registry, promhttp.HandlerOpts{ ErrorHandling: promhttp.HTTPErrorOnError, }) // TODO(JoelSpeed): Use existing Kubernetes machinery for serving metrics mux := http.NewServeMux() - mux.Handle("/metrics", handler) + mux.Handle(metricsPath, handler) server := http.Server{ Handler: mux, } // Run the server go func() { + log.Info("start to serve metrics", "path", metricsPath) if err := server.Serve(cm.metricsListener); err != nil && err != http.ErrServerClosed { cm.errChan <- err } diff --git a/pkg/manager/manager.go b/pkg/manager/manager.go index 670df79d08..5469455f1e 100644 --- a/pkg/manager/manager.go +++ b/pkg/manager/manager.go @@ -135,7 +135,8 @@ type Options struct { Namespace string // MetricsBindAddress is the TCP address that the controller should bind to - // for serving prometheus metrics + // for serving prometheus metrics. + // It can be set to "0" to disable the metrics serving. MetricsBindAddress string // Port is the port that the webhook server serves at. diff --git a/pkg/metrics/listener.go b/pkg/metrics/listener.go index e9db3a110c..221e79dd9c 100644 --- a/pkg/metrics/listener.go +++ b/pkg/metrics/listener.go @@ -21,11 +21,9 @@ import ( "net" ) -// DefaultBindAddress sets the default bind address for the metrics -// listener -// The metrics is off by default. -// TODO: Flip the default by changing DefaultBindAddress back to ":8080" in the v0.2.0. -var DefaultBindAddress = "0" +// DefaultBindAddress sets the default bind address for the metrics listener +// The metrics is on by default. +var DefaultBindAddress = ":8080" // NewListener creates a new TCP listener bound to the given address. func NewListener(addr string) (net.Listener, error) { @@ -39,9 +37,12 @@ func NewListener(addr string) (net.Listener, error) { return nil, nil } + log.Info("metrics is starting to listen", "addr", addr) ln, err := net.Listen("tcp", addr) if err != nil { - return nil, fmt.Errorf("error listening on %s: %v", addr, err) + er := fmt.Errorf("error listening on %s: %v", addr, err) + log.Error(er, "metrics failed to listen. You may want to disable the metrics or use another port if it is due to conflicts") + return nil, er } return ln, nil }