diff --git a/cmd/mount.go b/cmd/mount.go index 34a36a381..a9f68a22e 100644 --- a/cmd/mount.go +++ b/cmd/mount.go @@ -412,6 +412,9 @@ func getChunkConf(c *cli.Context, format *meta.Format) *chunk.Config { func initBackgroundTasks(c *cli.Context, vfsConf *vfs.Config, metaConf *meta.Config, m meta.Meta, blob object.ObjectStorage, registerer prometheus.Registerer, registry *prometheus.Registry) { metricsAddr := exposeMetrics(c, registerer, registry) m.InitMetrics(registerer) + if !metaConf.NoBGJob { + m.InitSharedMetrics(registerer) + } vfs.InitMetrics(registerer) vfsConf.Port.PrometheusAgent = metricsAddr if c.IsSet("consul") { diff --git a/pkg/meta/base.go b/pkg/meta/base.go index fffbbc3f6..263ff1533 100644 --- a/pkg/meta/base.go +++ b/pkg/meta/base.go @@ -264,9 +264,9 @@ type baseMeta struct { groupQuotas map[uint64]*Quota // gid -> quota quotaMetricMu sync.Mutex - dirQuotaMetricKeys map[uint64] bool - userQuotaMetricKeys map[uint64] bool - groupQuotaMetricKeys map[uint64] bool + dirQuotaMetricKeys map[uint64]bool + userQuotaMetricKeys map[uint64]bool + groupQuotaMetricKeys map[uint64]bool freeMu sync.Mutex freeInodes freeID @@ -459,21 +459,16 @@ func newBaseMeta(addr string, conf *Config) *baseMeta { } } -func (m *baseMeta) InitMetrics(reg prometheus.Registerer) { +// InitSharedMetrics initialize the metrics that are same for all clients. +func (m *baseMeta) InitSharedMetrics(reg prometheus.Registerer) { if reg == nil { return } + reg.MustRegister(m.usedSpaceG) reg.MustRegister(m.usedInodesG) reg.MustRegister(m.totalSpaceG) reg.MustRegister(m.totalInodesG) - reg.MustRegister(m.txDist) - reg.MustRegister(m.txRestart) - reg.MustRegister(m.opDist) - reg.MustRegister(m.opCount) - reg.MustRegister(m.opDuration) - - // Register quota metrics reg.MustRegister(m.dirQuotaMaxSpaceG) reg.MustRegister(m.dirQuotaMaxInodesG) reg.MustRegister(m.dirQuotaUsedSpaceG) @@ -516,6 +511,17 @@ func (m *baseMeta) InitMetrics(reg prometheus.Registerer) { }() } +func (m *baseMeta) InitMetrics(reg prometheus.Registerer) { + if reg == nil { + return + } + reg.MustRegister(m.txDist) + reg.MustRegister(m.txRestart) + reg.MustRegister(m.opDist) + reg.MustRegister(m.opCount) + reg.MustRegister(m.opDuration) +} + func (m *baseMeta) timeit(method string, start time.Time) { used := time.Since(start).Seconds() m.opDist.Observe(used) diff --git a/pkg/meta/interface.go b/pkg/meta/interface.go index 8c4a278b9..64ff053f7 100644 --- a/pkg/meta/interface.go +++ b/pkg/meta/interface.go @@ -526,6 +526,7 @@ type Meta interface { // getBase return the base engine. getBase() *baseMeta InitMetrics(registerer prometheus.Registerer) + InitSharedMetrics(registerer prometheus.Registerer) SetFacl(ctx Context, ino Ino, aclType uint8, n *aclAPI.Rule) syscall.Errno GetFacl(ctx Context, ino Ino, aclType uint8, n *aclAPI.Rule) syscall.Errno