@@ -20,11 +20,11 @@ import (
2020 "go.opentelemetry.io/collector/config/configtelemetry"
2121)
2222
23- // Deprecated: [v0.108.0] use LeveledMeter instead.
2423func Meter(settings component.TelemetrySettings) metric.Meter {
2524 return settings.MeterProvider.Meter("{{ .ScopeName }}")
2625}
2726
27+ // Deprecated: [v0.112.0] use Meter instead.
2828func LeveledMeter(settings component.TelemetrySettings, level configtelemetry.Level) metric.Meter {
2929 return settings.LeveledMeterProvider(level).Meter("{{ .ScopeName }}")
3030}
@@ -44,7 +44,6 @@ type TelemetryBuilder struct {
4444 observe{{ $name.Render }} func(context.Context, metric.Observer) error
4545 {{- end }}
4646 {{- end }}
47- meters map[configtelemetry.Level]metric.Meter
4847}
4948
5049// TelemetryBuilderOption applies changes to default builder.
@@ -64,7 +63,7 @@ func (tbof telemetryBuilderOptionFunc) apply(mb *TelemetryBuilder) {
6463// Init{{ $name.Render }} configures the {{ $name.Render }} metric.
6564func (builder *TelemetryBuilder) Init{{ $name.Render }}({{ if $metric.Data.Async -}}cb func() {{ $metric.Data.BasicType }}{{- end }}, opts ...metric.ObserveOption) error {
6665 var err error
67- builder.{{ $name.Render }}, err = builder.meters[configtelemetry.Level{{ casesTitle $metric.Level.String }}] .{{ $metric.Data.Instrument }}(
66+ builder.{{ $name.Render }}, err = builder.meter .{{ $metric.Data.Instrument }}(
6867 "otelcol_{{ $name }}",
6968 metric.WithDescription("{{ $metric.Description }}"),
7069 metric.WithUnit("{{ $metric.Unit }}"),
@@ -76,7 +75,7 @@ func (builder *TelemetryBuilder) Init{{ $name.Render }}({{ if $metric.Data.Async
7675 if err != nil {
7776 return err
7877 }
79- _, err = builder.meters[configtelemetry.Level{{ casesTitle $metric.Level.String }}] .RegisterCallback(func(_ context.Context, o metric.Observer) error {
78+ _, err = builder.meter .RegisterCallback(func(_ context.Context, o metric.Observer) error {
8079 o.Observe{{ casesTitle $metric.Data.BasicType }}(builder.{{ $name.Render }}, cb(), opts...)
8180 return nil
8281 }, builder.{{ $name.Render }})
@@ -103,33 +102,42 @@ func With{{ $name.Render }}Callback(cb func() {{ $metric.Data.BasicType }}, opts
103102// NewTelemetryBuilder provides a struct with methods to update all internal telemetry
104103// for a component
105104func NewTelemetryBuilder(settings component.TelemetrySettings, options ...TelemetryBuilderOption) (*TelemetryBuilder, error) {
106- builder := TelemetryBuilder{meters: map[configtelemetry.Level]metric.Meter{} }
105+ builder := TelemetryBuilder{}
107106 for _, op := range options {
108107 op.apply(&builder)
109108 }
110- {{- range $level, $val := .Telemetry.Levels }}
111- builder.meters[configtelemetry.Level{{ casesTitle $level }}] = LeveledMeter(settings, configtelemetry.Level{{ casesTitle $level }})
112- {{- end }}
109+ builder.meter = Meter(settings)
113110 var err, errs error
114111
115112 {{- range $name, $metric := .Telemetry.Metrics }}
116113 {{- if not $metric.Optional }}
117- builder.{{ $name.Render }}, err = builder.meters[ configtelemetry.Level{{ casesTitle $metric.Level.String }}] .{{ $metric.Data.Instrument }}(
114+ builder.{{ $name.Render }}, err = getLeveledMeter( builder.meter, configtelemetry.Level{{ $metric.Level }}, settings.MetricsLevel) .{{ $metric.Data.Instrument }}(
118115 "otelcol_{{ $name }}",
119116 metric.WithDescription("{{ $metric.Description }}{{ $metric.Stability }}"),
120117 metric.WithUnit("{{ $metric.Unit }}"),
121118 {{ if eq $metric.Data.Type "Histogram" -}}
122119 {{- if $metric.Data.Boundaries -}}metric.WithExplicitBucketBoundaries([]float64{ {{- range $metric.Data.Boundaries }} {{.}}, {{- end }} }...),{{- end }}
123120 {{- end }}
124121 )
125- errs = errors.Join(errs, err)
122+ if err != nil {
123+ errs = errors.Join(errs, err)
124+ }
126125 {{- if $metric.Data.Async }}
127- _, err = builder.meters[configtelemetry.Level{{ casesTitle $metric.Level.String }}].RegisterCallback(builder.observe{{ $name.Render }}, builder.{{ $name.Render }})
128- errs = errors.Join(errs, err)
126+ _, err = getLeveledMeter(builder.meter, configtelemetry.Level{{ $metric.Level }}, settings.MetricsLevel).RegisterCallback(builder.observe{{ $name.Render }}, builder.{{ $name.Render }})
127+ if err != nil {
128+ errs = errors.Join(errs, err)
129+ }
129130 {{- end }}
130131 {{- end }}
131132 {{- end }}
132133 return &builder, errs
133134}
134135
136+ func getLeveledMeter(meter metric.Meter, cfgLevel, srvLevel configtelemetry.Level) metric.Meter {
137+ if cfgLevel < srvLevel {
138+ return meter
139+ }
140+ return noop.Meter{}
141+ }
142+
135143{{- end }}
0 commit comments