From 85abf6e46d9af25de811c59ef15e8320f6d6123c Mon Sep 17 00:00:00 2001 From: Geeta Gharpure Date: Wed, 6 Oct 2021 11:01:07 -0700 Subject: [PATCH] storage/backend: Add a gauge to indicate if defrag is active (backport from 3.6) --- mvcc/backend/backend.go | 2 ++ mvcc/backend/metrics.go | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/mvcc/backend/backend.go b/mvcc/backend/backend.go index 523d358d5ae..4f12b9a6b34 100644 --- a/mvcc/backend/backend.go +++ b/mvcc/backend/backend.go @@ -354,6 +354,8 @@ func (b *backend) Defrag() error { func (b *backend) defrag() error { now := time.Now() + isDefragActive.Set(1) + defer isDefragActive.Set(0) // TODO: make this non-blocking? // lock batchTx to ensure nobody is using previous tx, and then diff --git a/mvcc/backend/metrics.go b/mvcc/backend/metrics.go index d9641af7ae2..9d58c00638b 100644 --- a/mvcc/backend/metrics.go +++ b/mvcc/backend/metrics.go @@ -83,6 +83,13 @@ var ( // highest bucket start of 0.01 sec * 2^16 == 655.36 sec Buckets: prometheus.ExponentialBuckets(.01, 2, 17), }) + + isDefragActive = prometheus.NewGauge(prometheus.GaugeOpts{ + Namespace: "etcd", + Subsystem: "disk", + Name: "defrag_inflight", + Help: "Whether or not defrag is active on the member. 1 means active, 0 means not.", + }) ) func init() { @@ -92,4 +99,5 @@ func init() { prometheus.MustRegister(writeSec) prometheus.MustRegister(defragSec) prometheus.MustRegister(snapshotTransferSec) + prometheus.MustRegister(isDefragActive) }