Kaynağa Gözat

chore: systematic syncthing_build_info metric

Signed-off-by: Jakob Borg <[email protected]>
Jakob Borg 1 hafta önce
ebeveyn
işleme
b594b7491f

+ 2 - 0
cmd/infra/stcrashreceiver/main.go

@@ -101,6 +101,8 @@ func main() {
 	}
 
 	log.SetOutput(os.Stdout)
+	log.Println(build.LongVersionFor("stcrashreceiver"))
+
 	if err := http.ListenAndServe(params.Listen, mux); err != nil {
 		log.Fatalln("HTTP serve:", err)
 	}

+ 3 - 0
cmd/infra/strelaypoolsrv/main.go

@@ -27,6 +27,7 @@ import (
 
 	"github.com/syncthing/syncthing/cmd/infra/strelaypoolsrv/auto"
 	"github.com/syncthing/syncthing/lib/assets"
+	"github.com/syncthing/syncthing/lib/build"
 	"github.com/syncthing/syncthing/lib/geoip"
 	"github.com/syncthing/syncthing/lib/protocol"
 	"github.com/syncthing/syncthing/lib/rand"
@@ -146,6 +147,8 @@ func main() {
 
 	flag.Parse()
 
+	log.Println(build.LongVersionFor("strelaypoolsrv"))
+
 	requests = make(chan request, requestQueueLen)
 	geoip, err := geoip.NewGeoLite2CityProvider(context.Background(), geoipAccountID, geoipLicenseKey, os.TempDir())
 	if err != nil {

+ 3 - 0
cmd/infra/stupgrades/main.go

@@ -25,6 +25,7 @@ import (
 	"github.com/alecthomas/kong"
 	"github.com/prometheus/client_golang/prometheus/promhttp"
 	"github.com/syncthing/syncthing/internal/slogutil"
+	"github.com/syncthing/syncthing/lib/build"
 	"github.com/syncthing/syncthing/lib/httpcache"
 	"github.com/syncthing/syncthing/lib/upgrade"
 )
@@ -44,6 +45,8 @@ func main() {
 		Level: slog.LevelInfo,
 	})))
 
+	slog.Info(build.LongVersionFor("stupgrades"))
+
 	if err := server(&params); err != nil {
 		fmt.Printf("Error: %v\n", err)
 		os.Exit(1)

+ 3 - 0
cmd/infra/ursrv/main.go

@@ -13,6 +13,7 @@ import (
 
 	"github.com/alecthomas/kong"
 	"github.com/syncthing/syncthing/cmd/infra/ursrv/serve"
+	"github.com/syncthing/syncthing/lib/build"
 )
 
 type CLI struct {
@@ -24,6 +25,8 @@ func main() {
 		Level: slog.LevelInfo,
 	})))
 
+	slog.Info(build.LongVersionFor("ursrv"))
+
 	var cli CLI
 	ctx := kong.Parse(&cli)
 	if err := ctx.Run(); err != nil {

+ 0 - 3
cmd/stdiscosrv/main.go

@@ -14,7 +14,6 @@ import (
 	"net/http"
 	"os"
 	"os/signal"
-	"runtime"
 	"time"
 
 	"github.com/alecthomas/kong"
@@ -96,8 +95,6 @@ func main() {
 	}
 	slog.Info(build.LongVersionFor("stdiscosrv"))
 
-	buildInfo.WithLabelValues(build.Version, runtime.Version(), build.User, build.Date.UTC().Format("2006-01-02T15:04:05Z")).Set(1)
-
 	var cert tls.Certificate
 	if !cli.HTTP {
 		var err error

+ 1 - 9
cmd/stdiscosrv/stats.go

@@ -11,14 +11,6 @@ import (
 )
 
 var (
-	buildInfo = prometheus.NewGaugeVec(
-		prometheus.GaugeOpts{
-			Namespace: "syncthing",
-			Subsystem: "discovery",
-			Name:      "build_info",
-			Help:      "A metric with a constant '1' value labeled by version, goversion, builduser and builddate from which stdiscosrv was built.",
-		}, []string{"version", "goversion", "builduser", "builddate"})
-
 	apiRequestsTotal = prometheus.NewCounterVec(
 		prometheus.CounterOpts{
 			Namespace: "syncthing",
@@ -132,7 +124,7 @@ const (
 )
 
 func init() {
-	prometheus.MustRegister(buildInfo,
+	prometheus.MustRegister(
 		apiRequestsTotal, apiRequestsSeconds,
 		lookupRequestsTotal, announceRequestsTotal,
 		replicationSendsTotal, replicationRecvsTotal,

+ 24 - 1
lib/build/build.go

@@ -16,8 +16,18 @@ import (
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/prometheus/client_golang/prometheus"
+	"github.com/prometheus/client_golang/prometheus/promauto"
 )
 
+var buildInfo = promauto.NewGaugeVec(prometheus.GaugeOpts{
+	Namespace: "syncthing",
+	Subsystem: "build",
+	Name:      "info",
+	Help:      "A metric with a constant '1' value labeled by version information from when the binary was built.",
+}, []string{"program", "version", "codename", "goversion", "builduser", "builddate", "tags"})
+
 const Codename = "Hafnium Hornet"
 
 var (
@@ -98,9 +108,22 @@ func LongVersionFor(program string) string {
 	date := Date.UTC().Format("2006-01-02 15:04:05 MST")
 	v := fmt.Sprintf(`%s %s "%s" (%s %s-%s) %s@%s %s`, program, Version, Codename, runtime.Version(), runtime.GOOS, runtime.GOARCH, User, Host, date)
 
-	if tags := TagsList(); len(tags) > 0 {
+	tags := TagsList()
+	if len(tags) > 0 {
 		v = fmt.Sprintf("%s [%s]", v, strings.Join(tags, ", "))
 	}
+
+	buildInfo.Reset()
+	buildInfo.With(prometheus.Labels{
+		"program":   program,
+		"version":   Version,
+		"codename":  Codename,
+		"goversion": runtime.Version(),
+		"builduser": fmt.Sprintf("%s@%s", User, Host),
+		"builddate": Date.UTC().Format("2006-01-02 15:04:05 MST"),
+		"tags":      strings.Join(tags, ","),
+	}).Set(1)
+
 	return v
 }
 

+ 1 - 1
test/h2/config.xml

@@ -1,4 +1,4 @@
-<configuration version="51">
+<configuration version="52">
     <folder id="default" label="" path="s2" type="sendreceive" rescanIntervalS="60" fsWatcherEnabled="false" fsWatcherDelayS="10" fsWatcherTimeoutS="0" ignorePerms="false" autoNormalize="true">
         <filesystemType>basic</filesystemType>
         <device id="I6KAH76-66SLLLB-5PFXSOA-UFJCDZC-YAOMLEK-CP2GB32-BV5RQST-3PSROAU" introducedBy="">