X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d6a21ab8a0c5a45bdcd7c0fbaa93f7096e56e831..40f551004ab4e5f1d8ab02ddb55dca225ee8f6ac:/services/keep-balance/metrics.go diff --git a/services/keep-balance/metrics.go b/services/keep-balance/metrics.go index 0564d46cda..ce1b1811cc 100644 --- a/services/keep-balance/metrics.go +++ b/services/keep-balance/metrics.go @@ -24,9 +24,9 @@ type metrics struct { mtx sync.Mutex } -func newMetrics() *metrics { +func newMetrics(registry *prometheus.Registry) *metrics { return &metrics{ - reg: prometheus.NewRegistry(), + reg: registry, statsGauges: map[string]setter{}, observers: map[string]observer{}, } @@ -58,12 +58,14 @@ func (m *metrics) UpdateStats(s balancerStats) { Help string } s2g := map[string]gauge{ - "total": {s.current, "current backend storage usage"}, - "garbage": {s.garbage, "garbage (unreferenced, old)"}, - "transient": {s.unref, "transient (unreferenced, new)"}, - "overreplicated": {s.overrep, "overreplicated"}, - "underreplicated": {s.underrep, "underreplicated"}, - "lost": {s.lost, "lost"}, + "total": {s.current, "current backend storage usage"}, + "garbage": {s.garbage, "garbage (unreferenced, old)"}, + "transient": {s.unref, "transient (unreferenced, new)"}, + "overreplicated": {s.overrep, "overreplicated"}, + "underreplicated": {s.underrep, "underreplicated"}, + "lost": {s.lost, "lost"}, + "dedup_byte_ratio": {s.dedupByteRatio(), "deduplication ratio, bytes referenced / bytes stored"}, + "dedup_block_ratio": {s.dedupBlockRatio(), "deduplication ratio, blocks referenced / blocks stored"}, } m.setupOnce.Do(func() { // Register gauge(s) for each balancerStats field. @@ -83,7 +85,7 @@ func (m *metrics) UpdateStats(s balancerStats) { for _, sub := range []string{"blocks", "bytes", "replicas"} { addGauge(name+"_"+sub, sub+" of "+gauge.Help) } - case int, int64: + case int, int64, float64: addGauge(name, gauge.Help) default: panic(fmt.Sprintf("bad gauge type %T", gauge.Value)) @@ -101,6 +103,8 @@ func (m *metrics) UpdateStats(s balancerStats) { m.statsGauges[name].Set(float64(val)) case int64: m.statsGauges[name].Set(float64(val)) + case float64: + m.statsGauges[name].Set(float64(val)) default: panic(fmt.Sprintf("bad gauge type %T", gauge.Value)) }