30 lines
783 B
Go
30 lines
783 B
Go
package proxy
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/miekg/coredns/middleware"
|
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
)
|
|
|
|
// Metrics the proxy middleware exports.
|
|
var (
|
|
RequestDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Namespace: middleware.Namespace,
|
|
Subsystem: "proxy",
|
|
Name: "request_duration_milliseconds",
|
|
Buckets: append(prometheus.DefBuckets, []float64{50, 100, 200, 500, 1000, 2000, 3000, 4000, 5000, 10000}...),
|
|
Help: "Histogram of the time (in milliseconds) each request took.",
|
|
}, []string{"zone"})
|
|
)
|
|
|
|
// OnStartup sets up the metrics on startup. This is done for all proxy protocols.
|
|
func OnStartup() error {
|
|
metricsOnce.Do(func() {
|
|
prometheus.MustRegister(RequestDuration)
|
|
})
|
|
return nil
|
|
}
|
|
|
|
var metricsOnce sync.Once
|