From 52bf82ec76f6dbcb64e90cd64fcf7757d27b3f44 Mon Sep 17 00:00:00 2001 From: Bogdan Drutu Date: Fri, 4 Oct 2024 14:23:17 -0700 Subject: [PATCH] Remove extra allocation when record metrics Signed-off-by: Bogdan Drutu --- .../exporterhelper/internal/obsexporter.go | 10 +++++----- processor/batchprocessor/metrics.go | 19 +++++++++---------- processor/memorylimiterprocessor/obsreport.go | 16 ++++++++-------- processor/processorhelper/obsreport.go | 10 +++++----- receiver/receiverhelper/obsreport.go | 10 +++++----- receiver/scraperhelper/obsreport.go | 10 +++++----- 6 files changed, 37 insertions(+), 38 deletions(-) diff --git a/exporter/exporterhelper/internal/obsexporter.go b/exporter/exporterhelper/internal/obsexporter.go index d6c3d841be3..c9fa30f8b61 100644 --- a/exporter/exporterhelper/internal/obsexporter.go +++ b/exporter/exporterhelper/internal/obsexporter.go @@ -23,7 +23,7 @@ type ObsReport struct { tracer trace.Tracer Signal pipeline.Signal - otelAttrs attribute.Set + otelAttrs metric.MeasurementOption TelemetryBuilder *metadata.TelemetryBuilder } @@ -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 } @@ -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) { @@ -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) } diff --git a/processor/batchprocessor/metrics.go b/processor/batchprocessor/metrics.go index 0c98063ceb2..0e5ddafd8ed 100644 --- a/processor/batchprocessor/metrics.go +++ b/processor/batchprocessor/metrics.go @@ -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 { @@ -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) } diff --git a/processor/memorylimiterprocessor/obsreport.go b/processor/memorylimiterprocessor/obsreport.go index ed25f6bbd59..5dc574c0eef 100644 --- a/processor/memorylimiterprocessor/obsreport.go +++ b/processor/memorylimiterprocessor/obsreport.go @@ -16,7 +16,7 @@ import ( ) type obsReport struct { - otelAttrs attribute.Set + otelAttrs metric.MeasurementOption telemetryBuilder *metadata.TelemetryBuilder } @@ -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 } @@ -36,11 +36,11 @@ 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) } } @@ -48,10 +48,10 @@ func (or *obsReport) accepted(ctx context.Context, num int, signal pipeline.Sign 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) } } diff --git a/processor/processorhelper/obsreport.go b/processor/processorhelper/obsreport.go index 7bee8e086b2..1eb4676c87b 100644 --- a/processor/processorhelper/obsreport.go +++ b/processor/processorhelper/obsreport.go @@ -46,7 +46,7 @@ func NewObsReport(_ ObsReportSettings) (*ObsReport, error) { } type obsReport struct { - otelAttrs attribute.Set + otelAttrs metric.MeasurementOption telemetryBuilder *metadata.TelemetryBuilder } @@ -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) } diff --git a/receiver/receiverhelper/obsreport.go b/receiver/receiverhelper/obsreport.go index b483c19be3f..1be60915288 100644 --- a/receiver/receiverhelper/obsreport.go +++ b/receiver/receiverhelper/obsreport.go @@ -27,7 +27,7 @@ type ObsReport struct { longLivedCtx bool tracer trace.Tracer - otelAttrs attribute.Set + otelAttrs metric.MeasurementOption telemetryBuilder *metadata.TelemetryBuilder } @@ -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 } @@ -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) } diff --git a/receiver/scraperhelper/obsreport.go b/receiver/scraperhelper/obsreport.go index 0424cde39bc..2b96eecbe8a 100644 --- a/receiver/scraperhelper/obsreport.go +++ b/receiver/scraperhelper/obsreport.go @@ -26,7 +26,7 @@ type obsReport struct { scraper component.ID tracer trace.Tracer - otelAttrs attribute.Set + otelAttrs metric.MeasurementOption telemetryBuilder *metadata.TelemetryBuilder } @@ -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 } @@ -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) }