github.com/netdata/go.d.plugin@v0.58.1/modules/dnsquery/charts.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package dnsquery
     4  
     5  import (
     6  	"fmt"
     7  	"strings"
     8  
     9  	"github.com/netdata/go.d.plugin/agent/module"
    10  )
    11  
    12  const (
    13  	prioDNSQueryStatus = module.Priority + iota
    14  	prioDNSQueryTime
    15  )
    16  
    17  var (
    18  	dnsChartsTmpl = module.Charts{
    19  		dnsQueryStatusChartTmpl.Copy(),
    20  		dnsQueryTimeChartTmpl.Copy(),
    21  	}
    22  	dnsQueryStatusChartTmpl = module.Chart{
    23  		ID:       "server_%s_record_%s_query_status",
    24  		Title:    "DNS Query Status",
    25  		Units:    "status",
    26  		Fam:      "query status",
    27  		Ctx:      "dns_query.query_status",
    28  		Priority: prioDNSQueryStatus,
    29  		Dims: module.Dims{
    30  			{ID: "server_%s_record_%s_query_status_success", Name: "success"},
    31  			{ID: "server_%s_record_%s_query_status_network_error", Name: "network_error"},
    32  			{ID: "server_%s_record_%s_query_status_dns_error", Name: "dns_error"},
    33  		},
    34  	}
    35  	dnsQueryTimeChartTmpl = module.Chart{
    36  		ID:       "server_%s_record_%s_query_time",
    37  		Title:    "DNS Query Time",
    38  		Units:    "seconds",
    39  		Fam:      "query time",
    40  		Ctx:      "dns_query.query_time",
    41  		Priority: prioDNSQueryTime,
    42  		Dims: module.Dims{
    43  			{ID: "server_%s_record_%s_query_time", Name: "query_time", Div: 1e9},
    44  		},
    45  	}
    46  )
    47  
    48  func newDNSServerCharts(server, network, rtype string) *module.Charts {
    49  	charts := dnsChartsTmpl.Copy()
    50  
    51  	for _, chart := range *charts {
    52  		chart.ID = fmt.Sprintf(chart.ID, strings.ReplaceAll(server, ".", "_"), rtype)
    53  		chart.Labels = []module.Label{
    54  			{Key: "server", Value: server},
    55  			{Key: "network", Value: network},
    56  			{Key: "record_type", Value: rtype},
    57  		}
    58  		for _, d := range chart.Dims {
    59  			d.ID = fmt.Sprintf(d.ID, server, rtype)
    60  		}
    61  	}
    62  
    63  	return charts
    64  }