etcdserver: add "etcd_server_quota_backend_bytes"

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
This commit is contained in:
Gyuho Lee 2018-06-07 10:44:51 -07:00
parent f46b4677c0
commit c2623bb840
2 changed files with 12 additions and 0 deletions

View File

@ -71,6 +71,12 @@ var (
Name: "slow_read_indexes_total", 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.", 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{ currentVersion = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "etcd", Namespace: "etcd",
Subsystem: "server", Subsystem: "server",
@ -89,6 +95,7 @@ func init() {
prometheus.MustRegister(proposalsPending) prometheus.MustRegister(proposalsPending)
prometheus.MustRegister(proposalsFailed) prometheus.MustRegister(proposalsFailed)
prometheus.MustRegister(slowReadIndex) prometheus.MustRegister(slowReadIndex)
prometheus.MustRegister(quotaBackendBytes)
prometheus.MustRegister(currentVersion) prometheus.MustRegister(currentVersion)
currentVersion.With(prometheus.Labels{ currentVersion.With(prometheus.Labels{

View File

@ -50,15 +50,20 @@ const (
) )
func NewBackendQuota(s *EtcdServer) Quota { func NewBackendQuota(s *EtcdServer) Quota {
quotaBackendBytes.Set(float64(s.Cfg.QuotaBackendBytes))
if s.Cfg.QuotaBackendBytes < 0 { if s.Cfg.QuotaBackendBytes < 0 {
// disable quotas if negative // disable quotas if negative
plog.Warningf("disabling backend quota") plog.Warningf("disabling backend quota")
return &passthroughQuota{} return &passthroughQuota{}
} }
if s.Cfg.QuotaBackendBytes == 0 { if s.Cfg.QuotaBackendBytes == 0 {
quotaBackendBytes.Set(float64(backend.DefaultQuotaBytes))
// use default size if no quota size given // use default size if no quota size given
return &backendQuota{s, backend.DefaultQuotaBytes} return &backendQuota{s, backend.DefaultQuotaBytes}
} }
if s.Cfg.QuotaBackendBytes > backend.MaxQuotaBytes { if s.Cfg.QuotaBackendBytes > backend.MaxQuotaBytes {
plog.Warningf("backend quota %v exceeds maximum quota %v; using maximum", s.Cfg.QuotaBackendBytes, backend.MaxQuotaBytes) plog.Warningf("backend quota %v exceeds maximum quota %v; using maximum", s.Cfg.QuotaBackendBytes, backend.MaxQuotaBytes)
return &backendQuota{s, backend.MaxQuotaBytes} return &backendQuota{s, backend.MaxQuotaBytes}