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

Function New

modules/generator/processor/spanmetrics/spanmetrics.go:49–102  ·  view source on GitHub ↗
(cfg Config, reg registry.Registry, filteredSpansCounter, invalidUTF8Counter prometheus.Counter)

Source from the content-addressed store, hash-verified

47}
48
49func New(cfg Config, reg registry.Registry, filteredSpansCounter, invalidUTF8Counter prometheus.Counter) (gen.Processor, error) {
50 var configuredIntrinsicDimensions []string
51
52 if cfg.IntrinsicDimensions.Service {
53 configuredIntrinsicDimensions = append(configuredIntrinsicDimensions, gen.DimService)
54 }
55 if cfg.IntrinsicDimensions.SpanName {
56 configuredIntrinsicDimensions = append(configuredIntrinsicDimensions, gen.DimSpanName)
57 }
58 if cfg.IntrinsicDimensions.SpanKind {
59 configuredIntrinsicDimensions = append(configuredIntrinsicDimensions, gen.DimSpanKind)
60 }
61 if cfg.IntrinsicDimensions.StatusCode {
62 configuredIntrinsicDimensions = append(configuredIntrinsicDimensions, gen.DimStatusCode)
63 }
64 if cfg.IntrinsicDimensions.StatusMessage {
65 configuredIntrinsicDimensions = append(configuredIntrinsicDimensions, gen.DimStatusMessage)
66 }
67
68 c := reclaimable.New(validation.SanitizeLabelName, 10000)
69
70 err := validation.ValidateDimensions(cfg.Dimensions, configuredIntrinsicDimensions, cfg.DimensionMappings, c.Get)
71 if err != nil {
72 return nil, err
73 }
74
75 p := &Processor{
76 Cfg: cfg,
77 registry: reg,
78 spanMetricsTargetInfo: reg.NewGauge(targetInfo),
79 now: time.Now,
80 filteredSpansCounter: filteredSpansCounter,
81 invalidUTF8Counter: invalidUTF8Counter,
82 sanitizeCache: c,
83 }
84
85 if cfg.Subprocessors[Latency] {
86 p.spanMetricsDurationSeconds = reg.NewHistogram(metricDurationSeconds, cfg.HistogramBuckets, cfg.HistogramOverride)
87 }
88 if cfg.Subprocessors[Count] {
89 p.spanMetricsCallsTotal = reg.NewCounter(metricCallsTotal)
90 }
91 if cfg.Subprocessors[Size] {
92 p.spanMetricsSizeTotal = reg.NewCounter(metricSizeTotal)
93 }
94
95 filter, err := spanfilter.NewSpanFilter(cfg.FilterPolicies)
96 if err != nil {
97 return nil, err
98 }
99
100 p.filter = filter
101 return p, nil
102}
103
104func (p *Processor) Name() string {
105 return gen.SpanMetricsName

Calls 6

NewFunction · 0.92
ValidateDimensionsFunction · 0.92
NewSpanFilterFunction · 0.92
NewGaugeMethod · 0.65
NewHistogramMethod · 0.65
NewCounterMethod · 0.65