From 64c4c39132c3a61b25d1f51a344b6e49bfc0cbd9 Mon Sep 17 00:00:00 2001 From: Joe Groocock Date: Sun, 6 Feb 2022 14:01:45 +0000 Subject: [PATCH] systemd: Expose systemd minor version systemd patch versions are as important as the major version number; they indicate security or bug fixes or other behavioural changes between versions. Use float64 over float32 as the rounding error with float32 rendered 250.3 as 250.3000030517578 in my testing. Signed-off-by: Joe Groocock Signed-off-by: Joe Groocock --- collector/systemd_linux.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/collector/systemd_linux.go b/collector/systemd_linux.go index 495aa560..b114e3b8 100644 --- a/collector/systemd_linux.go +++ b/collector/systemd_linux.go @@ -72,7 +72,7 @@ type systemdCollector struct { socketCurrentConnectionsDesc *prometheus.Desc socketRefusedConnectionsDesc *prometheus.Desc systemdVersionDesc *prometheus.Desc - systemdVersion int + systemdVersion float64 unitIncludePattern *regexp.Regexp unitExcludePattern *regexp.Regexp logger log.Logger @@ -488,7 +488,7 @@ func filterUnits(units []unit, includePattern, excludePattern *regexp.Regexp, lo return filtered } -func getSystemdVersion(logger log.Logger) int { +func getSystemdVersion(logger log.Logger) float64 { conn, err := newSystemdDbusConn() if err != nil { level.Warn(logger).Log("msg", "Unable to get systemd dbus connection, defaulting systemd version to 0", "err", err) @@ -500,9 +500,9 @@ func getSystemdVersion(logger log.Logger) int { level.Warn(logger).Log("msg", "Unable to get systemd version property, defaulting to 0") return 0 } - re := regexp.MustCompile(`[0-9][0-9][0-9]`) + re := regexp.MustCompile(`[0-9][0-9][0-9](\.[0-9]+)?`) version = re.FindString(version) - v, err := strconv.Atoi(version) + v, err := strconv.ParseFloat(version, 64) if err != nil { level.Warn(logger).Log("msg", "Got invalid systemd version", "version", version) return 0