MCPcopy
hub / github.com/grafana/tempo / NewTracker

Function NewTracker

modules/distributor/usage/tracker.go:217–239  ·  view source on GitHub ↗
(cfg PerTrackerConfig, name string, labelsFn tenantLabelsFunc, maxFn tenantMaxFunc, logger log.Logger)

Source from the content-addressed store, hash-verified

215}
216
217func NewTracker(cfg PerTrackerConfig, name string, labelsFn tenantLabelsFunc, maxFn tenantMaxFunc, logger log.Logger) (*Tracker, error) {
218 // wrapped into error because we only log errors in the usage tracker with this logger
219 logger = level.Error(log.With(logger, "component", "usage-tracker"))
220 u := &Tracker{
221 cfg: cfg,
222 name: name,
223 tenants: make(map[string]*tenantUsage),
224 labelsFn: labelsFn,
225 maxFn: maxFn,
226 reg: prometheus.NewRegistry(),
227 // rate limit logger to avoid log spam
228 logger: tempo_log.NewRateLimitedLogger(1, logger),
229 }
230
231 err := u.reg.Register(u)
232 if err != nil {
233 return nil, err
234 }
235
236 go u.PurgeRoutine()
237
238 return u, nil
239}
240
241// getTenant must be called under lock.
242func (u *Tracker) getTenant(tenant string) *tenantUsage {

Callers 6

NewFunction · 0.92
TestUsageTrackerFunction · 0.85
TestCollectDoesNotPanicFunction · 0.85

Calls 3

PurgeRoutineMethod · 0.95
RegisterMethod · 0.80
ErrorMethod · 0.65

Tested by 5

TestUsageTrackerFunction · 0.68
TestCollectDoesNotPanicFunction · 0.68