zrepl/internal/version/version.go
2024-10-18 19:21:17 +02:00

53 lines
1.2 KiB
Go

package version
import (
"fmt"
"runtime"
"github.com/prometheus/client_golang/prometheus"
)
var (
zreplVersion string // set by build infrastructure
)
type ZreplVersionInformation struct {
Version string
RuntimeGo string
RuntimeGOOS string
RuntimeGOARCH string
RUNTIMECompiler string
}
func NewZreplVersionInformation() *ZreplVersionInformation {
return &ZreplVersionInformation{
Version: zreplVersion,
RuntimeGo: runtime.Version(),
RuntimeGOOS: runtime.GOOS,
RuntimeGOARCH: runtime.GOARCH,
RUNTIMECompiler: runtime.Compiler,
}
}
func (i *ZreplVersionInformation) String() string {
return fmt.Sprintf("zrepl version=%s go=%s GOOS=%s GOARCH=%s Compiler=%s",
i.Version, i.RuntimeGo, i.RuntimeGOOS, i.RuntimeGOARCH, i.RUNTIMECompiler)
}
var prometheusMetric = prometheus.NewGauge(
prometheus.GaugeOpts{
Namespace: "zrepl",
Name: "start_time",
Help: "zrepl daemon start time and version",
ConstLabels: map[string]string{
"raw": zreplVersion,
"version_info": NewZreplVersionInformation().String(),
},
},
)
func PrometheusRegister(r prometheus.Registerer) {
r.MustRegister(prometheusMetric)
prometheusMetric.SetToCurrentTime()
}