aboutsummaryrefslogtreecommitdiff
path: root/middleware/metrics/metrics.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/metrics/metrics.go')
-rw-r--r--middleware/metrics/metrics.go51
1 files changed, 24 insertions, 27 deletions
diff --git a/middleware/metrics/metrics.go b/middleware/metrics/metrics.go
index ee0e0ed16..8709f3fe4 100644
--- a/middleware/metrics/metrics.go
+++ b/middleware/metrics/metrics.go
@@ -13,13 +13,23 @@ import (
"github.com/prometheus/client_golang/prometheus"
)
+func init() {
+ prometheus.MustRegister(vars.RequestCount)
+ prometheus.MustRegister(vars.RequestDuration)
+ prometheus.MustRegister(vars.RequestSize)
+ prometheus.MustRegister(vars.RequestDo)
+ prometheus.MustRegister(vars.RequestType)
+
+ prometheus.MustRegister(vars.ResponseSize)
+ prometheus.MustRegister(vars.ResponseRcode)
+}
+
// Metrics holds the prometheus configuration. The metrics' path is fixed to be /metrics
type Metrics struct {
Next middleware.Handler
Addr string
ln net.Listener
mux *http.ServeMux
- Once sync.Once
zoneNames []string
zoneMap map[string]bool
@@ -52,38 +62,25 @@ func (m *Metrics) ZoneNames() []string {
// OnStartup sets up the metrics on startup.
func (m *Metrics) OnStartup() error {
- m.Once.Do(func() {
-
- ln, err := net.Listen("tcp", m.Addr)
- if err != nil {
- log.Printf("[ERROR] Failed to start metrics handler: %s", err)
- return
- }
-
- m.ln = ln
- ListenAddr = m.ln.Addr().String()
-
- m.mux = http.NewServeMux()
-
- prometheus.MustRegister(vars.RequestCount)
- prometheus.MustRegister(vars.RequestDuration)
- prometheus.MustRegister(vars.RequestSize)
- prometheus.MustRegister(vars.RequestDo)
- prometheus.MustRegister(vars.RequestType)
+ ln, err := net.Listen("tcp", m.Addr)
+ if err != nil {
+ log.Printf("[ERROR] Failed to start metrics handler: %s", err)
+ return err
+ }
- prometheus.MustRegister(vars.ResponseSize)
- prometheus.MustRegister(vars.ResponseRcode)
+ m.ln = ln
+ ListenAddr = m.ln.Addr().String()
- m.mux.Handle("/metrics", prometheus.Handler())
+ m.mux = http.NewServeMux()
+ m.mux.Handle("/metrics", prometheus.Handler())
- go func() {
- http.Serve(m.ln, m.mux)
- }()
- })
+ go func() {
+ http.Serve(m.ln, m.mux)
+ }()
return nil
}
-// OnShutdown tears down the metrics on shutdown.
+// OnShutdown tears down the metrics on shutdown and restart.
func (m *Metrics) OnShutdown() error {
if m.ln != nil {
return m.ln.Close()