//
// SPDX-License-Identifier: AGPL-3.0
-package main
+package keepbalance
import (
"fmt"
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{},
}
return obs
}
summary := prometheus.NewSummary(prometheus.SummaryOpts{
+ Namespace: "arvados",
Name: name,
Subsystem: "keepbalance",
Help: help,
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.
addGauge := func(name, help string) {
g := prometheus.NewGauge(prometheus.GaugeOpts{
+ Namespace: "arvados",
Name: name,
Subsystem: "keep",
Help: help,
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))
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))
}