mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
feat(metrics): report version of client, metanode, datanode, authnode, lcnode, objectnode
Signed-off-by: W9068822 <v-lijianrong1@oppo.com>
This commit is contained in:
parent
8459b9372b
commit
d25840b71f
@ -30,6 +30,7 @@ import (
|
||||
"github.com/cubefs/cubefs/util/config"
|
||||
"github.com/cubefs/cubefs/util/cryptoutil"
|
||||
"github.com/cubefs/cubefs/util/errors"
|
||||
"github.com/cubefs/cubefs/util/exporter"
|
||||
"github.com/cubefs/cubefs/util/log"
|
||||
)
|
||||
|
||||
@ -225,7 +226,7 @@ func (m *Server) Start(cfg *config.Config) (err error) {
|
||||
m.cluster.PKIKey.EnableHTTPS = false
|
||||
}
|
||||
m.authProxy = m.newAuthProxy()
|
||||
|
||||
exporter.RegistConsul(m.clusterName, cfg.GetString("role"), cfg)
|
||||
m.cluster.scheduleTask()
|
||||
m.startHTTPService()
|
||||
m.wg.Add(1)
|
||||
|
||||
@ -515,6 +515,9 @@ func main() {
|
||||
|
||||
exporter.Init(ModuleName, cfg)
|
||||
exporter.RegistConsul(super.ClusterName(), ModuleName, cfg)
|
||||
metric := exporter.NewVersionMetrics(ModuleName)
|
||||
defer metric.Stop()
|
||||
go metric.Start()
|
||||
|
||||
err = log.OutputPid(opt.Logpath, ModuleName)
|
||||
if err != nil {
|
||||
|
||||
@ -41,6 +41,7 @@ import (
|
||||
"github.com/cubefs/cubefs/util/auditlog"
|
||||
"github.com/cubefs/cubefs/util/config"
|
||||
"github.com/cubefs/cubefs/util/errors"
|
||||
"github.com/cubefs/cubefs/util/exporter"
|
||||
"github.com/cubefs/cubefs/util/log"
|
||||
sysutil "github.com/cubefs/cubefs/util/sys"
|
||||
"github.com/cubefs/cubefs/util/ump"
|
||||
@ -339,6 +340,10 @@ func main() {
|
||||
}
|
||||
|
||||
interceptSignal(server)
|
||||
exporter.Init(role, cfg)
|
||||
versionMetric := exporter.NewVersionMetrics(role)
|
||||
go versionMetric.Start()
|
||||
defer versionMetric.Stop()
|
||||
err = server.Start(cfg)
|
||||
if err != nil {
|
||||
log.LogFlush()
|
||||
|
||||
@ -232,7 +232,6 @@ func doStart(server common.Server, cfg *config.Config) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
exporter.Init(ModuleName, cfg)
|
||||
s.registerMetrics()
|
||||
s.register(cfg)
|
||||
|
||||
|
||||
@ -88,10 +88,9 @@ func doStart(s common.Server, cfg *config.Config) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
exporter.Init(ModuleName, cfg)
|
||||
exporter.RegistConsul(l.clusterID, ModuleName, cfg)
|
||||
|
||||
log.LogInfo("lcnode start successfully")
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@ -159,7 +159,6 @@ func doStart(s common.Server, cfg *config.Config) (err error) {
|
||||
|
||||
go m.startUpdateNodeInfo()
|
||||
|
||||
exporter.Init(cfg.GetString("role"), cfg)
|
||||
m.startStat()
|
||||
|
||||
// check local partition compare with master ,if lack,then not start
|
||||
|
||||
@ -422,7 +422,6 @@ func handleStart(s common.Server, cfg *config.Config) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
exporter.Init(cfg.GetString("role"), cfg)
|
||||
exporter.RegistConsul(ci.Cluster, cfg.GetString("role"), cfg)
|
||||
|
||||
log.LogInfo("object subsystem start success")
|
||||
|
||||
@ -24,3 +24,31 @@ func DumpVersion(role string) string {
|
||||
CommitID,
|
||||
runtime.Version(), runtime.GOOS, runtime.GOARCH, BuildTime)
|
||||
}
|
||||
|
||||
type VersionInfo struct {
|
||||
Role string
|
||||
Version string
|
||||
Branch string
|
||||
Commit string
|
||||
Build string
|
||||
}
|
||||
|
||||
func (v VersionInfo) ToMap() map[string]string {
|
||||
return map[string]string{
|
||||
"role": v.Role,
|
||||
"version": v.Version,
|
||||
"branch": v.Branch,
|
||||
"commit": v.Commit,
|
||||
"build": v.Build,
|
||||
}
|
||||
}
|
||||
|
||||
func GetVersion(role string) VersionInfo {
|
||||
return VersionInfo{
|
||||
Role: role,
|
||||
Version: Version,
|
||||
Branch: BranchName,
|
||||
Commit: CommitID,
|
||||
Build: fmt.Sprintf("%s %s %s %s\n", runtime.Version(), runtime.GOOS, runtime.GOARCH, BuildTime),
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,12 +46,13 @@ const (
|
||||
ChSize = 1024 * 10 // collect chan size
|
||||
|
||||
// monitor label name
|
||||
Vol = "vol"
|
||||
Disk = "disk"
|
||||
PartId = "partid"
|
||||
Op = "op"
|
||||
Type = "type"
|
||||
Err = "err"
|
||||
Vol = "vol"
|
||||
Disk = "disk"
|
||||
PartId = "partid"
|
||||
Op = "op"
|
||||
Type = "type"
|
||||
Err = "err"
|
||||
Version = "version"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
57
util/exporter/version.go
Normal file
57
util/exporter/version.go
Normal file
@ -0,0 +1,57 @@
|
||||
package exporter
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/cubefs/cubefs/proto"
|
||||
"github.com/cubefs/cubefs/util/log"
|
||||
)
|
||||
|
||||
const StatPeriod = time.Minute * time.Duration(1)
|
||||
|
||||
type VersionMetrics struct {
|
||||
stopC chan struct{}
|
||||
Metric *Counter
|
||||
moduleName string
|
||||
statPeriod time.Duration
|
||||
}
|
||||
|
||||
func NewVersionMetrics(module string) *VersionMetrics {
|
||||
return &VersionMetrics{
|
||||
moduleName: module,
|
||||
Metric: NewCounter(Version),
|
||||
stopC: make(chan struct{}),
|
||||
statPeriod: StatPeriod,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *VersionMetrics) SetStatPeriod(period time.Duration) {
|
||||
m.statPeriod = period
|
||||
}
|
||||
|
||||
func (m *VersionMetrics) Start() {
|
||||
ticker := time.NewTicker(m.statPeriod)
|
||||
for {
|
||||
select {
|
||||
case <-m.stopC:
|
||||
ticker.Stop()
|
||||
log.LogInfof("stop version metrics ticker")
|
||||
return
|
||||
case <-ticker.C:
|
||||
m.doStat()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (m *VersionMetrics) Stop() {
|
||||
close(m.stopC)
|
||||
log.LogInfof("stop version metrics")
|
||||
}
|
||||
|
||||
func (m *VersionMetrics) doStat() {
|
||||
m.setVersionMetrics()
|
||||
}
|
||||
|
||||
func (m *VersionMetrics) setVersionMetrics() {
|
||||
m.Metric.AddWithLabels(1, proto.GetVersion(m.moduleName).ToMap())
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user