forked from datarhei/core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdisk.go
50 lines (41 loc) · 1.24 KB
/
disk.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package prometheus
import (
"github.com/datarhei/core/v16/monitor/metric"
"github.com/prometheus/client_golang/prometheus"
)
type diskCollector struct {
core string
collector metric.Reader
diskTotalDesc *prometheus.Desc
diskUsageDesc *prometheus.Desc
}
func NewDiskCollector(core string, c metric.Reader) prometheus.Collector {
return &diskCollector{
core: core,
collector: c,
diskTotalDesc: prometheus.NewDesc(
"disk_total_bytes",
"disk_total_bytes",
[]string{"core", "path"}, nil),
diskUsageDesc: prometheus.NewDesc(
"disk_usage_bytes",
"disk_usage_bytes",
[]string{"core", "path"}, nil),
}
}
func (c *diskCollector) Describe(ch chan<- *prometheus.Desc) {
ch <- c.diskTotalDesc
ch <- c.diskUsageDesc
}
func (c *diskCollector) Collect(ch chan<- prometheus.Metric) {
metrics := c.collector.Collect([]metric.Pattern{
metric.NewPattern("disk_total"),
metric.NewPattern("disk_usage"),
})
for _, m := range metrics.Values("disk_total") {
ch <- prometheus.MustNewConstMetric(c.diskTotalDesc, prometheus.GaugeValue, m.Val(), c.core, m.L("path"))
}
for _, m := range metrics.Values("disk_usage") {
ch <- prometheus.MustNewConstMetric(c.diskUsageDesc, prometheus.GaugeValue, m.Val(), c.core, m.L("path"))
}
}