@@ -130,7 +130,7 @@ func New(ctx context.Context, set Settings, cfg Config) (*Service, error) {
130
130
131
131
sch := semconv .SchemaURL
132
132
133
- views := disableHighCardinalityMetrics ( )
133
+ views := configureViews ( cfg . Telemetry . Metrics . Level )
134
134
135
135
readers := cfg .Telemetry .Metrics .Readers
136
136
if cfg .Telemetry .Metrics .Level == configtelemetry .LevelNone {
@@ -230,8 +230,7 @@ func logsAboutMeterProvider(logger *zap.Logger, cfg telemetry.MetricsConfig, mp
230
230
return
231
231
}
232
232
233
- //nolint:staticcheck
234
- if len (cfg .Address ) != 0 {
233
+ if len (cfg .Address ) != 0 { //nolint SA1019
235
234
logger .Warn ("service::telemetry::metrics::address is being deprecated in favor of service::telemetry::metrics::readers" )
236
235
}
237
236
@@ -385,40 +384,133 @@ func pdataFromSdk(res *sdkresource.Resource) pcommon.Resource {
385
384
return pcommonRes
386
385
}
387
386
388
- func disableHighCardinalityMetrics () []config.View {
389
- var views []config.View
390
- if disableHighCardinalityMetricsFeatureGate .IsEnabled () {
391
- return views
392
- }
393
- return []config.View {
394
- {
395
- Selector : & config.ViewSelector {
396
- MeterName : ptr ("go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" ),
387
+ func dropViewOption (selector * config.ViewSelector ) config.View {
388
+ return config.View {
389
+ Selector : selector ,
390
+ Stream : & config.ViewStream {
391
+ Aggregation : & config.ViewStreamAggregation {
392
+ Drop : config.ViewStreamAggregationDrop {},
397
393
},
398
- Stream : & config.ViewStream {
399
- AttributeKeys : & config.IncludeExclude {
400
- Excluded : []string {
401
- semconv118 .AttributeNetSockPeerAddr ,
402
- semconv118 .AttributeNetSockPeerPort ,
403
- semconv118 .AttributeNetSockPeerName ,
394
+ },
395
+ }
396
+ }
397
+
398
+ func configureViews (level configtelemetry.Level ) []config.View {
399
+ views := []config.View {}
400
+
401
+ if disableHighCardinalityMetricsFeatureGate .IsEnabled () {
402
+ views = append (views , []config.View {
403
+ {
404
+ Selector : & config.ViewSelector {
405
+ MeterName : ptr ("go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" ),
406
+ },
407
+ Stream : & config.ViewStream {
408
+ AttributeKeys : & config.IncludeExclude {
409
+ Excluded : []string {
410
+ semconv118 .AttributeNetSockPeerAddr ,
411
+ semconv118 .AttributeNetSockPeerPort ,
412
+ semconv118 .AttributeNetSockPeerName ,
413
+ },
404
414
},
405
415
},
406
416
},
407
- },
408
- {
409
- Selector : & config. ViewSelector {
410
- MeterName : ptr ( "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" ) ,
411
- },
412
- Stream : & config.ViewStream {
413
- AttributeKeys : & config. IncludeExclude {
414
- Excluded : [] string {
415
- semconv118 .AttributeNetHostName ,
416
- semconv118 . AttributeNetHostPort ,
417
+ {
418
+ Selector : & config. ViewSelector {
419
+ MeterName : ptr ( "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" ),
420
+ } ,
421
+ Stream : & config. ViewStream {
422
+ AttributeKeys : & config.IncludeExclude {
423
+ Excluded : [] string {
424
+ semconv118 . AttributeNetHostName ,
425
+ semconv118 .AttributeNetHostPort ,
426
+ } ,
417
427
},
418
428
},
419
429
},
420
- },
430
+ }... )
431
+ }
432
+
433
+ if level < configtelemetry .LevelDetailed {
434
+ // Drop all otelhttp and otelgrpc metrics if the level is not detailed.
435
+ views = append (views ,
436
+ dropViewOption (& config.ViewSelector {
437
+ MeterName : ptr ("go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" ),
438
+ }),
439
+ dropViewOption (& config.ViewSelector {
440
+ MeterName : ptr ("go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" ),
441
+ }),
442
+ )
443
+ }
444
+
445
+ // otel-arrow library metrics
446
+ // See https://github.com/open-telemetry/otel-arrow/blob/c39257/pkg/otel/arrow_record/consumer.go#L174-L176
447
+ if level < configtelemetry .LevelNormal {
448
+ scope := ptr ("otel-arrow/pkg/otel/arrow_record" )
449
+ views = append (views ,
450
+ dropViewOption (& config.ViewSelector {
451
+ MeterName : scope ,
452
+ InstrumentName : ptr ("arrow_batch_records" ),
453
+ }),
454
+ dropViewOption (& config.ViewSelector {
455
+ MeterName : scope ,
456
+ InstrumentName : ptr ("arrow_schema_resets" ),
457
+ }),
458
+ dropViewOption (& config.ViewSelector {
459
+ MeterName : scope ,
460
+ InstrumentName : ptr ("arrow_memory_inuse" ),
461
+ }),
462
+ )
463
+ }
464
+
465
+ // contrib's internal/otelarrow/netstats metrics
466
+ // See
467
+ // - https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/a25f05/internal/otelarrow/netstats/netstats.go#L130
468
+ // - https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/a25f05/internal/otelarrow/netstats/netstats.go#L165
469
+ if level < configtelemetry .LevelDetailed {
470
+ scope := ptr ("github.com/open-telemetry/opentelemetry-collector-contrib/internal/otelarrow/netstats" )
471
+
472
+ views = append (views ,
473
+ // Compressed size metrics.
474
+ dropViewOption (& config.ViewSelector {
475
+ MeterName : scope ,
476
+ InstrumentName : ptr ("otelcol_*_compressed_size" ),
477
+ }),
478
+ dropViewOption (& config.ViewSelector {
479
+ MeterName : scope ,
480
+ InstrumentName : ptr ("otelcol_*_compressed_size" ),
481
+ }),
482
+
483
+ // makeRecvMetrics for exporters.
484
+ dropViewOption (& config.ViewSelector {
485
+ MeterName : scope ,
486
+ InstrumentName : ptr ("otelcol_exporter_recv" ),
487
+ }),
488
+ dropViewOption (& config.ViewSelector {
489
+ MeterName : scope ,
490
+ InstrumentName : ptr ("otelcol_exporter_recv_wire" ),
491
+ }),
492
+
493
+ // makeSentMetrics for receivers.
494
+ dropViewOption (& config.ViewSelector {
495
+ MeterName : scope ,
496
+ InstrumentName : ptr ("otelcol_receiver_sent" ),
497
+ }),
498
+ dropViewOption (& config.ViewSelector {
499
+ MeterName : scope ,
500
+ InstrumentName : ptr ("otelcol_receiver_sent_wire" ),
501
+ }),
502
+ )
503
+ }
504
+
505
+ // Batch processor metrics
506
+ if level < configtelemetry .LevelDetailed {
507
+ scope := ptr ("go.opentelemetry.io/collector/processor/batchprocessor" )
508
+ views = append (views , dropViewOption (& config.ViewSelector {
509
+ MeterName : scope ,
510
+ InstrumentName : ptr ("otelcol_processor_batch_batch_send_size_bytes" ),
511
+ }))
421
512
}
513
+ return views
422
514
}
423
515
424
516
func ptr [T any ](v T ) * T {
0 commit comments