From 28f40d77940703f274fd386b19698f4b4e668317 Mon Sep 17 00:00:00 2001 From: yoyinzyc Date: Tue, 19 Nov 2019 13:55:37 -0800 Subject: [PATCH] mvcc: add "etcd_mvcc_put_size_in_bytes" to monitor the throughput of put request. --- mvcc/metrics.go | 9 +++++++++ mvcc/metrics_txn.go | 8 ++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/mvcc/metrics.go b/mvcc/metrics.go index 7526ee4b5..baaf61094 100644 --- a/mvcc/metrics.go +++ b/mvcc/metrics.go @@ -296,6 +296,14 @@ var ( // overridden by mvcc initialization reportCompactRevMu sync.RWMutex reportCompactRev = func() float64 { return 0 } + + putSizeGauge = prometheus.NewGauge( + prometheus.GaugeOpts{ + Namespace: "etcd", + Subsystem: "mvcc", + Name: "put_size_in_bytes", + Help: "The total size of put kv pairs seen by this member.", + }) ) func init() { @@ -325,6 +333,7 @@ func init() { prometheus.MustRegister(hashRevSec) prometheus.MustRegister(currentRev) prometheus.MustRegister(compactRev) + prometheus.MustRegister(putSizeGauge) } // ReportEventReceived reports that an event is received. diff --git a/mvcc/metrics_txn.go b/mvcc/metrics_txn.go index 64b629c78..2f2c40514 100644 --- a/mvcc/metrics_txn.go +++ b/mvcc/metrics_txn.go @@ -21,14 +21,15 @@ type metricsTxnWrite struct { ranges uint puts uint deletes uint + putSize int64 } func newMetricsTxnRead(tr TxnRead) TxnRead { - return &metricsTxnWrite{&txnReadWrite{tr}, 0, 0, 0} + return &metricsTxnWrite{&txnReadWrite{tr}, 0, 0, 0, 0} } func newMetricsTxnWrite(tw TxnWrite) TxnWrite { - return &metricsTxnWrite{tw, 0, 0, 0} + return &metricsTxnWrite{tw, 0, 0, 0, 0} } func (tw *metricsTxnWrite) Range(key, end []byte, ro RangeOptions) (*RangeResult, error) { @@ -43,6 +44,8 @@ func (tw *metricsTxnWrite) DeleteRange(key, end []byte) (n, rev int64) { func (tw *metricsTxnWrite) Put(key, value []byte, lease lease.LeaseID) (rev int64) { tw.puts++ + size := int64(len(key) + len(value)) + tw.putSize += size return tw.TxnWrite.Put(key, value, lease) } @@ -60,6 +63,7 @@ func (tw *metricsTxnWrite) End() { puts := float64(tw.puts) putCounter.Add(puts) putCounterDebug.Add(puts) // TODO: remove in 3.5 release + putSizeGauge.Add(float64(tw.putSize)) deletes := float64(tw.deletes) deleteCounter.Add(deletes)