netdata/netdata

View on GitHub
src/go/collectors/go.d.plugin/modules/coredns/metrics.go

Summary

Maintainability
A
0 mins
Test Coverage
// SPDX-License-Identifier: GPL-3.0-or-later

package coredns

import (
    mtx "github.com/netdata/netdata/go/go.d.plugin/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"`
}