src/go/plugin/go.d/modules/coredns/metrics.go
// SPDX-License-Identifier: GPL-3.0-or-later
package coredns
import (
mtx "github.com/netdata/netdata/go/plugins/plugin/go.d/pkg/metrics"
)
func newMetrics() *metrics {
mx := &metrics{}
mx.PerServer = make(map[string]*requestResponse)
mx.PerZone = make(map[string]*requestResponse)
return mx
}
type metrics struct {
Panic mtx.Gauge `stm:"panic_total"`
NoZoneDropped mtx.Gauge `stm:"no_matching_zone_dropped_total"`
Summary requestResponse `stm:""`
PerServer map[string]*requestResponse `stm:""`
PerZone map[string]*requestResponse `stm:""`
}
type requestResponse struct {
Request request `stm:"request"`
Response response `stm:"response"`
}
type request struct {
Total mtx.Gauge `stm:"total"`
PerStatus struct {
Processed mtx.Gauge `stm:"processed"`
Dropped mtx.Gauge `stm:"dropped"`
} `stm:"per_status"`
PerProto struct {
UDP mtx.Gauge `stm:"udp"`
TCP mtx.Gauge `stm:"tcp"`
} `stm:"per_proto"`
PerIPFamily struct {
IPv4 mtx.Gauge `stm:"v4"`
IPv6 mtx.Gauge `stm:"v6"`
} `stm:"per_ip_family"`
// https://github.com/coredns/coredns/blob/master/plugin/metrics/vars/report.go
PerType struct {
A mtx.Gauge `stm:"A"`
AAAA mtx.Gauge `stm:"AAAA"`
MX mtx.Gauge `stm:"MX"`
SOA mtx.Gauge `stm:"SOA"`
CNAME mtx.Gauge `stm:"CNAME"`
PTR mtx.Gauge `stm:"PTR"`
TXT mtx.Gauge `stm:"TXT"`
NS mtx.Gauge `stm:"NS"`
SRV mtx.Gauge `stm:"SRV"`
DS mtx.Gauge `stm:"DS"`
DNSKEY mtx.Gauge `stm:"DNSKEY"`
RRSIG mtx.Gauge `stm:"RRSIG"`
NSEC mtx.Gauge `stm:"NSEC"`
NSEC3 mtx.Gauge `stm:"NSEC3"`
IXFR mtx.Gauge `stm:"IXFR"`
ANY mtx.Gauge `stm:"ANY"`
Other mtx.Gauge `stm:"other"`
} `stm:"per_type"`
//Duration struct {
// LE000025 mtx.Gauge `stm:"0.00025"`
// LE00005 mtx.Gauge `stm:"0.0005"`
// LE0001 mtx.Gauge `stm:"0.001"`
// LE0002 mtx.Gauge `stm:"0.002"`
// LE0004 mtx.Gauge `stm:"0.004"`
// LE0008 mtx.Gauge `stm:"0.008"`
// LE0016 mtx.Gauge `stm:"0.016"`
// LE0032 mtx.Gauge `stm:"0.032"`
// LE0064 mtx.Gauge `stm:"0.064"`
// LE0128 mtx.Gauge `stm:"0.128"`
// LE0256 mtx.Gauge `stm:"0.256"`
// LE0512 mtx.Gauge `stm:"0.512"`
// LE1024 mtx.Gauge `stm:"1.024"`
// LE2048 mtx.Gauge `stm:"2.048"`
// LE4096 mtx.Gauge `stm:"4.096"`
// LE8192 mtx.Gauge `stm:"8.192"`
// LEInf mtx.Gauge `stm:"+Inf"`
//} `stm:"duration_seconds_bucket"`
}
// https://github.com/miekg/dns/blob/master/types.go
// https://github.com/miekg/dns/blob/master/msg.go#L169
type response struct {
Total mtx.Gauge `stm:"total"`
PerRcode struct {
NOERROR mtx.Gauge `stm:"NOERROR"`
FORMERR mtx.Gauge `stm:"FORMERR"`
SERVFAIL mtx.Gauge `stm:"SERVFAIL"`
NXDOMAIN mtx.Gauge `stm:"NXDOMAIN"`
NOTIMP mtx.Gauge `stm:"NOTIMP"`
REFUSED mtx.Gauge `stm:"REFUSED"`
YXDOMAIN mtx.Gauge `stm:"YXDOMAIN"`
YXRRSET mtx.Gauge `stm:"YXRRSET"`
NXRRSET mtx.Gauge `stm:"NXRRSET"`
NOTAUTH mtx.Gauge `stm:"NOTAUTH"`
NOTZONE mtx.Gauge `stm:"NOTZONE"`
BADSIG mtx.Gauge `stm:"BADSIG"`
BADKEY mtx.Gauge `stm:"BADKEY"`
BADTIME mtx.Gauge `stm:"BADTIME"`
BADMODE mtx.Gauge `stm:"BADMODE"`
BADNAME mtx.Gauge `stm:"BADNAME"`
BADALG mtx.Gauge `stm:"BADALG"`
BADTRUNC mtx.Gauge `stm:"BADTRUNC"`
BADCOOKIE mtx.Gauge `stm:"BADCOOKIE"`
Other mtx.Gauge `stm:"other"`
} `stm:"per_rcode"`
}