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

Function New

modules/generator/registry/registry.go:126–170  ·  modules/generator/registry/registry.go::New

New creates a ManagedRegistry. This Registry will scrape itself, write samples into an appender and remove stale series.

(cfg *Config, overrides Overrides, tenant string, appendable storage.Appendable, logger log.Logger, limiter Limiter)

Source from the content-addressed store, hash-verified

124// New creates a ManagedRegistry. This Registry will scrape itself, write samples into an appender
125// and remove stale series.
126func New(cfg *Config, overrides Overrides, tenant string, appendable storage.Appendable, logger log.Logger, limiter Limiter) *ManagedRegistry {
127 instanceCtx, cancel := context.WithCancel(context.Background())
128
129 externalLabels := make(map[string]string)
130 for k, v := range cfg.ExternalLabels {
131 externalLabels[k] = v
132 }
133 hostname, _ := os.Hostname()
134 externalLabels["__metrics_gen_instance"] = hostname
135
136 if cfg.InjectTenantIDAs != "" {
137 externalLabels[cfg.InjectTenantIDAs] = tenant
138 }
139
140 drainSanitizer := NewDrainSanitizer(tenant, overrides.MetricsGeneratorSpanNameSanitization, cfg.StaleDuration)
141 perLabelLimiter := NewPerLabelLimiter(tenant, overrides.MetricsGeneratorMaxCardinalityPerLabel, cfg.StaleDuration)
142
143 r := &ManagedRegistry{
144 onShutdown: cancel,
145
146 cfg: cfg,
147 overrides: overrides,
148 tenant: tenant,
149 externalLabels: externalLabels,
150
151 metrics: map[string]metric{},
152
153 appendable: appendable,
154 sanitizer: drainSanitizer,
155 perLabelLimiter: perLabelLimiter,
156 limiter: limiter,
157 entityDemand: NewCardinality(cfg.StaleDuration, removeStaleSeriesInterval),
158
159 logger: logger,
160 limitLogger: tempo_log.NewRateLimitedLogger(1, level.Warn(logger)),
161 metricEntityDemand: metricEntityDemand.WithLabelValues(tenant),
162 metricSeriesDemand: metricSeriesDemand.WithLabelValues(tenant),
163 metricTotalCollections: metricTotalCollections.WithLabelValues(tenant),
164 }
165
166 go job(instanceCtx, r.CollectMetrics, r.collectionInterval)
167 go job(instanceCtx, r.removeStaleSeries, constantInterval(removeStaleSeriesInterval))
168
169 return r
170}
171
172func (r *ManagedRegistry) NewLabelBuilder() LabelBuilder {
173 return NewLabelBuilder(r.cfg.MaxLabelNameLength, r.cfg.MaxLabelValueLength, r.sanitizer, r.perLabelLimiter)

Calls 5

NewDrainSanitizerFunction · 0.85
NewPerLabelLimiterFunction · 0.85
NewCardinalityFunction · 0.85
constantIntervalFunction · 0.85
jobFunction · 0.70