Skip to content

Commit

Permalink
Remove extra allocation when record metrics (#11365)
Browse files Browse the repository at this point in the history
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
  • Loading branch information
bogdandrutu authored Oct 9, 2024
1 parent 8bc3eae commit cceb6c1
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 38 deletions.
10 changes: 5 additions & 5 deletions exporter/exporterhelper/internal/obsexporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ type ObsReport struct {
tracer trace.Tracer
Signal pipeline.Signal

otelAttrs attribute.Set
otelAttrs metric.MeasurementOption
TelemetryBuilder *metadata.TelemetryBuilder
}

Expand All @@ -44,7 +44,7 @@ func NewExporter(cfg ObsReportSettings) (*ObsReport, error) {
spanNamePrefix: ExporterPrefix + cfg.ExporterID.String(),
tracer: cfg.ExporterCreateSettings.TracerProvider.Tracer(cfg.ExporterID.String()),
Signal: cfg.Signal,
otelAttrs: attribute.NewSet(attribute.String(ExporterKey, cfg.ExporterID.String())),
otelAttrs: metric.WithAttributeSet(attribute.NewSet(attribute.String(ExporterKey, cfg.ExporterID.String()))),
TelemetryBuilder: telemetryBuilder,
}, nil
}
Expand Down Expand Up @@ -116,8 +116,8 @@ func (or *ObsReport) recordMetrics(ctx context.Context, signal pipeline.Signal,
failedMeasure = or.TelemetryBuilder.ExporterSendFailedLogRecords
}

sentMeasure.Add(ctx, sent, metric.WithAttributeSet(or.otelAttrs))
failedMeasure.Add(ctx, failed, metric.WithAttributeSet(or.otelAttrs))
sentMeasure.Add(ctx, sent, or.otelAttrs)
failedMeasure.Add(ctx, failed, or.otelAttrs)
}

func endSpan(ctx context.Context, err error, numSent, numFailedToSend int64, sentItemsKey, failedToSendItemsKey string) {
Expand Down Expand Up @@ -153,5 +153,5 @@ func (or *ObsReport) RecordEnqueueFailure(ctx context.Context, signal pipeline.S
enqueueFailedMeasure = or.TelemetryBuilder.ExporterEnqueueFailedLogRecords
}

enqueueFailedMeasure.Add(ctx, failed, metric.WithAttributeSet(or.otelAttrs))
enqueueFailedMeasure.Add(ctx, failed, or.otelAttrs)
}
19 changes: 9 additions & 10 deletions processor/batchprocessor/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,16 @@ type batchProcessorTelemetry struct {

exportCtx context.Context

processorAttr attribute.Set
processorAttr metric.MeasurementOption
telemetryBuilder *metadata.TelemetryBuilder
}

func newBatchProcessorTelemetry(set processor.Settings, currentMetadataCardinality func() int) (*batchProcessorTelemetry, error) {
attrs := attribute.NewSet(attribute.String(internal.ProcessorKey, set.ID.String()))
attrs := metric.WithAttributeSet(attribute.NewSet(attribute.String(internal.ProcessorKey, set.ID.String())))

telemetryBuilder, err := metadata.NewTelemetryBuilder(set.TelemetrySettings,
metadata.WithProcessorBatchMetadataCardinalityCallback(func() int64 {
return int64(currentMetadataCardinality())
}, metric.WithAttributeSet(attrs)),
telemetryBuilder, err := metadata.NewTelemetryBuilder(
set.TelemetrySettings,
metadata.WithProcessorBatchMetadataCardinalityCallback(func() int64 { return int64(currentMetadataCardinality()) }, attrs),
)

if err != nil {
Expand All @@ -55,11 +54,11 @@ func newBatchProcessorTelemetry(set processor.Settings, currentMetadataCardinali
func (bpt *batchProcessorTelemetry) record(trigger trigger, sent, bytes int64) {
switch trigger {
case triggerBatchSize:
bpt.telemetryBuilder.ProcessorBatchBatchSizeTriggerSend.Add(bpt.exportCtx, 1, metric.WithAttributeSet(bpt.processorAttr))
bpt.telemetryBuilder.ProcessorBatchBatchSizeTriggerSend.Add(bpt.exportCtx, 1, bpt.processorAttr)
case triggerTimeout:
bpt.telemetryBuilder.ProcessorBatchTimeoutTriggerSend.Add(bpt.exportCtx, 1, metric.WithAttributeSet(bpt.processorAttr))
bpt.telemetryBuilder.ProcessorBatchTimeoutTriggerSend.Add(bpt.exportCtx, 1, bpt.processorAttr)
}

bpt.telemetryBuilder.ProcessorBatchBatchSendSize.Record(bpt.exportCtx, sent, metric.WithAttributeSet(bpt.processorAttr))
bpt.telemetryBuilder.ProcessorBatchBatchSendSizeBytes.Record(bpt.exportCtx, bytes, metric.WithAttributeSet(bpt.processorAttr))
bpt.telemetryBuilder.ProcessorBatchBatchSendSize.Record(bpt.exportCtx, sent, bpt.processorAttr)
bpt.telemetryBuilder.ProcessorBatchBatchSendSizeBytes.Record(bpt.exportCtx, bytes, bpt.processorAttr)
}
16 changes: 8 additions & 8 deletions processor/memorylimiterprocessor/obsreport.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import (
)

type obsReport struct {
otelAttrs attribute.Set
otelAttrs metric.MeasurementOption
telemetryBuilder *metadata.TelemetryBuilder
}

Expand All @@ -27,7 +27,7 @@ func newObsReport(set processor.Settings) (*obsReport, error) {
}

return &obsReport{
otelAttrs: attribute.NewSet(attribute.String(internal.ProcessorKey, set.ID.String())),
otelAttrs: metric.WithAttributeSet(attribute.NewSet(attribute.String(internal.ProcessorKey, set.ID.String()))),
telemetryBuilder: telemetryBuilder,
}, nil
}
Expand All @@ -36,22 +36,22 @@ func newObsReport(set processor.Settings) (*obsReport, error) {
func (or *obsReport) accepted(ctx context.Context, num int, signal pipeline.Signal) {
switch signal {
case pipeline.SignalTraces:
or.telemetryBuilder.ProcessorAcceptedSpans.Add(ctx, int64(num), metric.WithAttributeSet(or.otelAttrs))
or.telemetryBuilder.ProcessorAcceptedSpans.Add(ctx, int64(num), or.otelAttrs)
case pipeline.SignalMetrics:
or.telemetryBuilder.ProcessorAcceptedMetricPoints.Add(ctx, int64(num), metric.WithAttributeSet(or.otelAttrs))
or.telemetryBuilder.ProcessorAcceptedMetricPoints.Add(ctx, int64(num), or.otelAttrs)
case pipeline.SignalLogs:
or.telemetryBuilder.ProcessorAcceptedLogRecords.Add(ctx, int64(num), metric.WithAttributeSet(or.otelAttrs))
or.telemetryBuilder.ProcessorAcceptedLogRecords.Add(ctx, int64(num), or.otelAttrs)
}
}

// refused reports that the num data that was refused.
func (or *obsReport) refused(ctx context.Context, num int, signal pipeline.Signal) {
switch signal {
case pipeline.SignalTraces:
or.telemetryBuilder.ProcessorRefusedSpans.Add(ctx, int64(num), metric.WithAttributeSet(or.otelAttrs))
or.telemetryBuilder.ProcessorRefusedSpans.Add(ctx, int64(num), or.otelAttrs)
case pipeline.SignalMetrics:
or.telemetryBuilder.ProcessorRefusedMetricPoints.Add(ctx, int64(num), metric.WithAttributeSet(or.otelAttrs))
or.telemetryBuilder.ProcessorRefusedMetricPoints.Add(ctx, int64(num), or.otelAttrs)
case pipeline.SignalLogs:
or.telemetryBuilder.ProcessorRefusedLogRecords.Add(ctx, int64(num), metric.WithAttributeSet(or.otelAttrs))
or.telemetryBuilder.ProcessorRefusedLogRecords.Add(ctx, int64(num), or.otelAttrs)
}
}
10 changes: 5 additions & 5 deletions processor/processorhelper/obsreport.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func NewObsReport(_ ObsReportSettings) (*ObsReport, error) {
}

type obsReport struct {
otelAttrs attribute.Set
otelAttrs metric.MeasurementOption
telemetryBuilder *metadata.TelemetryBuilder
}

Expand All @@ -56,15 +56,15 @@ func newObsReport(set processor.Settings, signal pipeline.Signal) (*obsReport, e
return nil, err
}
return &obsReport{
otelAttrs: attribute.NewSet(
otelAttrs: metric.WithAttributeSet(attribute.NewSet(
attribute.String(internal.ProcessorKey, set.ID.String()),
attribute.String(signalKey, signal.String()),
),
)),
telemetryBuilder: telemetryBuilder,
}, nil
}

func (or *obsReport) recordInOut(ctx context.Context, incoming, outgoing int) {
or.telemetryBuilder.ProcessorIncomingItems.Add(ctx, int64(incoming), metric.WithAttributeSet(or.otelAttrs))
or.telemetryBuilder.ProcessorOutgoingItems.Add(ctx, int64(outgoing), metric.WithAttributeSet(or.otelAttrs))
or.telemetryBuilder.ProcessorIncomingItems.Add(ctx, int64(incoming), or.otelAttrs)
or.telemetryBuilder.ProcessorOutgoingItems.Add(ctx, int64(outgoing), or.otelAttrs)
}
10 changes: 5 additions & 5 deletions receiver/receiverhelper/obsreport.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ type ObsReport struct {
longLivedCtx bool
tracer trace.Tracer

otelAttrs attribute.Set
otelAttrs metric.MeasurementOption
telemetryBuilder *metadata.TelemetryBuilder
}

Expand Down Expand Up @@ -60,10 +60,10 @@ func newReceiver(cfg ObsReportSettings) (*ObsReport, error) {
longLivedCtx: cfg.LongLivedCtx,
tracer: cfg.ReceiverCreateSettings.TracerProvider.Tracer(cfg.ReceiverID.String()),

otelAttrs: attribute.NewSet(
otelAttrs: metric.WithAttributeSet(attribute.NewSet(
attribute.String(internal.ReceiverKey, cfg.ReceiverID.String()),
attribute.String(internal.TransportKey, cfg.Transport),
),
)),
telemetryBuilder: telemetryBuilder,
}, nil
}
Expand Down Expand Up @@ -207,6 +207,6 @@ func (rec *ObsReport) recordMetrics(receiverCtx context.Context, signal pipeline
refusedMeasure = rec.telemetryBuilder.ReceiverRefusedLogRecords
}

acceptedMeasure.Add(receiverCtx, int64(numAccepted), metric.WithAttributeSet(rec.otelAttrs))
refusedMeasure.Add(receiverCtx, int64(numRefused), metric.WithAttributeSet(rec.otelAttrs))
acceptedMeasure.Add(receiverCtx, int64(numAccepted), rec.otelAttrs)
refusedMeasure.Add(receiverCtx, int64(numRefused), rec.otelAttrs)
}
10 changes: 5 additions & 5 deletions receiver/scraperhelper/obsreport.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ type obsReport struct {
scraper component.ID
tracer trace.Tracer

otelAttrs attribute.Set
otelAttrs metric.MeasurementOption
telemetryBuilder *metadata.TelemetryBuilder
}

Expand All @@ -47,10 +47,10 @@ func newScraper(cfg obsReportSettings) (*obsReport, error) {
scraper: cfg.Scraper,
tracer: cfg.ReceiverCreateSettings.TracerProvider.Tracer(cfg.Scraper.String()),

otelAttrs: attribute.NewSet(
otelAttrs: metric.WithAttributeSet(attribute.NewSet(
attribute.String(internal.ReceiverKey, cfg.ReceiverID.String()),
attribute.String(internal.ScraperKey, cfg.Scraper.String()),
),
)),
telemetryBuilder: telemetryBuilder,
}, nil
}
Expand Down Expand Up @@ -103,6 +103,6 @@ func (s *obsReport) EndMetricsOp(
}

func (s *obsReport) recordMetrics(scraperCtx context.Context, numScrapedMetrics, numErroredMetrics int) {
s.telemetryBuilder.ScraperScrapedMetricPoints.Add(scraperCtx, int64(numScrapedMetrics), metric.WithAttributeSet(s.otelAttrs))
s.telemetryBuilder.ScraperErroredMetricPoints.Add(scraperCtx, int64(numErroredMetrics), metric.WithAttributeSet(s.otelAttrs))
s.telemetryBuilder.ScraperScrapedMetricPoints.Add(scraperCtx, int64(numScrapedMetrics), s.otelAttrs)
s.telemetryBuilder.ScraperErroredMetricPoints.Add(scraperCtx, int64(numErroredMetrics), s.otelAttrs)
}

0 comments on commit cceb6c1

Please sign in to comment.