master
go 34 lines 1.13 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package powerstore
4
5 import "sync"
6
7 func (c *Collector) collectFileSystems() {
8 var wg sync.WaitGroup
9
10 for id, fs := range c.discovered.fileSystems {
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 pm, err := c.client.PerformanceMetricsByFileSystem(id)
18 if err != nil {
19 c.Warningf("error collecting filesystem %s perf metrics: %v", id, err)
20 } else if len(pm) > 0 {
21 last := pm[len(pm)-1]
22 c.mx.fileSystem.perf.readIops.WithLabelValues(name).Observe(last.ReadIops)
23 c.mx.fileSystem.perf.writeIops.WithLabelValues(name).Observe(last.WriteIops)
24 c.mx.fileSystem.perf.readBandwidth.WithLabelValues(name).Observe(last.ReadBandwidth)
25 c.mx.fileSystem.perf.writeBandwidth.WithLabelValues(name).Observe(last.WriteBandwidth)
26 c.mx.fileSystem.perf.avgReadLatency.WithLabelValues(name).Observe(last.AvgReadLatency)
27 c.mx.fileSystem.perf.avgWriteLatency.WithLabelValues(name).Observe(last.AvgWriteLatency)
28 c.mx.fileSystem.perf.avgLatency.WithLabelValues(name).Observe(last.AvgLatency)
29 }
30 }(id, fs.Name)
31 }
32
33 wg.Wait()
34 }