master
go 251 lines 6.03 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 //go:build linux || freebsd || openbsd || netbsd || dragonfly || darwin
4
5 package nsd
6
7 import (
8 "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi"
9 )
10
11 const (
12 prioQueries = collectorapi.Priority + iota
13 prioQueriesByType
14 prioQueriesByOpcode
15 prioQueriesByClass
16 prioQueriesByProtocol
17
18 prioAnswersByRcode
19
20 prioErrors
21
22 prioDrops
23
24 prioZones
25 prioZoneTransfersRequests
26 prioZoneTransferMemory
27
28 prioDatabaseSize
29
30 prioUptime
31 )
32
33 var charts = collectorapi.Charts{
34 queriesChart.Copy(),
35 queriesByTypeChart.Copy(),
36 queriesByOpcodeChart.Copy(),
37 queriesByClassChart.Copy(),
38 queriesByProtocolChart.Copy(),
39
40 answersByRcodeChart.Copy(),
41
42 zonesChart.Copy(),
43 zoneTransfersRequestsChart.Copy(),
44 zoneTransferMemoryChart.Copy(),
45
46 databaseSizeChart.Copy(),
47
48 errorsChart.Copy(),
49
50 dropsChart.Copy(),
51
52 uptimeChart.Copy(),
53 }
54
55 var (
56 queriesChart = collectorapi.Chart{
57 ID: "queries",
58 Title: "Queries",
59 Units: "queries/s",
60 Fam: "queries",
61 Ctx: "nsd.queries",
62 Priority: prioQueries,
63 Dims: collectorapi.Dims{
64 {ID: "num.queries", Name: "queries", Algo: collectorapi.Incremental},
65 },
66 }
67 queriesByTypeChart = func() collectorapi.Chart {
68 chart := collectorapi.Chart{
69 ID: "queries_by_type",
70 Title: "Queries Type",
71 Units: "queries/s",
72 Fam: "queries",
73 Ctx: "nsd.queries_by_type",
74 Priority: prioQueriesByType,
75 Type: collectorapi.Stacked,
76 }
77 for _, v := range queryTypes {
78 name := v
79 if s, ok := queryTypeNumberMap[v]; ok {
80 name = s
81 }
82 chart.Dims = append(chart.Dims, &collectorapi.Dim{
83 ID: "num.type." + v,
84 Name: name,
85 Algo: collectorapi.Incremental,
86 })
87 }
88 return chart
89 }()
90 queriesByOpcodeChart = func() collectorapi.Chart {
91 chart := collectorapi.Chart{
92 ID: "queries_by_opcode",
93 Title: "Queries Opcode",
94 Units: "queries/s",
95 Fam: "queries",
96 Ctx: "nsd.queries_by_opcode",
97 Priority: prioQueriesByOpcode,
98 Type: collectorapi.Stacked,
99 }
100 for _, v := range queryOpcodes {
101 chart.Dims = append(chart.Dims, &collectorapi.Dim{
102 ID: "num.opcode." + v,
103 Name: v,
104 Algo: collectorapi.Incremental,
105 })
106 }
107 return chart
108 }()
109 queriesByClassChart = func() collectorapi.Chart {
110 chart := collectorapi.Chart{
111 ID: "queries_by_class",
112 Title: "Queries Class",
113 Units: "queries/s",
114 Fam: "queries",
115 Ctx: "nsd.queries_by_class",
116 Priority: prioQueriesByClass,
117 Type: collectorapi.Stacked,
118 }
119 for _, v := range queryClasses {
120 chart.Dims = append(chart.Dims, &collectorapi.Dim{
121 ID: "num.class." + v,
122 Name: v,
123 Algo: collectorapi.Incremental,
124 })
125 }
126 return chart
127 }()
128 queriesByProtocolChart = collectorapi.Chart{
129 ID: "queries_by_protocol",
130 Title: "Queries Protocol",
131 Units: "queries/s",
132 Fam: "queries",
133 Ctx: "nsd.queries_by_protocol",
134 Priority: prioQueriesByProtocol,
135 Type: collectorapi.Stacked,
136 Dims: collectorapi.Dims{
137 {ID: "num.udp", Name: "udp", Algo: collectorapi.Incremental},
138 {ID: "num.udp6", Name: "udp6", Algo: collectorapi.Incremental},
139 {ID: "num.tcp", Name: "tcp", Algo: collectorapi.Incremental},
140 {ID: "num.tcp6", Name: "tcp6", Algo: collectorapi.Incremental},
141 {ID: "num.tls", Name: "tls", Algo: collectorapi.Incremental},
142 {ID: "num.tls6", Name: "tls6", Algo: collectorapi.Incremental},
143 },
144 }
145
146 answersByRcodeChart = func() collectorapi.Chart {
147 chart := collectorapi.Chart{
148 ID: "answers_by_rcode",
149 Title: "Answers Rcode",
150 Units: "answers/s",
151 Fam: "answers",
152 Ctx: "nsd.answers_by_rcode",
153 Priority: prioAnswersByRcode,
154 Type: collectorapi.Stacked,
155 }
156 for _, v := range answerRcodes {
157 chart.Dims = append(chart.Dims, &collectorapi.Dim{
158 ID: "num.rcode." + v,
159 Name: v,
160 Algo: collectorapi.Incremental,
161 })
162 }
163 return chart
164 }()
165
166 errorsChart = collectorapi.Chart{
167 ID: "errors",
168 Title: "Errors",
169 Units: "errors/s",
170 Fam: "errors",
171 Ctx: "nsd.errors",
172 Priority: prioErrors,
173 Dims: collectorapi.Dims{
174 {ID: "num.rxerr", Name: "query", Algo: collectorapi.Incremental},
175 {ID: "num.txerr", Name: "answer", Mul: -1, Algo: collectorapi.Incremental},
176 },
177 }
178
179 dropsChart = collectorapi.Chart{
180 ID: "drops",
181 Title: "Drops",
182 Units: "drops/s",
183 Fam: "drops",
184 Ctx: "nsd.drops",
185 Priority: prioDrops,
186 Dims: collectorapi.Dims{
187 {ID: "num.dropped", Name: "query", Algo: collectorapi.Incremental},
188 },
189 }
190
191 zonesChart = collectorapi.Chart{
192 ID: "zones",
193 Title: "Zones",
194 Units: "zones",
195 Fam: "zones",
196 Ctx: "nsd.zones",
197 Priority: prioZones,
198 Dims: collectorapi.Dims{
199 {ID: "zone.master", Name: "master"},
200 {ID: "zone.slave", Name: "slave"},
201 },
202 }
203 zoneTransfersRequestsChart = collectorapi.Chart{
204 ID: "zone_transfers_requests",
205 Title: "Zone Transfers",
206 Units: "requests/s",
207 Fam: "zones",
208 Ctx: "nsd.zone_transfers_requests",
209 Priority: prioZoneTransfersRequests,
210 Dims: collectorapi.Dims{
211 {ID: "num.raxfr", Name: "AXFR", Algo: collectorapi.Incremental},
212 {ID: "num.rixfr", Name: "IXFR", Algo: collectorapi.Incremental},
213 },
214 }
215 zoneTransferMemoryChart = collectorapi.Chart{
216 ID: "zone_transfer_memory",
217 Title: "Zone Transfer Memory",
218 Units: "bytes",
219 Fam: "zones",
220 Ctx: "nsd.zone_transfer_memory",
221 Priority: prioZoneTransferMemory,
222 Dims: collectorapi.Dims{
223 {ID: "size.xfrd.mem", Name: "used"},
224 },
225 }
226
227 databaseSizeChart = collectorapi.Chart{
228 ID: "database_size",
229 Title: "Database Size",
230 Units: "bytes",
231 Fam: "database",
232 Ctx: "nsd.database_size",
233 Priority: prioDatabaseSize,
234 Dims: collectorapi.Dims{
235 {ID: "size.db.disk", Name: "disk"},
236 {ID: "size.db.mem", Name: "mem"},
237 },
238 }
239
240 uptimeChart = collectorapi.Chart{
241 ID: "uptime",
242 Title: "Uptime",
243 Units: "seconds",
244 Fam: "uptime",
245 Ctx: "nsd.uptime",
246 Priority: prioUptime,
247 Dims: collectorapi.Dims{
248 {ID: "time.boot", Name: "uptime"},
249 },
250 }
251 )