diff --git a/mvcc/kvstore_compaction.go b/mvcc/kvstore_compaction.go index 10035e897a8..d0cff982892 100644 --- a/mvcc/kvstore_compaction.go +++ b/mvcc/kvstore_compaction.go @@ -27,6 +27,7 @@ func (s *store) scheduleCompaction(compactMainRev int64, keep map[revision]struc defer func() { dbCompactionTotalMs.Observe(float64(time.Since(totalStart) / time.Millisecond)) }() keyCompactions := 0 defer func() { dbCompactionKeysCounter.Add(float64(keyCompactions)) }() + defer func() { dbCompactionLast.Set(float64(time.Now().Unix())) }() end := make([]byte, 8) binary.BigEndian.PutUint64(end, uint64(compactMainRev+1)) diff --git a/mvcc/metrics.go b/mvcc/metrics.go index 42932c40d34..580e66fd896 100644 --- a/mvcc/metrics.go +++ b/mvcc/metrics.go @@ -167,6 +167,14 @@ var ( Buckets: prometheus.ExponentialBuckets(100, 2, 14), }) + dbCompactionLast = prometheus.NewGauge( + prometheus.GaugeOpts{ + Namespace: "etcd_debugging", + Subsystem: "mvcc", + Name: "db_compaction_last", + Help: "The unix time of the last db compaction. Resets to 0 on start.", + }) + dbCompactionKeysCounter = prometheus.NewCounter( prometheus.CounterOpts{ Namespace: "etcd_debugging", @@ -324,6 +332,7 @@ func init() { prometheus.MustRegister(indexCompactionPauseMs) prometheus.MustRegister(dbCompactionPauseMs) prometheus.MustRegister(dbCompactionTotalMs) + prometheus.MustRegister(dbCompactionLast) prometheus.MustRegister(dbCompactionKeysCounter) prometheus.MustRegister(dbTotalSize) prometheus.MustRegister(dbTotalSizeDebug)