Remove extra allocation when record metrics (#11365)

Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
Bogdan Drutu 2024-10-08 19:37:35 -07:00 committed by GitHub
parent 8bc3eae83f
commit cceb6c14e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 37 additions and 38 deletions

View File

@ -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)
}

View File

@ -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)
}

View File

@ -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)
}
}

View File

@ -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)
}

View File

@ -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)
}

View File

@ -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)
}