summaryrefslogtreecommitdiffstats
path: root/src/go/plugin/go.d/modules/nsd/charts.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/go/plugin/go.d/modules/nsd/charts.go249
1 files changed, 249 insertions, 0 deletions
diff --git a/src/go/plugin/go.d/modules/nsd/charts.go b/src/go/plugin/go.d/modules/nsd/charts.go
new file mode 100644
index 000000000..aed4f3098
--- /dev/null
+++ b/src/go/plugin/go.d/modules/nsd/charts.go
@@ -0,0 +1,249 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package nsd
+
+import (
+ "github.com/netdata/netdata/go/plugins/plugin/go.d/agent/module"
+)
+
+const (
+ prioQueries = module.Priority + iota
+ prioQueriesByType
+ prioQueriesByOpcode
+ prioQueriesByClass
+ prioQueriesByProtocol
+
+ prioAnswersByRcode
+
+ prioErrors
+
+ prioDrops
+
+ prioZones
+ prioZoneTransfersRequests
+ prioZoneTransferMemory
+
+ prioDatabaseSize
+
+ prioUptime
+)
+
+var charts = module.Charts{
+ queriesChart.Copy(),
+ queriesByTypeChart.Copy(),
+ queriesByOpcodeChart.Copy(),
+ queriesByClassChart.Copy(),
+ queriesByProtocolChart.Copy(),
+
+ answersByRcodeChart.Copy(),
+
+ zonesChart.Copy(),
+ zoneTransfersRequestsChart.Copy(),
+ zoneTransferMemoryChart.Copy(),
+
+ databaseSizeChart.Copy(),
+
+ errorsChart.Copy(),
+
+ dropsChart.Copy(),
+
+ uptimeChart.Copy(),
+}
+
+var (
+ queriesChart = module.Chart{
+ ID: "queries",
+ Title: "Queries",
+ Units: "queries/s",
+ Fam: "queries",
+ Ctx: "nsd.queries",
+ Priority: prioQueries,
+ Dims: module.Dims{
+ {ID: "num.queries", Name: "queries", Algo: module.Incremental},
+ },
+ }
+ queriesByTypeChart = func() module.Chart {
+ chart := module.Chart{
+ ID: "queries_by_type",
+ Title: "Queries Type",
+ Units: "queries/s",
+ Fam: "queries",
+ Ctx: "nsd.queries_by_type",
+ Priority: prioQueriesByType,
+ Type: module.Stacked,
+ }
+ for _, v := range queryTypes {
+ name := v
+ if s, ok := queryTypeNumberMap[v]; ok {
+ name = s
+ }
+ chart.Dims = append(chart.Dims, &module.Dim{
+ ID: "num.type." + v,
+ Name: name,
+ Algo: module.Incremental,
+ })
+ }
+ return chart
+ }()
+ queriesByOpcodeChart = func() module.Chart {
+ chart := module.Chart{
+ ID: "queries_by_opcode",
+ Title: "Queries Opcode",
+ Units: "queries/s",
+ Fam: "queries",
+ Ctx: "nsd.queries_by_opcode",
+ Priority: prioQueriesByOpcode,
+ Type: module.Stacked,
+ }
+ for _, v := range queryOpcodes {
+ chart.Dims = append(chart.Dims, &module.Dim{
+ ID: "num.opcode." + v,
+ Name: v,
+ Algo: module.Incremental,
+ })
+ }
+ return chart
+ }()
+ queriesByClassChart = func() module.Chart {
+ chart := module.Chart{
+ ID: "queries_by_class",
+ Title: "Queries Class",
+ Units: "queries/s",
+ Fam: "queries",
+ Ctx: "nsd.queries_by_class",
+ Priority: prioQueriesByClass,
+ Type: module.Stacked,
+ }
+ for _, v := range queryClasses {
+ chart.Dims = append(chart.Dims, &module.Dim{
+ ID: "num.class." + v,
+ Name: v,
+ Algo: module.Incremental,
+ })
+ }
+ return chart
+ }()
+ queriesByProtocolChart = module.Chart{
+ ID: "queries_by_protocol",
+ Title: "Queries Protocol",
+ Units: "queries/s",
+ Fam: "queries",
+ Ctx: "nsd.queries_by_protocol",
+ Priority: prioQueriesByProtocol,
+ Type: module.Stacked,
+ Dims: module.Dims{
+ {ID: "num.udp", Name: "udp", Algo: module.Incremental},
+ {ID: "num.udp6", Name: "udp6", Algo: module.Incremental},
+ {ID: "num.tcp", Name: "tcp", Algo: module.Incremental},
+ {ID: "num.tcp6", Name: "tcp6", Algo: module.Incremental},
+ {ID: "num.tls", Name: "tls", Algo: module.Incremental},
+ {ID: "num.tls6", Name: "tls6", Algo: module.Incremental},
+ },
+ }
+
+ answersByRcodeChart = func() module.Chart {
+ chart := module.Chart{
+ ID: "answers_by_rcode",
+ Title: "Answers Rcode",
+ Units: "answers/s",
+ Fam: "answers",
+ Ctx: "nsd.answers_by_rcode",
+ Priority: prioAnswersByRcode,
+ Type: module.Stacked,
+ }
+ for _, v := range answerRcodes {
+ chart.Dims = append(chart.Dims, &module.Dim{
+ ID: "num.rcode." + v,
+ Name: v,
+ Algo: module.Incremental,
+ })
+ }
+ return chart
+ }()
+
+ errorsChart = module.Chart{
+ ID: "errors",
+ Title: "Errors",
+ Units: "errors/s",
+ Fam: "errors",
+ Ctx: "nsd.errors",
+ Priority: prioErrors,
+ Dims: module.Dims{
+ {ID: "num.rxerr", Name: "query", Algo: module.Incremental},
+ {ID: "num.txerr", Name: "answer", Mul: -1, Algo: module.Incremental},
+ },
+ }
+
+ dropsChart = module.Chart{
+ ID: "drops",
+ Title: "Drops",
+ Units: "drops/s",
+ Fam: "drops",
+ Ctx: "nsd.drops",
+ Priority: prioDrops,
+ Dims: module.Dims{
+ {ID: "num.dropped", Name: "query", Algo: module.Incremental},
+ },
+ }
+
+ zonesChart = module.Chart{
+ ID: "zones",
+ Title: "Zones",
+ Units: "zones",
+ Fam: "zones",
+ Ctx: "nsd.zones",
+ Priority: prioZones,
+ Dims: module.Dims{
+ {ID: "zone.master", Name: "master"},
+ {ID: "zone.slave", Name: "slave"},
+ },
+ }
+ zoneTransfersRequestsChart = module.Chart{
+ ID: "zone_transfers_requests",
+ Title: "Zone Transfers",
+ Units: "requests/s",
+ Fam: "zones",
+ Ctx: "nsd.zone_transfers_requests",
+ Priority: prioZoneTransfersRequests,
+ Dims: module.Dims{
+ {ID: "num.raxfr", Name: "AXFR", Algo: module.Incremental},
+ {ID: "num.rixfr", Name: "IXFR", Algo: module.Incremental},
+ },
+ }
+ zoneTransferMemoryChart = module.Chart{
+ ID: "zone_transfer_memory",
+ Title: "Zone Transfer Memory",
+ Units: "bytes",
+ Fam: "zones",
+ Ctx: "nsd.zone_transfer_memory",
+ Priority: prioZoneTransferMemory,
+ Dims: module.Dims{
+ {ID: "size.xfrd.mem", Name: "used"},
+ },
+ }
+
+ databaseSizeChart = module.Chart{
+ ID: "database_size",
+ Title: "Database Size",
+ Units: "bytes",
+ Fam: "database",
+ Ctx: "nsd.database_size",
+ Priority: prioDatabaseSize,
+ Dims: module.Dims{
+ {ID: "size.db.disk", Name: "disk"},
+ {ID: "size.db.mem", Name: "mem"},
+ },
+ }
+
+ uptimeChart = module.Chart{
+ ID: "uptime",
+ Title: "Uptime",
+ Units: "seconds",
+ Fam: "uptime",
+ Ctx: "nsd.uptime",
+ Priority: prioUptime,
+ Dims: module.Dims{
+ {ID: "time.boot", Name: "uptime"},
+ },
+ }
+)