| Jan Schär | 4a18022 | 2024-07-29 16:32:54 +0200 | [diff] [blame] | 1 | package dns |
| 2 | |
| 3 | import ( |
| 4 | "github.com/prometheus/client_golang/prometheus" |
| 5 | "github.com/prometheus/client_golang/prometheus/promauto" |
| 6 | ) |
| 7 | |
| 8 | // MetricsRegistry is the metrics registry in which all DNS metrics are |
| 9 | // registered. |
| 10 | var MetricsRegistry = prometheus.NewRegistry() |
| 11 | var MetricsFactory = promauto.With(MetricsRegistry) |
| 12 | |
| 13 | var ( |
| 14 | // rcode can be an uppercase rcode name, a numeric rcode if the rcode is not |
| 15 | // known, or one of: |
| 16 | // * redirected: The query was redirected by CNAME, so the final rcode |
| 17 | // is not yet known. |
| 18 | // * not_ready: The handler is not yet ready, SERVFAIL is replied. |
| 19 | handlerDuration = MetricsFactory.NewHistogramVec(prometheus.HistogramOpts{ |
| 20 | Namespace: "dnsserver", |
| 21 | Subsystem: "server", |
| 22 | Name: "handler_duration_seconds", |
| 23 | Buckets: prometheus.ExponentialBuckets(0.00025, 2, 16), // from 0.25ms to 8 seconds |
| 24 | Help: "Histogram of the time each handler took.", |
| 25 | }, []string{"handler", "rcode"}) |
| 26 | ) |