master
go 32 lines 657 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package powerstore
4
5 import "sync"
6
7 func (c *Collector) collectDriveWear() {
8 var wg sync.WaitGroup
9
10 for id, drv := range c.discovered.drives {
11 wg.Add(1)
12 go func(id, name string) {
13 defer wg.Done()
14 c.sem <- struct{}{}
15 defer func() { <-c.sem }()
16
17 wm, err := c.client.WearMetricsByDrive(id)
18 if err != nil {
19 c.Warningf("error collecting drive %s wear metrics: %v", id, err)
20 return
21 }
22 if len(wm) == 0 {
23 return
24 }
25
26 last := wm[len(wm)-1]
27 c.mx.drive.enduranceRemaining.WithLabelValues(name).Observe(float64(last.PercentEnduranceRemaining))
28 }(id, drv.Name)
29 }
30
31 wg.Wait()
32 }