From f4ca6b71b49629ff6f40174e1d032a82e5b5fe0f Mon Sep 17 00:00:00 2001 From: David Ashpole Date: Tue, 15 Oct 2024 16:21:17 +0000 Subject: [PATCH] add example for ExemplarReservoirProviderSelector --- sdk/metric/example_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/sdk/metric/example_test.go b/sdk/metric/example_test.go index 3fa7e969e4a..bf316ca94eb 100644 --- a/sdk/metric/example_test.go +++ b/sdk/metric/example_test.go @@ -242,6 +242,31 @@ func ExampleNewView_exponentialHistogram() { ) } +func ExampleNewView_exemplarreservoirproviderselector() { + // Create a view that makes all metrics use a different exemplar reservoir. + view := metric.NewView( + metric.Instrument{Name: "*"}, + metric.Stream{ + ExemplarReservoirProviderSelector: func(agg metric.Aggregation) exemplar.ReservoirProvider { + // This example uses a fixed-size reservoir with a size of 10 + // for explicit bucket histograms instead of the default + // bucket-aligned reservoir. + if _, ok := agg.(metric.AggregationExplicitBucketHistogram); ok { + return exemplar.FixedSizeReservoirProvider(10) + } + // Fall back to the default reservoir otherwise. + return metric.DefaultExemplarReservoirProviderSelector(agg) + }, + }, + ) + + // The created view can then be registered with the OpenTelemetry metric + // SDK using the WithView option. + _ = metric.NewMeterProvider( + metric.WithView(view), + ) +} + func ExampleWithExemplarFilter_disabled() { // Use exemplar.AlwaysOffFilter to disable exemplar collection. _ = metric.NewMeterProvider(