Merge pull request #9820 from gyuho/quota-size

*: add "etcd_server_quota_backend_bytes" metric
This commit is contained in:
Gyuho Lee 2018-06-07 12:06:34 -07:00 committed by GitHub
commit d6ff23e669
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 0 deletions

View File

@ -84,6 +84,12 @@ var (
Name: "lease_expired_total",
Help: "The total number of expired leases.",
})
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",
@ -104,6 +110,7 @@ func init() {
prometheus.MustRegister(proposalsPending)
prometheus.MustRegister(proposalsFailed)
prometheus.MustRegister(leaseExpired)
prometheus.MustRegister(quotaBackendBytes)
prometheus.MustRegister(currentVersion)
currentVersion.With(prometheus.Labels{

View File

@ -62,6 +62,7 @@ const (
func NewBackendQuota(s *EtcdServer, name string) Quota {
lg := s.getLogger()
quotaBackendBytes.Set(float64(s.Cfg.QuotaBackendBytes))
if s.Cfg.QuotaBackendBytes < 0 {
// disable quotas if negative
@ -87,6 +88,7 @@ func NewBackendQuota(s *EtcdServer, name string) Quota {
zap.String("quota-size", humanize.Bytes(uint64(DefaultQuotaBytes))),
)
}
quotaBackendBytes.Set(float64(DefaultQuotaBytes))
return &backendQuota{s, DefaultQuotaBytes}
}

View File

@ -20,6 +20,8 @@ import (
"testing"
"time"
"github.com/coreos/etcd/etcdserver"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
"github.com/coreos/etcd/pkg/testutil"
)
@ -145,3 +147,21 @@ func testMetricDbSizeDefrag(t *testing.T, name string) {
t.Fatalf("db size in use (%d) is expected less than db size (%d) after defrag", adiu, av)
}
}
func TestMetricQuotaBackendBytes(t *testing.T) {
defer testutil.AfterTest(t)
clus := NewClusterV3(t, &ClusterConfig{Size: 1})
defer clus.Terminate(t)
qs, err := clus.Members[0].Metric("etcd_server_quota_backend_bytes")
if err != nil {
t.Fatal(err)
}
qv, err := strconv.ParseFloat(qs, 64)
if err != nil {
t.Fatal(err)
}
if int64(qv) != etcdserver.DefaultQuotaBytes {
t.Fatalf("expected %d, got %f", etcdserver.DefaultQuotaBytes, qv)
}
}