chore(stupgrades): expose latest release as a metric
This commit is contained in:
@@ -258,9 +258,10 @@ func filterForCompabitility(rels []upgrade.Release, ua, osv string) []upgrade.Re
|
|||||||
}
|
}
|
||||||
|
|
||||||
type cachedReleases struct {
|
type cachedReleases struct {
|
||||||
url string
|
url string
|
||||||
mut sync.RWMutex
|
mut sync.RWMutex
|
||||||
current []upgrade.Release
|
current []upgrade.Release
|
||||||
|
latestRel, latestPre string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *cachedReleases) Releases() []upgrade.Release {
|
func (c *cachedReleases) Releases() []upgrade.Release {
|
||||||
@@ -274,8 +275,26 @@ func (c *cachedReleases) Update(ctx context.Context) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
latestRel, latestPre := "", ""
|
||||||
|
for _, rel := range rels {
|
||||||
|
if !rel.Prerelease && latestRel == "" {
|
||||||
|
latestRel = rel.Tag
|
||||||
|
}
|
||||||
|
if rel.Prerelease && latestPre == "" {
|
||||||
|
latestPre = rel.Tag
|
||||||
|
}
|
||||||
|
if latestRel != "" && latestPre != "" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
c.mut.Lock()
|
c.mut.Lock()
|
||||||
c.current = rels
|
c.current = rels
|
||||||
|
if latestRel != c.latestRel || latestPre != c.latestPre {
|
||||||
|
metricLatestReleaseInfo.DeleteLabelValues(c.latestRel, c.latestPre)
|
||||||
|
metricLatestReleaseInfo.WithLabelValues(latestRel, latestPre).Set(1)
|
||||||
|
c.latestRel = latestRel
|
||||||
|
c.latestPre = latestPre
|
||||||
|
}
|
||||||
c.mut.Unlock()
|
c.mut.Unlock()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,4 +27,10 @@ var (
|
|||||||
Subsystem: "upgrade",
|
Subsystem: "upgrade",
|
||||||
Name: "http_requests",
|
Name: "http_requests",
|
||||||
}, []string{"target", "result"})
|
}, []string{"target", "result"})
|
||||||
|
metricLatestReleaseInfo = promauto.NewGaugeVec(prometheus.GaugeOpts{
|
||||||
|
Namespace: "syncthing",
|
||||||
|
Subsystem: "upgrade",
|
||||||
|
Name: "latest_release_info",
|
||||||
|
Help: "Release information",
|
||||||
|
}, []string{"latest_release", "latest_pre"})
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user