From 10af017f02dd95cfa3659f1b1a95a0de09be491a Mon Sep 17 00:00:00 2001 From: Jordan Krage Date: Thu, 30 Nov 2023 12:47:44 -0600 Subject: [PATCH] pkg/services: add ver & sha params to HealthChecker (#265) --- pkg/loop/server.go | 2 +- pkg/services/health.go | 27 +++++++++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/pkg/loop/server.go b/pkg/loop/server.go index 1f17dea715..db856f6362 100644 --- a/pkg/loop/server.go +++ b/pkg/loop/server.go @@ -85,7 +85,7 @@ func (s *Server) start() error { return fmt.Errorf("error starting prometheus server: %w", err) } - s.checker = services.NewChecker() + s.checker = services.NewChecker("", "") if err := s.checker.Start(); err != nil { return fmt.Errorf("error starting health checker: %w", err) } diff --git a/pkg/services/health.go b/pkg/services/health.go index fad971a6ca..541783a5aa 100644 --- a/pkg/services/health.go +++ b/pkg/services/health.go @@ -37,6 +37,8 @@ type HealthChecker struct { chStop chan struct{} chDone chan struct{} + ver, sha string + servicesMu sync.RWMutex services map[string]HealthReporter @@ -70,8 +72,23 @@ var ( ) ) -func NewChecker() *HealthChecker { +func NewChecker(ver, sha string) *HealthChecker { + if ver == "" || sha == "" { + if bi, ok := debug.ReadBuildInfo(); ok { + if ver == "" { + ver = bi.Main.Version + } + if sha == "" { + sha = bi.Main.Sum + } + } + } + if len(sha) > 7 { + sha = sha[:7] + } return &HealthChecker{ + ver: ver, + sha: sha, services: make(map[string]HealthReporter, 10), healthy: make(map[string]error, 10), ready: make(map[string]error, 10), @@ -82,13 +99,7 @@ func NewChecker() *HealthChecker { func (c *HealthChecker) Start() error { return c.StartOnce("HealthCheck", func() error { - if bi, ok := debug.ReadBuildInfo(); ok { - hash := bi.Main.Sum - if len(hash) > 7 { - hash = hash[:7] - } - version.WithLabelValues(bi.Main.Version, hash).Inc() - } + version.WithLabelValues(c.ver, c.sha).Inc() // update immediately c.update()