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