Skip to content

Commit 52293f0

Browse files
committed
metrics: export versions as Prometheus metrics
Extern various versions info as labels over dedicated Prometheus metrics called 'smb_metrics_status'. Signed-off-by: Shachar Sharon <[email protected]>
1 parent 478d7e0 commit 52293f0

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

internal/metrics/collectors.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ var (
1212

1313
func (sme *smbMetricsExporter) register() error {
1414
cols := []prometheus.Collector{
15+
sme.newSmbVersionsCollector(),
1516
sme.newSmbSharesCollector(),
1617
sme.newSmbLocksCollector(),
1718
}
@@ -36,6 +37,48 @@ func (col *smbCollector) Describe(ch chan<- *prometheus.Desc) {
3637
}
3738
}
3839

40+
type smbVersionsCollector struct {
41+
smbCollector
42+
clnt *kclient
43+
}
44+
45+
func (col *smbVersionsCollector) Collect(ch chan<- prometheus.Metric) {
46+
status := 0
47+
vers, err := ResolveVersions(col.clnt)
48+
if err != nil {
49+
status = 1
50+
}
51+
ch <- prometheus.MustNewConstMetric(
52+
col.dsc[0],
53+
prometheus.GaugeValue,
54+
float64(status),
55+
vers.Version,
56+
vers.CommitID,
57+
vers.SambaImage,
58+
vers.SambaVersion,
59+
vers.CtdbVersion,
60+
)
61+
}
62+
63+
func (sme *smbMetricsExporter) newSmbVersionsCollector() prometheus.Collector {
64+
col := &smbVersionsCollector{}
65+
col.sme = sme
66+
col.clnt, _ = newKClient()
67+
col.dsc = []*prometheus.Desc{
68+
prometheus.NewDesc(
69+
collectorName("metrics", "status"),
70+
"Current metrics-collector status versions",
71+
[]string{
72+
"version",
73+
"commitid",
74+
"sambaimage",
75+
"sambavers",
76+
"ctdbvers",
77+
}, nil),
78+
}
79+
return col
80+
}
81+
3982
type smbSharesCollector struct {
4083
smbCollector
4184
}

0 commit comments

Comments
 (0)