Unified Storage: Sprinkles latency metric (#100542)
* add sprinkles latency metric * fixes failing tests - forgot to register metric only once
This commit is contained in:
@@ -11,8 +11,9 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
onceIndex sync.Once
|
||||
IndexMetrics *BleveIndexMetrics
|
||||
onceIndex sync.Once
|
||||
IndexMetrics *BleveIndexMetrics
|
||||
SprinklesIndexMetrics *SprinklesMetrics
|
||||
)
|
||||
|
||||
type BleveIndexMetrics struct {
|
||||
@@ -28,8 +29,30 @@ type BleveIndexMetrics struct {
|
||||
IndexTenants *prometheus.CounterVec
|
||||
}
|
||||
|
||||
type SprinklesMetrics struct {
|
||||
SprinklesLatency prometheus.Histogram
|
||||
}
|
||||
|
||||
var IndexCreationBuckets = []float64{1, 5, 10, 25, 50, 75, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000}
|
||||
|
||||
func NewSprinklesMetrics() *SprinklesMetrics {
|
||||
onceIndex.Do(func() {
|
||||
SprinklesIndexMetrics = &SprinklesMetrics{
|
||||
SprinklesLatency: prometheus.NewHistogram(prometheus.HistogramOpts{
|
||||
Namespace: "index_server",
|
||||
Name: "sprinkles_latency_seconds",
|
||||
Help: "Time (in seconds) it takes until sprinkles are fetched",
|
||||
Buckets: instrument.DefBuckets,
|
||||
NativeHistogramBucketFactor: 1.1, // enable native histograms
|
||||
NativeHistogramMaxBucketNumber: 160,
|
||||
NativeHistogramMinResetDuration: time.Hour,
|
||||
}),
|
||||
}
|
||||
})
|
||||
|
||||
return SprinklesIndexMetrics
|
||||
}
|
||||
|
||||
func NewIndexMetrics(indexDir string, searchBackend SearchBackend) *BleveIndexMetrics {
|
||||
onceIndex.Do(func() {
|
||||
IndexMetrics = &BleveIndexMetrics{
|
||||
@@ -79,6 +102,14 @@ func NewIndexMetrics(indexDir string, searchBackend SearchBackend) *BleveIndexMe
|
||||
return IndexMetrics
|
||||
}
|
||||
|
||||
func (s *SprinklesMetrics) Collect(ch chan<- prometheus.Metric) {
|
||||
s.SprinklesLatency.Collect(ch)
|
||||
}
|
||||
|
||||
func (s *SprinklesMetrics) Describe(ch chan<- *prometheus.Desc) {
|
||||
s.SprinklesLatency.Describe(ch)
|
||||
}
|
||||
|
||||
func (s *BleveIndexMetrics) Collect(ch chan<- prometheus.Metric) {
|
||||
s.IndexLatency.Collect(ch)
|
||||
s.IndexCreationTime.Collect(ch)
|
||||
|
||||
@@ -83,10 +83,15 @@ func NewResourceServer(ctx context.Context, db infraDB.DB, cfg *setting.Cfg,
|
||||
InitMinCount: cfg.IndexMinCount,
|
||||
}
|
||||
|
||||
// Register indexer metrics
|
||||
err = reg.Register(resource.NewIndexMetrics(cfg.IndexPath, opts.Search.Backend))
|
||||
if err != nil {
|
||||
slog.Warn("Failed to register indexer metrics", "error", err)
|
||||
}
|
||||
err = reg.Register(resource.NewSprinklesMetrics())
|
||||
if err != nil {
|
||||
slog.Warn("Failed to register sprinkles metrics", "error", err)
|
||||
}
|
||||
}
|
||||
|
||||
rs, err := resource.NewResourceServer(opts)
|
||||
|
||||
Reference in New Issue
Block a user