diff --git a/internal/metrics/server_metrics.go b/internal/metrics/server_metrics.go index 4573834..034b0fe 100644 --- a/internal/metrics/server_metrics.go +++ b/internal/metrics/server_metrics.go @@ -1,11 +1,14 @@ package metrics import ( + "errors" + "net/http" + "time" + "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/rs/zerolog/log" - "net/http" ) var ( @@ -67,9 +70,19 @@ var ( ) func StartMetricsServer(addr string) { - http.Handle("/metrics", promhttp.Handler()) - err := http.ListenAndServe(addr, nil) - if err != nil { - log.Fatal().Msgf("Can not start metrics server at %s: %v", addr, err) + mux := http.NewServeMux() + mux.Handle("/metrics", promhttp.Handler()) + + server := http.Server{ + Addr: addr, + Handler: mux, + ReadTimeout: 3 * time.Second, + ReadHeaderTimeout: 3 * time.Second, + WriteTimeout: 3 * time.Second, + IdleTimeout: 30 * time.Second, + } + + if err := server.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { + log.Fatal().Err(err).Msgf("Can not start metrics server") } }