@cryptotaxi247 / netdata-1 / commits / cd3797c26

go.d megacli: return error if no adapters found (parsing failed) (#18090)

Ilya Mashchenko committed Jul 9, 2024 at 00:07 UTC cd3797c2625b293ee12f9bb8c35b4e7ba978d571
5 files changed +177 -169
src/go/plugin/go.d/modules/chrony/charts.go
+103 -105
@@ -3,8 +3,6 @@
3 package chrony
4
5 import (
6 - "errors"
7 -
6 "github.com/netdata/netdata/go/plugins/plugin/go.d/agent/module"
7 )
8
@@ -22,10 +20,10 @@ const (
20 prioRefMeasurementTime
21 prioLeapStatus
22 prioActivity
25 - prioNTPPackets
26 - prioCommandPackets
27 - prioNKEConnections
28 - prioClientLogRecords
23 + //prioNTPPackets
24 + //prioCommandPackets
25 + //prioNKEConnections
26 + //prioClientLogRecords
27 )
28
29 var charts = module.Charts{
@@ -218,105 +216,105 @@ var (
216 }
217 )
218
221 -var serverStatsVer1Charts = module.Charts{
222 - ntpPacketsChart.Copy(),
223 - commandPacketsChart.Copy(),
224 - clientLogRecordsChart.Copy(),
225 -}
226 -
227 -var serverStatsVer2Charts = module.Charts{
228 - ntpPacketsChart.Copy(),
229 - commandPacketsChart.Copy(),
230 - clientLogRecordsChart.Copy(),
231 - nkeConnectionChart.Copy(),
232 -}
233 -
234 -var serverStatsVer3Charts = module.Charts{
235 - ntpPacketsChart.Copy(),
236 - commandPacketsChart.Copy(),
237 - clientLogRecordsChart.Copy(),
238 - nkeConnectionChart.Copy(),
239 -}
240 -
241 -var serverStatsVer4Charts = module.Charts{
242 - ntpPacketsChart.Copy(),
243 - commandPacketsChart.Copy(),
244 - clientLogRecordsChart.Copy(),
245 - nkeConnectionChart.Copy(),
246 -}
219 +//var serverStatsVer1Charts = module.Charts{
220 +// ntpPacketsChart.Copy(),
221 +// commandPacketsChart.Copy(),
222 +// clientLogRecordsChart.Copy(),
223 +//}
224 +//
225 +//var serverStatsVer2Charts = module.Charts{
226 +// ntpPacketsChart.Copy(),
227 +// commandPacketsChart.Copy(),
228 +// clientLogRecordsChart.Copy(),
229 +// nkeConnectionChart.Copy(),
230 +//}
231 +//
232 +//var serverStatsVer3Charts = module.Charts{
233 +// ntpPacketsChart.Copy(),
234 +// commandPacketsChart.Copy(),
235 +// clientLogRecordsChart.Copy(),
236 +// nkeConnectionChart.Copy(),
237 +//}
238 +//
239 +//var serverStatsVer4Charts = module.Charts{
240 +// ntpPacketsChart.Copy(),
241 +// commandPacketsChart.Copy(),
242 +// clientLogRecordsChart.Copy(),
243 +// nkeConnectionChart.Copy(),
244 +//}
245
246 // ServerStats charts
249 -var (
250 - ntpPacketsChart = module.Chart{
251 - ID: "ntp_packets",
252 - Title: "NTP packets",
253 - Units: "packets/s",
254 - Fam: "client requests",
255 - Ctx: "chrony.ntp_packets",
256 - Type: module.Stacked,
257 - Priority: prioNTPPackets,
258 - Dims: module.Dims{
259 - {ID: "ntp_packets_received", Name: "received", Algo: module.Incremental},
260 - {ID: "ntp_packets_dropped", Name: "dropped", Algo: module.Incremental},
261 - },
262 - }
263 - commandPacketsChart = module.Chart{
264 - ID: "command_packets",
265 - Title: "Command packets",
266 - Units: "packets/s",
267 - Fam: "client requests",
268 - Ctx: "chrony.command_packets",
269 - Type: module.Stacked,
270 - Priority: prioCommandPackets,
271 - Dims: module.Dims{
272 - {ID: "command_packets_received", Name: "received", Algo: module.Incremental},
273 - {ID: "command_packets_dropped", Name: "dropped", Algo: module.Incremental},
274 - },
275 - }
276 - nkeConnectionChart = module.Chart{
277 - ID: "nke_connections",
278 - Title: "NTS-KE connections",
279 - Units: "connections/s",
280 - Fam: "client requests",
281 - Ctx: "chrony.nke_connections",
282 - Type: module.Stacked,
283 - Priority: prioNKEConnections,
284 - Dims: module.Dims{
285 - {ID: "nke_connections_accepted", Name: "accepted", Algo: module.Incremental},
286 - {ID: "nke_connections_dropped", Name: "dropped", Algo: module.Incremental},
287 - },
288 - }
289 - clientLogRecordsChart = module.Chart{
290 - ID: "client_log_records",
291 - Title: "Client log records",
292 - Units: "records/s",
293 - Fam: "client requests",
294 - Ctx: "chrony.client_log_records",
295 - Type: module.Stacked,
296 - Priority: prioClientLogRecords,
297 - Dims: module.Dims{
298 - {ID: "client_log_records_dropped", Name: "dropped", Algo: module.Incremental},
299 - },
300 - }
301 -)
247 +//var (
248 +// ntpPacketsChart = module.Chart{
249 +// ID: "ntp_packets",
250 +// Title: "NTP packets",
251 +// Units: "packets/s",
252 +// Fam: "client requests",
253 +// Ctx: "chrony.ntp_packets",
254 +// Type: module.Stacked,
255 +// Priority: prioNTPPackets,
256 +// Dims: module.Dims{
257 +// {ID: "ntp_packets_received", Name: "received", Algo: module.Incremental},
258 +// {ID: "ntp_packets_dropped", Name: "dropped", Algo: module.Incremental},
259 +// },
260 +// }
261 +// commandPacketsChart = module.Chart{
262 +// ID: "command_packets",
263 +// Title: "Command packets",
264 +// Units: "packets/s",
265 +// Fam: "client requests",
266 +// Ctx: "chrony.command_packets",
267 +// Type: module.Stacked,
268 +// Priority: prioCommandPackets,
269 +// Dims: module.Dims{
270 +// {ID: "command_packets_received", Name: "received", Algo: module.Incremental},
271 +// {ID: "command_packets_dropped", Name: "dropped", Algo: module.Incremental},
272 +// },
273 +// }
274 +// nkeConnectionChart = module.Chart{
275 +// ID: "nke_connections",
276 +// Title: "NTS-KE connections",
277 +// Units: "connections/s",
278 +// Fam: "client requests",
279 +// Ctx: "chrony.nke_connections",
280 +// Type: module.Stacked,
281 +// Priority: prioNKEConnections,
282 +// Dims: module.Dims{
283 +// {ID: "nke_connections_accepted", Name: "accepted", Algo: module.Incremental},
284 +// {ID: "nke_connections_dropped", Name: "dropped", Algo: module.Incremental},
285 +// },
286 +// }
287 +// clientLogRecordsChart = module.Chart{
288 +// ID: "client_log_records",
289 +// Title: "Client log records",
290 +// Units: "records/s",
291 +// Fam: "client requests",
292 +// Ctx: "chrony.client_log_records",
293 +// Type: module.Stacked,
294 +// Priority: prioClientLogRecords,
295 +// Dims: module.Dims{
296 +// {ID: "client_log_records_dropped", Name: "dropped", Algo: module.Incremental},
297 +// },
298 +// }
299 +//)
300
303 -func (c *Chrony) addServerStatsCharts(stats *serverStats) {
304 - var err error
305 -
306 - switch {
307 - case stats.v1 != nil:
308 - err = c.Charts().Add(*serverStatsVer1Charts.Copy()...)
309 - case stats.v2 != nil:
310 - err = c.Charts().Add(*serverStatsVer2Charts.Copy()...)
311 - case stats.v3 != nil:
312 - err = c.Charts().Add(*serverStatsVer3Charts.Copy()...)
313 - case stats.v4 != nil:
314 - err = c.Charts().Add(*serverStatsVer4Charts.Copy()...)
315 - default:
316 - err = errors.New("unknown stats chart")
317 - }
318 -
319 - if err != nil {
320 - c.Warning(err)
321 - }
322 -}
301 +//func (c *Chrony) addServerStatsCharts(stats *serverStats) {
302 +// var err error
303 +//
304 +// switch {
305 +// case stats.v1 != nil:
306 +// err = c.Charts().Add(*serverStatsVer1Charts.Copy()...)
307 +// case stats.v2 != nil:
308 +// err = c.Charts().Add(*serverStatsVer2Charts.Copy()...)
309 +// case stats.v3 != nil:
310 +// err = c.Charts().Add(*serverStatsVer3Charts.Copy()...)
311 +// case stats.v4 != nil:
312 +// err = c.Charts().Add(*serverStatsVer4Charts.Copy()...)
313 +// default:
314 +// err = errors.New("unknown stats chart")
315 +// }
316 +//
317 +// if err != nil {
318 +// c.Warning(err)
319 +// }
320 +//}
src/go/plugin/go.d/modules/chrony/collect.go
+58 -60
@@ -3,9 +3,7 @@
3 package chrony
4
5 import (
6 - "errors"
6 "fmt"
8 - "strings"
7 "time"
8 )
9
@@ -28,14 +26,14 @@ func (c *Chrony) collect() (map[string]int64, error) {
26 if err := c.collectActivity(mx); err != nil {
27 return mx, err
28 }
31 - if strings.HasPrefix(c.Address, "/") {
32 - // TODO: Allowed only through the Unix domain socket (requires "_chrony" group membership).
33 - // See https://github.com/facebook/time/blob/18207c5d8ddc7242e8d4192985898b6dbe66932c/cmd/ntpcheck/checker/chrony.go#L38
34 - // ^^ For some reason doesn't work, Chrony doesn't respond. Additional configuration needed?
35 - //if err := c.collectServerStats(mx); err != nil {
36 - // return mx, err
37 - //}
38 - }
29 + //if strings.HasPrefix(c.Address, "/") {
30 + // TODO: Allowed only through the Unix domain socket (requires "_chrony" group membership).
31 + // See https://github.com/facebook/time/blob/18207c5d8ddc7242e8d4192985898b6dbe66932c/cmd/ntpcheck/checker/chrony.go#L38
32 + // ^^ For some reason doesn't work, Chrony doesn't respond. Additional configuration needed?
33 + //if err := c.collectServerStats(mx); err != nil {
34 + // return mx, err
35 + //}
36 + //}
37
38 return mx, nil
39 }
@@ -92,56 +90,56 @@ func (c *Chrony) collectActivity(mx map[string]int64) error {
90 return nil
91 }
92
95 -func (c *Chrony) collectServerStats(mx map[string]int64) error {
96 - stats, err := c.client.ServerStats()
97 - if err != nil {
98 - return fmt.Errorf("error on collecting server stats: %v", err)
99 - }
100 -
101 - switch {
102 - case stats.v4 != nil:
103 - mx["ntp_packets_received"] = int64(stats.v4.NTPHits)
104 - mx["ntp_packets_dropped"] = int64(stats.v4.NTPDrops)
105 - mx["command_packets_received"] = int64(stats.v4.CMDHits)
106 - mx["command_packets_dropped"] = int64(stats.v4.CMDDrops)
107 - mx["client_log_records_dropped"] = int64(stats.v4.LogDrops)
108 - mx["nke_connections_accepted"] = int64(stats.v4.NKEHits)
109 - mx["nke_connections_dropped"] = int64(stats.v4.NKEDrops)
110 - mx["authenticated_ntp_packets"] = int64(stats.v4.NTPAuthHits)
111 - mx["interleaved_ntp_packets"] = int64(stats.v4.NTPInterleavedHits)
112 - case stats.v3 != nil:
113 - mx["ntp_packets_received"] = int64(stats.v3.NTPHits)
114 - mx["ntp_packets_dropped"] = int64(stats.v3.NTPDrops)
115 - mx["command_packets_received"] = int64(stats.v3.CMDHits)
116 - mx["command_packets_dropped"] = int64(stats.v3.CMDDrops)
117 - mx["client_log_records_dropped"] = int64(stats.v3.LogDrops)
118 - mx["nke_connections_accepted"] = int64(stats.v3.NKEHits)
119 - mx["nke_connections_dropped"] = int64(stats.v3.NKEDrops)
120 - mx["authenticated_ntp_packets"] = int64(stats.v3.NTPAuthHits)
121 - mx["interleaved_ntp_packets"] = int64(stats.v3.NTPInterleavedHits)
122 - case stats.v2 != nil:
123 - mx["ntp_packets_received"] = int64(stats.v2.NTPHits)
124 - mx["ntp_packets_dropped"] = int64(stats.v2.NTPDrops)
125 - mx["command_packets_received"] = int64(stats.v2.CMDHits)
126 - mx["command_packets_dropped"] = int64(stats.v2.CMDDrops)
127 - mx["client_log_records_dropped"] = int64(stats.v2.LogDrops)
128 - mx["nke_connections_accepted"] = int64(stats.v2.NKEHits)
129 - mx["nke_connections_dropped"] = int64(stats.v2.NKEDrops)
130 - mx["authenticated_ntp_packets"] = int64(stats.v2.NTPAuthHits)
131 - case stats.v1 != nil:
132 - mx["ntp_packets_received"] = int64(stats.v1.NTPHits)
133 - mx["ntp_packets_dropped"] = int64(stats.v1.NTPDrops)
134 - mx["command_packets_received"] = int64(stats.v1.CMDHits)
135 - mx["command_packets_dropped"] = int64(stats.v1.CMDDrops)
136 - mx["client_log_records_dropped"] = int64(stats.v1.LogDrops)
137 - default:
138 - return errors.New("invalid server stats reply")
139 - }
140 -
141 - c.addStatsChartsOnce.Do(func() { c.addServerStatsCharts(stats) })
142 -
143 - return nil
144 -}
93 +//func (c *Chrony) collectServerStats(mx map[string]int64) error {
94 +// stats, err := c.client.ServerStats()
95 +// if err != nil {
96 +// return fmt.Errorf("error on collecting server stats: %v", err)
97 +// }
98 +//
99 +// switch {
100 +// case stats.v4 != nil:
101 +// mx["ntp_packets_received"] = int64(stats.v4.NTPHits)
102 +// mx["ntp_packets_dropped"] = int64(stats.v4.NTPDrops)
103 +// mx["command_packets_received"] = int64(stats.v4.CMDHits)
104 +// mx["command_packets_dropped"] = int64(stats.v4.CMDDrops)
105 +// mx["client_log_records_dropped"] = int64(stats.v4.LogDrops)
106 +// mx["nke_connections_accepted"] = int64(stats.v4.NKEHits)
107 +// mx["nke_connections_dropped"] = int64(stats.v4.NKEDrops)
108 +// mx["authenticated_ntp_packets"] = int64(stats.v4.NTPAuthHits)
109 +// mx["interleaved_ntp_packets"] = int64(stats.v4.NTPInterleavedHits)
110 +// case stats.v3 != nil:
111 +// mx["ntp_packets_received"] = int64(stats.v3.NTPHits)
112 +// mx["ntp_packets_dropped"] = int64(stats.v3.NTPDrops)
113 +// mx["command_packets_received"] = int64(stats.v3.CMDHits)
114 +// mx["command_packets_dropped"] = int64(stats.v3.CMDDrops)
115 +// mx["client_log_records_dropped"] = int64(stats.v3.LogDrops)
116 +// mx["nke_connections_accepted"] = int64(stats.v3.NKEHits)
117 +// mx["nke_connections_dropped"] = int64(stats.v3.NKEDrops)
118 +// mx["authenticated_ntp_packets"] = int64(stats.v3.NTPAuthHits)
119 +// mx["interleaved_ntp_packets"] = int64(stats.v3.NTPInterleavedHits)
120 +// case stats.v2 != nil:
121 +// mx["ntp_packets_received"] = int64(stats.v2.NTPHits)
122 +// mx["ntp_packets_dropped"] = int64(stats.v2.NTPDrops)
123 +// mx["command_packets_received"] = int64(stats.v2.CMDHits)
124 +// mx["command_packets_dropped"] = int64(stats.v2.CMDDrops)
125 +// mx["client_log_records_dropped"] = int64(stats.v2.LogDrops)
126 +// mx["nke_connections_accepted"] = int64(stats.v2.NKEHits)
127 +// mx["nke_connections_dropped"] = int64(stats.v2.NKEDrops)
128 +// mx["authenticated_ntp_packets"] = int64(stats.v2.NTPAuthHits)
129 +// case stats.v1 != nil:
130 +// mx["ntp_packets_received"] = int64(stats.v1.NTPHits)
131 +// mx["ntp_packets_dropped"] = int64(stats.v1.NTPDrops)
132 +// mx["command_packets_received"] = int64(stats.v1.CMDHits)
133 +// mx["command_packets_dropped"] = int64(stats.v1.CMDDrops)
134 +// mx["client_log_records_dropped"] = int64(stats.v1.LogDrops)
135 +// default:
136 +// return errors.New("invalid server stats reply")
137 +// }
138 +//
139 +// //c.addStatsChartsOnce.Do(func() { c.addServerStatsCharts(stats) })
140 +//
141 +// return nil
142 +//}
143
144 func boolToInt(v bool) int64 {
145 if v {
src/go/plugin/go.d/modules/megacli/collect_bbu.go
+7
@@ -29,6 +29,11 @@ func (m *MegaCli) collectBBU(mx map[string]int64) error {
29 return err
30 }
31
32 + if len(bbus) == 0 {
33 + m.Debugf("no BBUs found")
34 + return nil
35 + }
36 +
37 for _, bbu := range bbus {
38 if !m.bbu[bbu.adapterNumber] {
39 m.bbu[bbu.adapterNumber] = true
@@ -43,6 +48,8 @@ func (m *MegaCli) collectBBU(mx map[string]int64) error {
48 writeInt(mx, px+"cycle_count", bbu.cycleCount)
49 }
50
51 + m.Debugf("found %d BBUs", len(m.bbu))
52 +
53 return nil
54 }
55
src/go/plugin/go.d/modules/megacli/collect_phys_drives.go
+9
@@ -5,6 +5,7 @@ package megacli
5 import (
6 "bufio"
7 "bytes"
8 + "errors"
9 "fmt"
10 "strings"
11 )
@@ -45,6 +46,11 @@ func (m *MegaCli) collectPhysDrives(mx map[string]int64) error {
46 if err != nil {
47 return err
48 }
49 + if len(adapters) == 0 {
50 + return errors.New("no adapters found")
51 + }
52 +
53 + var drives int
54
55 for _, ad := range adapters {
56 if !m.adapters[ad.number] {
@@ -64,6 +70,7 @@ func (m *MegaCli) collectPhysDrives(mx map[string]int64) error {
70 m.adapters[pd.wwn] = true
71 m.addPhysDriveCharts(pd)
72 }
73 + drives++
74
75 px := fmt.Sprintf("phys_drive_%s_", pd.wwn)
76
@@ -72,6 +79,8 @@ func (m *MegaCli) collectPhysDrives(mx map[string]int64) error {
79 }
80 }
81
82 + m.Debugf("found %d adapters, %d physical drives", len(m.adapters), drives)
83 +
84 return nil
85 }
86
src/go/plugin/go.d/modules/smartctl/smart_device.go
-4
@@ -27,10 +27,6 @@ func (d *smartDevice) deviceType() string {
27 return d.data.Get("device.type").String()
28 }
29
30 -func (d *smartDevice) deviceProtocol() string {
31 - return d.data.Get("device.protocol").String()
32 -}
33 -
30 func (d *smartDevice) serialNumber() string {
31 return d.data.Get("serial_number").String()
32 }