Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow Cortex to fully reuse FetcherMetrics #3842

Merged
merged 1 commit into from Feb 26, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
40 changes: 23 additions & 17 deletions pkg/block/fetcher.go
Expand Up @@ -49,12 +49,14 @@ type FetcherMetrics struct {
Modified *extprom.TxGaugeVec
}

func (s *FetcherMetrics) submit() {
// Submit applies new values for metrics tracked by transaction GaugeVec.
func (s *FetcherMetrics) Submit() {
s.Synced.Submit()
s.Modified.Submit()
}

func (s *FetcherMetrics) resetTx() {
// ResetTx starts new transaction for metrics tracked by transaction GaugeVec.
func (s *FetcherMetrics) ResetTx() {
s.Synced.ResetTx()
s.Modified.ResetTx()
}
Expand Down Expand Up @@ -83,7 +85,7 @@ const (
replicaRemovedMeta = "replica-label-removed"
)

func NewFetcherMetrics(reg prometheus.Registerer) *FetcherMetrics {
func NewFetcherMetrics(reg prometheus.Registerer, syncedExtraLabels, modifiedExtraLabels [][]string) *FetcherMetrics {
var m FetcherMetrics

m.Syncs = promauto.With(reg).NewCounter(prometheus.CounterOpts{
Expand All @@ -110,16 +112,18 @@ func NewFetcherMetrics(reg prometheus.Registerer) *FetcherMetrics {
Help: "Number of block metadata synced",
},
[]string{"state"},
[]string{CorruptedMeta},
[]string{NoMeta},
[]string{LoadedMeta},
[]string{tooFreshMeta},
[]string{FailedMeta},
[]string{labelExcludedMeta},
[]string{timeExcludedMeta},
[]string{duplicateMeta},
[]string{MarkedForDeletionMeta},
[]string{MarkedForNoCompactionMeta},
append([][]string{
{CorruptedMeta},
{NoMeta},
{LoadedMeta},
{tooFreshMeta},
{FailedMeta},
{labelExcludedMeta},
{timeExcludedMeta},
{duplicateMeta},
{MarkedForDeletionMeta},
{MarkedForNoCompactionMeta},
}, syncedExtraLabels...)...,
)
m.Modified = extprom.NewTxGaugeVec(
reg,
Expand All @@ -129,7 +133,9 @@ func NewFetcherMetrics(reg prometheus.Registerer) *FetcherMetrics {
Help: "Number of blocks whose metadata changed",
},
[]string{"modified"},
[]string{replicaRemovedMeta},
append([][]string{
{replicaRemovedMeta},
}, modifiedExtraLabels...)...,
)
return &m
}
Expand Down Expand Up @@ -200,7 +206,7 @@ func NewMetaFetcher(logger log.Logger, concurrency int, bkt objstore.Instrumente

// NewMetaFetcher transforms BaseFetcher into actually usable *MetaFetcher.
func (f *BaseFetcher) NewMetaFetcher(reg prometheus.Registerer, filters []MetadataFilter, modifiers []MetadataModifier, logTags ...interface{}) *MetaFetcher {
return &MetaFetcher{metrics: NewFetcherMetrics(reg), wrapped: f, filters: filters, modifiers: modifiers, logger: log.With(f.logger, logTags...)}
return &MetaFetcher{metrics: NewFetcherMetrics(reg, nil, nil), wrapped: f, filters: filters, modifiers: modifiers, logger: log.With(f.logger, logTags...)}
}

var (
Expand Down Expand Up @@ -417,7 +423,7 @@ func (f *BaseFetcher) fetch(ctx context.Context, metrics *FetcherMetrics, filter
}
}()
metrics.Syncs.Inc()
metrics.resetTx()
metrics.ResetTx()

// Run this in thread safe run group.
// TODO(bwplotka): Consider custom singleflight with ttl.
Expand Down Expand Up @@ -455,7 +461,7 @@ func (f *BaseFetcher) fetch(ctx context.Context, metrics *FetcherMetrics, filter
}

metrics.Synced.WithLabelValues(LoadedMeta).Set(float64(len(metas)))
metrics.submit()
metrics.Submit()

if len(resp.metaErrs) > 0 {
return metas, resp.partial, errors.Wrap(resp.metaErrs.Err(), "incomplete view")
Expand Down