diff --git a/CHANGELOG-3.6.md b/CHANGELOG-3.6.md index 360f25f4978..dac73f7a40d 100644 --- a/CHANGELOG-3.6.md +++ b/CHANGELOG-3.6.md @@ -28,3 +28,10 @@ See [code changes](https://github.com/etcd-io/etcd/compare/v3.5.0...v3.6.0). - Package `mvcc/buckets` was moved to `storage/schema` - Package `wal` was moved to `storage/wal` - Package `datadir` was moved to `storage/datadir` + + +### Metrics, Monitoring + +See [List of metrics](https://etcd.io/docs/latest/metrics/) for all metrics per release. + +- Add [`etcd_disk_defrag_inflight`](https://github.com/etcd-io/etcd/pull/13371). diff --git a/server/storage/backend/backend.go b/server/storage/backend/backend.go index b7207c1717a..529f83b0f25 100644 --- a/server/storage/backend/backend.go +++ b/server/storage/backend/backend.go @@ -432,6 +432,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/server/storage/backend/metrics.go b/server/storage/backend/metrics.go index d9641af7ae2..9d58c00638b 100644 --- a/server/storage/backend/metrics.go +++ b/server/storage/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) }