Skip to content

Commit b0446f1

Browse files
committed
[mdatagen] Generate wrappers for recording telemetry metrics
1 parent 4edaacd commit b0446f1

File tree

26 files changed

+254
-105
lines changed

26 files changed

+254
-105
lines changed

.chloggen/tel_metric_attributes.yaml

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Use this changelog template to create an entry for release notes.
2+
3+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
4+
change_type: enhancement
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
7+
component: mdatagen
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Generate wrappers for telemetry metrics as a first step towards configurable attributes
11+
12+
# One or more tracking issues or pull requests related to the change
13+
issues: [10801]
14+
15+
# (Optional) One or more lines of additional information to render under the primary note.
16+
# These lines will be padded with 2 spaces and then inserted directly into the document.
17+
# Use pipe (|) for multiline entries.
18+
subtext:
19+
20+
# Optional: The change log or logs in which this entry should be included.
21+
# e.g. '[user]' or '[user, api]'
22+
# Include 'user' if the change is relevant to end users.
23+
# Include 'api' if there is a change to a library API.
24+
# Default: '[user]'
25+
change_logs: []

cmd/mdatagen/internal/samplereceiver/factory.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func createMetrics(ctx context.Context, set receiver.Settings, _ component.Confi
3131
if err != nil {
3232
return nil, err
3333
}
34-
telemetryBuilder.BatchSizeTriggerSend.Add(ctx, 1)
34+
telemetryBuilder.RecordBatchSizeTriggerSend(ctx, 1)
3535
return nopReceiver{telemetryBuilder: telemetryBuilder}, nil
3636
}
3737

cmd/mdatagen/internal/samplereceiver/internal/metadata/generated_telemetry.go

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/mdatagen/internal/samplereceiver/internal/metadatatest/generated_telemetrytest_test.go

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/mdatagen/internal/templates/telemetry.go.tmpl

+10-5
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,7 @@ package {{ .Package }}
44

55
import (
66
{{- if .Telemetry.Metrics }}
7-
{{- range $_, $metric := .Telemetry.Metrics }}
8-
{{- if $metric.Data.Async }}
97
"context"
10-
{{- break}}
11-
{{- end }}
12-
{{- end }}
138
"errors"
149
{{- end }}
1510

@@ -128,3 +123,13 @@ func NewTelemetryBuilder(settings component.TelemetrySettings, options ...Teleme
128123
}
129124

130125
{{- end }}
126+
127+
{{- range $name, $metric := .Telemetry.Metrics }}
128+
{{- if not $metric.Data.Async }}
129+
130+
func (builder *TelemetryBuilder) Record{{ $name.Render }}(ctx context.Context, val {{ $metric.Data.BasicType }}, opts ...metric.{{- if eq $metric.Data.Type "Sum" -}}Add{{- else -}}Record{{- end -}}Option) {
131+
builder.{{ $name.Render }}.{{- if eq $metric.Data.Type "Sum" -}}Add{{- else -}}Record{{- end -}}(ctx, val, opts...)
132+
}
133+
134+
{{- end }}
135+
{{- end }}

cmd/mdatagen/internal/templates/telemetrytest_test.go.tmpl

+1-5
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@ func TestSetupTelemetry(t *testing.T) {
2626
require.NotNil(t, tb)
2727
{{- range $name, $metric := .Telemetry.Metrics }}
2828
{{- if (and (not $metric.Optional) (not $metric.Data.Async)) }}
29-
{{- if eq $metric.Data.Type "Sum" }}
30-
tb.{{ $name.Render }}.Add(context.Background(), 1)
31-
{{- else }}
32-
tb.{{ $name.Render }}.Record(context.Background(), 1)
33-
{{- end }}
29+
tb.Record{{ $name.Render }}(context.Background(), 1)
3430
{{- end }}
3531
{{- end }}
3632

docs/coding-guidelines.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ To record the measurement, you can then call the metric stored in the telemetry
290290
builder:
291291

292292
```go
293-
tsp.telemetry.ProcessorTailsamplingSamplingdecisionLatency.Record(ctx, ...)
293+
tsp.telemetry.RecordProcessorTailsamplingSamplingdecisionLatency(ctx, ...)
294294
```
295295

296296
### Resource Usage

exporter/exporterhelper/internal/metadata/generated_telemetry.go

+36
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

exporter/exporterhelper/internal/metadatatest/generated_telemetrytest_test.go

+9-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

exporter/exporterhelper/internal/obs_report.go

+20-33
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,9 @@ type ObsReport struct {
3838
tracer trace.Tracer
3939
Signal pipeline.Signal
4040

41-
spanAttrs trace.SpanStartEventOption
42-
metricAttr metric.MeasurementOption
43-
TelemetryBuilder *metadata.TelemetryBuilder
44-
enqueueFailedInst metric.Int64Counter
45-
itemsSentInst metric.Int64Counter
46-
itemsFailedInst metric.Int64Counter
41+
spanAttrs trace.SpanStartEventOption
42+
metricAttr metric.MeasurementOption
43+
TelemetryBuilder *metadata.TelemetryBuilder
4744
}
4845

4946
// ObsReportSettings are settings for creating an ObsReport.
@@ -70,23 +67,6 @@ func NewObsReport(set ObsReportSettings) (*ObsReport, error) {
7067
TelemetryBuilder: telemetryBuilder,
7168
}
7269

73-
switch set.Signal {
74-
case pipeline.SignalTraces:
75-
or.enqueueFailedInst = or.TelemetryBuilder.ExporterEnqueueFailedSpans
76-
or.itemsSentInst = or.TelemetryBuilder.ExporterSentSpans
77-
or.itemsFailedInst = or.TelemetryBuilder.ExporterSendFailedSpans
78-
79-
case pipeline.SignalMetrics:
80-
or.enqueueFailedInst = or.TelemetryBuilder.ExporterEnqueueFailedMetricPoints
81-
or.itemsSentInst = or.TelemetryBuilder.ExporterSentMetricPoints
82-
or.itemsFailedInst = or.TelemetryBuilder.ExporterSendFailedMetricPoints
83-
84-
case pipeline.SignalLogs:
85-
or.enqueueFailedInst = or.TelemetryBuilder.ExporterEnqueueFailedLogRecords
86-
or.itemsSentInst = or.TelemetryBuilder.ExporterSentLogRecords
87-
or.itemsFailedInst = or.TelemetryBuilder.ExporterSendFailedLogRecords
88-
}
89-
9070
return or, nil
9171
}
9272

@@ -102,12 +82,16 @@ func (or *ObsReport) EndOp(ctx context.Context, numLogRecords int, err error) {
10282
numSent, numFailedToSend := toNumItems(numLogRecords, err)
10383

10484
// No metrics recorded for profiles.
105-
if or.itemsSentInst != nil {
106-
or.itemsSentInst.Add(ctx, numSent, or.metricAttr)
107-
}
108-
// No metrics recorded for profiles.
109-
if or.itemsFailedInst != nil {
110-
or.itemsFailedInst.Add(ctx, numFailedToSend, or.metricAttr)
85+
switch or.Signal {
86+
case pipeline.SignalTraces:
87+
or.TelemetryBuilder.RecordExporterSentSpans(ctx, numSent, or.metricAttr)
88+
or.TelemetryBuilder.RecordExporterSendFailedSpans(ctx, numFailedToSend, or.metricAttr)
89+
case pipeline.SignalMetrics:
90+
or.TelemetryBuilder.RecordExporterSentMetricPoints(ctx, numSent, or.metricAttr)
91+
or.TelemetryBuilder.RecordExporterSendFailedMetricPoints(ctx, numFailedToSend, or.metricAttr)
92+
case pipeline.SignalLogs:
93+
or.TelemetryBuilder.RecordExporterSentLogRecords(ctx, numSent, or.metricAttr)
94+
or.TelemetryBuilder.RecordExporterSendFailedLogRecords(ctx, numFailedToSend, or.metricAttr)
11195
}
11296

11397
span := trace.SpanFromContext(ctx)
@@ -133,9 +117,12 @@ func toNumItems(numExportedItems int, err error) (int64, int64) {
133117

134118
func (or *ObsReport) RecordEnqueueFailure(ctx context.Context, failed int64) {
135119
// No metrics recorded for profiles.
136-
if or.enqueueFailedInst == nil {
137-
return
120+
switch or.Signal {
121+
case pipeline.SignalTraces:
122+
or.TelemetryBuilder.RecordExporterEnqueueFailedSpans(ctx, failed, or.metricAttr)
123+
case pipeline.SignalMetrics:
124+
or.TelemetryBuilder.RecordExporterEnqueueFailedMetricPoints(ctx, failed, or.metricAttr)
125+
case pipeline.SignalLogs:
126+
or.TelemetryBuilder.RecordExporterEnqueueFailedLogRecords(ctx, failed, or.metricAttr)
138127
}
139-
140-
or.enqueueFailedInst.Add(ctx, failed, or.metricAttr)
141128
}

processor/batchprocessor/internal/metadata/generated_telemetry.go

+16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

processor/batchprocessor/internal/metadatatest/generated_telemetrytest_test.go

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

processor/batchprocessor/metrics.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ func newBatchProcessorTelemetry(set processor.Settings, currentMetadataCardinali
4949
func (bpt *batchProcessorTelemetry) record(trigger trigger, sent, bytes int64) {
5050
switch trigger {
5151
case triggerBatchSize:
52-
bpt.telemetryBuilder.ProcessorBatchBatchSizeTriggerSend.Add(bpt.exportCtx, 1, bpt.processorAttr)
52+
bpt.telemetryBuilder.RecordProcessorBatchBatchSizeTriggerSend(bpt.exportCtx, 1, bpt.processorAttr)
5353
case triggerTimeout:
54-
bpt.telemetryBuilder.ProcessorBatchTimeoutTriggerSend.Add(bpt.exportCtx, 1, bpt.processorAttr)
54+
bpt.telemetryBuilder.RecordProcessorBatchTimeoutTriggerSend(bpt.exportCtx, 1, bpt.processorAttr)
5555
}
5656

57-
bpt.telemetryBuilder.ProcessorBatchBatchSendSize.Record(bpt.exportCtx, sent, bpt.processorAttr)
58-
bpt.telemetryBuilder.ProcessorBatchBatchSendSizeBytes.Record(bpt.exportCtx, bytes, bpt.processorAttr)
57+
bpt.telemetryBuilder.RecordProcessorBatchBatchSendSize(bpt.exportCtx, sent, bpt.processorAttr)
58+
bpt.telemetryBuilder.RecordProcessorBatchBatchSendSizeBytes(bpt.exportCtx, bytes, bpt.processorAttr)
5959
}

processor/memorylimiterprocessor/internal/metadata/generated_telemetry.go

+25
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

processor/memorylimiterprocessor/internal/metadatatest/generated_telemetrytest_test.go

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

processor/memorylimiterprocessor/obsreport.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,22 @@ func newObsReport(set processor.Settings) (*obsReport, error) {
3636
func (or *obsReport) accepted(ctx context.Context, num int, signal pipeline.Signal) {
3737
switch signal {
3838
case pipeline.SignalTraces:
39-
or.telemetryBuilder.ProcessorAcceptedSpans.Add(ctx, int64(num), or.otelAttrs)
39+
or.telemetryBuilder.RecordProcessorAcceptedSpans(ctx, int64(num), or.otelAttrs)
4040
case pipeline.SignalMetrics:
41-
or.telemetryBuilder.ProcessorAcceptedMetricPoints.Add(ctx, int64(num), or.otelAttrs)
41+
or.telemetryBuilder.RecordProcessorAcceptedMetricPoints(ctx, int64(num), or.otelAttrs)
4242
case pipeline.SignalLogs:
43-
or.telemetryBuilder.ProcessorAcceptedLogRecords.Add(ctx, int64(num), or.otelAttrs)
43+
or.telemetryBuilder.RecordProcessorAcceptedLogRecords(ctx, int64(num), or.otelAttrs)
4444
}
4545
}
4646

4747
// refused reports that the num data that was refused.
4848
func (or *obsReport) refused(ctx context.Context, num int, signal pipeline.Signal) {
4949
switch signal {
5050
case pipeline.SignalTraces:
51-
or.telemetryBuilder.ProcessorRefusedSpans.Add(ctx, int64(num), or.otelAttrs)
51+
or.telemetryBuilder.RecordProcessorRefusedSpans(ctx, int64(num), or.otelAttrs)
5252
case pipeline.SignalMetrics:
53-
or.telemetryBuilder.ProcessorRefusedMetricPoints.Add(ctx, int64(num), or.otelAttrs)
53+
or.telemetryBuilder.RecordProcessorRefusedMetricPoints(ctx, int64(num), or.otelAttrs)
5454
case pipeline.SignalLogs:
55-
or.telemetryBuilder.ProcessorRefusedLogRecords.Add(ctx, int64(num), or.otelAttrs)
55+
or.telemetryBuilder.RecordProcessorRefusedLogRecords(ctx, int64(num), or.otelAttrs)
5656
}
5757
}

0 commit comments

Comments
 (0)