From 1dbb35e294029ed64b6b925defbd52e5de0563a1 Mon Sep 17 00:00:00 2001 From: Thomas Jungblut Date: Tue, 7 Nov 2023 15:32:15 +0100 Subject: [PATCH] Add range response KV length as a metric This adds a metric to allow us to alert on large range responses described in #14809. Signed-off-by: Thomas Jungblut --- server/etcdserver/metrics.go | 7 +++++++ server/etcdserver/v3_server.go | 3 +++ 2 files changed, 10 insertions(+) diff --git a/server/etcdserver/metrics.go b/server/etcdserver/metrics.go index 7af0e7354d0..ea1fce461b7 100644 --- a/server/etcdserver/metrics.go +++ b/server/etcdserver/metrics.go @@ -118,6 +118,12 @@ var ( Name: "lease_expired_total", Help: "The total number of expired leases.", }) + rangeResponseKvCount = prometheus.NewHistogramVec(prometheus.HistogramOpts{ + Namespace: "etcd", + Subsystem: "server", + Name: "range_response_kv_count", + Help: "The number of KVs returned by range calls.", + }, []string{"range_begin"}) currentVersion = prometheus.NewGaugeVec(prometheus.GaugeOpts{ Namespace: "etcd", @@ -168,6 +174,7 @@ func init() { prometheus.MustRegister(slowReadIndex) prometheus.MustRegister(readIndexFailed) prometheus.MustRegister(leaseExpired) + prometheus.MustRegister(rangeResponseKvCount) prometheus.MustRegister(currentVersion) prometheus.MustRegister(currentGoVersion) prometheus.MustRegister(serverID) diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 07d1f546c9f..316e489cd46 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -136,6 +136,9 @@ func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRe err = serr return nil, err } + + rangeResponseKvCount.WithLabelValues(string(r.Key)).Observe(float64(len(resp.Kvs))) + return resp, err }