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.go101
1 files changed, 0 insertions, 101 deletions
diff --git a/middleware/metrics/metrics.go b/middleware/metrics/metrics.go
deleted file mode 100644
index 6e06a2bf4..000000000
--- a/middleware/metrics/metrics.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Package metrics implement a handler and middleware that provides Prometheus metrics.
-package metrics
-
-import (
- "log"
- "net"
- "net/http"
- "sync"
-
- "github.com/coredns/coredns/middleware"
- "github.com/coredns/coredns/middleware/metrics/vars"
-
- "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
-
- zoneNames []string
- zoneMap map[string]bool
- zoneMu sync.RWMutex
-}
-
-// AddZone adds zone z to m.
-func (m *Metrics) AddZone(z string) {
- m.zoneMu.Lock()
- m.zoneMap[z] = true
- m.zoneNames = keys(m.zoneMap)
- m.zoneMu.Unlock()
-}
-
-// RemoveZone remove zone z from m.
-func (m *Metrics) RemoveZone(z string) {
- m.zoneMu.Lock()
- delete(m.zoneMap, z)
- m.zoneNames = keys(m.zoneMap)
- m.zoneMu.Unlock()
-}
-
-// ZoneNames returns the zones of m.
-func (m *Metrics) ZoneNames() []string {
- m.zoneMu.RLock()
- s := m.zoneNames
- m.zoneMu.RUnlock()
- return s
-}
-
-// OnStartup sets up the metrics on startup.
-func (m *Metrics) OnStartup() error {
- ln, err := net.Listen("tcp", m.Addr)
- if err != nil {
- log.Printf("[ERROR] Failed to start metrics handler: %s", err)
- return err
- }
-
- m.ln = ln
- ListenAddr = m.ln.Addr().String()
-
- m.mux = http.NewServeMux()
- m.mux.Handle("/metrics", prometheus.Handler())
-
- go func() {
- http.Serve(m.ln, m.mux)
- }()
- return nil
-}
-
-// OnShutdown tears down the metrics on shutdown and restart.
-func (m *Metrics) OnShutdown() error {
- if m.ln != nil {
- return m.ln.Close()
- }
- return nil
-}
-
-func keys(m map[string]bool) []string {
- sx := []string{}
- for k := range m {
- sx = append(sx, k)
- }
- return sx
-}
-
-// ListenAddr is assigned the address of the prometheus listener. Its use is mainly in tests where
-// we listen on "localhost:0" and need to retrieve the actual address.
-var ListenAddr string