mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #11126 from jingyih/add_metric_store_revision
mvcc: add store revision metrics
This commit is contained in:
commit
fc8f29bc40
@ -355,19 +355,7 @@ func (s *store) Restore(b backend.Backend) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *store) restore() error {
|
func (s *store) restore() error {
|
||||||
b := s.b
|
s.setupMetricsReporter()
|
||||||
reportDbTotalSizeInBytesMu.Lock()
|
|
||||||
reportDbTotalSizeInBytes = func() float64 { return float64(b.Size()) }
|
|
||||||
reportDbTotalSizeInBytesMu.Unlock()
|
|
||||||
reportDbTotalSizeInBytesDebugMu.Lock()
|
|
||||||
reportDbTotalSizeInBytesDebug = func() float64 { return float64(b.Size()) }
|
|
||||||
reportDbTotalSizeInBytesDebugMu.Unlock()
|
|
||||||
reportDbTotalSizeInUseInBytesMu.Lock()
|
|
||||||
reportDbTotalSizeInUseInBytes = func() float64 { return float64(b.SizeInUse()) }
|
|
||||||
reportDbTotalSizeInUseInBytesMu.Unlock()
|
|
||||||
reportDbOpenReadTxNMu.Lock()
|
|
||||||
reportDbOpenReadTxN = func() float64 { return float64(b.OpenReadTxN()) }
|
|
||||||
reportDbOpenReadTxNMu.Unlock()
|
|
||||||
|
|
||||||
min, max := newRevBytes(), newRevBytes()
|
min, max := newRevBytes(), newRevBytes()
|
||||||
revToBytes(revision{main: 1}, min)
|
revToBytes(revision{main: 1}, min)
|
||||||
@ -579,6 +567,36 @@ func (s *store) ConsistentIndex() uint64 {
|
|||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *store) setupMetricsReporter() {
|
||||||
|
b := s.b
|
||||||
|
reportDbTotalSizeInBytesMu.Lock()
|
||||||
|
reportDbTotalSizeInBytes = func() float64 { return float64(b.Size()) }
|
||||||
|
reportDbTotalSizeInBytesMu.Unlock()
|
||||||
|
reportDbTotalSizeInBytesDebugMu.Lock()
|
||||||
|
reportDbTotalSizeInBytesDebug = func() float64 { return float64(b.Size()) }
|
||||||
|
reportDbTotalSizeInBytesDebugMu.Unlock()
|
||||||
|
reportDbTotalSizeInUseInBytesMu.Lock()
|
||||||
|
reportDbTotalSizeInUseInBytes = func() float64 { return float64(b.SizeInUse()) }
|
||||||
|
reportDbTotalSizeInUseInBytesMu.Unlock()
|
||||||
|
reportDbOpenReadTxNMu.Lock()
|
||||||
|
reportDbOpenReadTxN = func() float64 { return float64(b.OpenReadTxN()) }
|
||||||
|
reportDbOpenReadTxNMu.Unlock()
|
||||||
|
reportCurrentRevMu.Lock()
|
||||||
|
reportCurrentRev = func() float64 {
|
||||||
|
s.revMu.RLock()
|
||||||
|
defer s.revMu.RUnlock()
|
||||||
|
return float64(s.currentRev)
|
||||||
|
}
|
||||||
|
reportCurrentRevMu.Unlock()
|
||||||
|
reportCompactRevMu.Lock()
|
||||||
|
reportCompactRev = func() float64 {
|
||||||
|
s.revMu.RLock()
|
||||||
|
defer s.revMu.RUnlock()
|
||||||
|
return float64(s.compactMainRev)
|
||||||
|
}
|
||||||
|
reportCompactRevMu.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
// appendMarkTombstone appends tombstone mark to normal revision bytes.
|
// appendMarkTombstone appends tombstone mark to normal revision bytes.
|
||||||
func appendMarkTombstone(lg *zap.Logger, b []byte) []byte {
|
func appendMarkTombstone(lg *zap.Logger, b []byte) []byte {
|
||||||
if len(b) != revBytesLen {
|
if len(b) != revBytesLen {
|
||||||
|
@ -264,6 +264,38 @@ var (
|
|||||||
// highest bucket start of 0.01 sec * 2^14 == 163.84 sec
|
// highest bucket start of 0.01 sec * 2^14 == 163.84 sec
|
||||||
Buckets: prometheus.ExponentialBuckets(.01, 2, 15),
|
Buckets: prometheus.ExponentialBuckets(.01, 2, 15),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
currentRev = prometheus.NewGaugeFunc(prometheus.GaugeOpts{
|
||||||
|
Namespace: "etcd_debugging",
|
||||||
|
Subsystem: "mvcc",
|
||||||
|
Name: "current_revision",
|
||||||
|
Help: "The current revision of store.",
|
||||||
|
},
|
||||||
|
func() float64 {
|
||||||
|
reportCurrentRevMu.RLock()
|
||||||
|
defer reportCurrentRevMu.RUnlock()
|
||||||
|
return reportCurrentRev()
|
||||||
|
},
|
||||||
|
)
|
||||||
|
// overridden by mvcc initialization
|
||||||
|
reportCurrentRevMu sync.RWMutex
|
||||||
|
reportCurrentRev = func() float64 { return 0 }
|
||||||
|
|
||||||
|
compactRev = prometheus.NewGaugeFunc(prometheus.GaugeOpts{
|
||||||
|
Namespace: "etcd_debugging",
|
||||||
|
Subsystem: "mvcc",
|
||||||
|
Name: "compact_revision",
|
||||||
|
Help: "The revision of the last compaction in store.",
|
||||||
|
},
|
||||||
|
func() float64 {
|
||||||
|
reportCompactRevMu.RLock()
|
||||||
|
defer reportCompactRevMu.RUnlock()
|
||||||
|
return reportCompactRev()
|
||||||
|
},
|
||||||
|
)
|
||||||
|
// overridden by mvcc initialization
|
||||||
|
reportCompactRevMu sync.RWMutex
|
||||||
|
reportCompactRev = func() float64 { return 0 }
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -291,6 +323,8 @@ func init() {
|
|||||||
prometheus.MustRegister(dbOpenReadTxN)
|
prometheus.MustRegister(dbOpenReadTxN)
|
||||||
prometheus.MustRegister(hashSec)
|
prometheus.MustRegister(hashSec)
|
||||||
prometheus.MustRegister(hashRevSec)
|
prometheus.MustRegister(hashRevSec)
|
||||||
|
prometheus.MustRegister(currentRev)
|
||||||
|
prometheus.MustRegister(compactRev)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReportEventReceived reports that an event is received.
|
// ReportEventReceived reports that an event is received.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user