diff options
Diffstat (limited to 'src/go/plugin/go.d/modules/nsd/charts.go')
-rw-r--r-- | src/go/plugin/go.d/modules/nsd/charts.go | 249 |
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"}, + }, + } +) |