plugin/forward: add hit/miss metrics for connection cache (#4114)

Signed-off-by: Ruslan Drozhdzh <rdrozhdzh@infoblox.com>
This commit is contained in:
Ruslan Drozhdzh 2020-09-14 12:42:55 +03:00 committed by GitHub
parent 2fe5d684f9
commit 30a4a87eaa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 2 deletions

View file

@ -112,10 +112,12 @@ If monitoring is enabled (via the *prometheus* plugin) then the following metric
* `coredns_forward_healthcheck_failures_total{to}` - number of failed health checks per upstream. * `coredns_forward_healthcheck_failures_total{to}` - number of failed health checks per upstream.
* `coredns_forward_healthcheck_broken_total{}` - counter of when all upstreams are unhealthy, * `coredns_forward_healthcheck_broken_total{}` - counter of when all upstreams are unhealthy,
and we are randomly (this always uses the `random` policy) spraying to an upstream. and we are randomly (this always uses the `random` policy) spraying to an upstream.
* `max_concurrent_rejects_total{}` - counter of the number of queries rejected because the * `coredns_forward_max_concurrent_rejects_total{}` - counter of the number of queries rejected because the
number of concurrent queries were at maximum. number of concurrent queries were at maximum.
* `coredns_forward_conn_cache_hits_total{to, proto}` - counter of connection cache hits per upstream and protocol.
* `coredns_forward_conn_cache_misses_total{to, proto}` - counter of connection cache misses per upstream and protocol.
Where `to` is one of the upstream servers (**TO** from the config), `rcode` is the returned RCODE Where `to` is one of the upstream servers (**TO** from the config), `rcode` is the returned RCODE
from the upstream. from the upstream, `proto` is the transport protocol like `udp`, `tcp`, `tcp-tls`.
## Examples ## Examples

View file

@ -54,8 +54,10 @@ func (t *Transport) Dial(proto string) (*persistConn, bool, error) {
pc := <-t.ret pc := <-t.ret
if pc != nil { if pc != nil {
ConnCacheHitsCount.WithLabelValues(t.addr, proto).Add(1)
return pc, true, nil return pc, true, nil
} }
ConnCacheMissesCount.WithLabelValues(t.addr, proto).Add(1)
reqTime := time.Now() reqTime := time.Now()
timeout := t.dialTimeout() timeout := t.dialTimeout()

View file

@ -52,4 +52,16 @@ var (
Name: "max_concurrent_rejects_total", Name: "max_concurrent_rejects_total",
Help: "Counter of the number of queries rejected because the concurrent queries were at maximum.", Help: "Counter of the number of queries rejected because the concurrent queries were at maximum.",
}) })
ConnCacheHitsCount = promauto.NewCounterVec(prometheus.CounterOpts{
Namespace: plugin.Namespace,
Subsystem: "forward",
Name: "conn_cache_hits_total",
Help: "Counter of connection cache hits per upstream and protocol.",
}, []string{"to", "proto"})
ConnCacheMissesCount = promauto.NewCounterVec(prometheus.CounterOpts{
Namespace: plugin.Namespace,
Subsystem: "forward",
Name: "conn_cache_misses_total",
Help: "Counter of connection cache misses per upstream and protocol.",
}, []string{"to", "proto"})
) )