From 72c51d3e125cc5ee77730d602caf46e93816c4a3 Mon Sep 17 00:00:00 2001 From: Gyuho Lee Date: Thu, 7 Jun 2018 10:44:51 -0700 Subject: [PATCH] etcdserver: add "etcd_server_quota_backend_bytes" Signed-off-by: Gyuho Lee --- etcdserver/metrics.go | 7 +++++++ etcdserver/quota.go | 9 ++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/etcdserver/metrics.go b/etcdserver/metrics.go index 79b5b1148..42a27166a 100644 --- a/etcdserver/metrics.go +++ b/etcdserver/metrics.go @@ -77,6 +77,12 @@ var ( Name: "slow_read_indexes_total", Help: "The total number of pending read indexes not in sync with leader's or timed out read index requests.", }) + quotaBackendBytes = prometheus.NewGauge(prometheus.GaugeOpts{ + Namespace: "etcd", + Subsystem: "server", + Name: "quota_backend_bytes", + Help: "Current backend storage quota size in bytes.", + }) currentVersion = prometheus.NewGaugeVec(prometheus.GaugeOpts{ Namespace: "etcd", Subsystem: "server", @@ -96,6 +102,7 @@ func init() { prometheus.MustRegister(proposalsFailed) prometheus.MustRegister(leaseExpired) prometheus.MustRegister(slowReadIndex) + prometheus.MustRegister(quotaBackendBytes) prometheus.MustRegister(currentVersion) currentVersion.With(prometheus.Labels{ diff --git a/etcdserver/quota.go b/etcdserver/quota.go index 87126f156..882eb76f8 100644 --- a/etcdserver/quota.go +++ b/etcdserver/quota.go @@ -14,9 +14,7 @@ package etcdserver -import ( - pb "github.com/coreos/etcd/etcdserver/etcdserverpb" -) +import pb "github.com/coreos/etcd/etcdserver/etcdserverpb" const ( // DefaultQuotaBytes is the number of bytes the backend Size may @@ -58,15 +56,20 @@ const ( ) func NewBackendQuota(s *EtcdServer) Quota { + quotaBackendBytes.Set(float64(s.Cfg.QuotaBackendBytes)) + if s.Cfg.QuotaBackendBytes < 0 { // disable quotas if negative plog.Warningf("disabling backend quota") return &passthroughQuota{} } + if s.Cfg.QuotaBackendBytes == 0 { // use default size if no quota size given + quotaBackendBytes.Set(float64(DefaultQuotaBytes)) return &backendQuota{s, DefaultQuotaBytes} } + if s.Cfg.QuotaBackendBytes > MaxQuotaBytes { plog.Warningf("backend quota %v exceeds maximum recommended quota %v", s.Cfg.QuotaBackendBytes, MaxQuotaBytes) }