@@ -200,29 +200,56 @@ used.
200
200
201
201
##### Explicit bucket histogram aggregation
202
202
203
- By default, the boundaries used for a Histogram are [ `{ 0, 5, 10, 25, 50, 75,
204
- 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000}`] ( https://github.com/open-telemetry/opentelemetry-specification/blob/v1.14.0/specification/metrics/sdk.md#explicit-bucket-histogram-aggregation ) .
205
- Views can be used to provide custom boundaries for a Histogram. The measurements
206
- are then aggregated using the custom boundaries provided instead of the
207
- default boundaries. This requires the use of
208
- ` ExplicitBucketHistogramConfiguration ` .
203
+ By default, the [ OpenTelemetry
204
+ Specification] ( https://github.com/open-telemetry/opentelemetry-specification/blob/v1.14.0/specification/metrics/sdk.md#explicit-bucket-histogram-aggregation )
205
+ defines explicit buckets (aka boundaries) for Histograms as: `[ 0, 5, 10, 25,
206
+ 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000 ] `.
209
207
210
- ``` csharp
211
- // Change Histogram boundaries to count measurements under the following buckets:
212
- // (-inf, 10]
213
- // (10, 20]
214
- // (20, +inf)
215
- .AddView (
216
- instrumentName : " MyHistogram" ,
217
- new ExplicitBucketHistogramConfiguration { Boundaries = new double [] { 10 , 20 } })
208
+ ###### Customizing explicit buckets when using histogram aggregation
218
209
219
- // If you provide an empty `double` array as `Boundaries` to the `ExplicitBucketHistogramConfiguration`,
220
- // the SDK will only export the sum, count, min and max for the measurements.
221
- // There are no buckets exported in this case.
222
- .AddView (
223
- instrumentName : " MyHistogram" ,
224
- new ExplicitBucketHistogramConfiguration { Boundaries = Array .Empty <double >() })
225
- ```
210
+ There are two mechanisms available to configure explicit buckets when using
211
+ histogram aggregation:
212
+
213
+ * View API - Part of the OpenTelemetry .NET SDK.
214
+ * Advice API - Part of the ` System.Diagnostics.DiagnosticSource ` package
215
+ starting with version ` 9.0.0 ` .
216
+
217
+ > [ !IMPORTANT]
218
+ > When both the View API and Advice API are used, the View API takes precedence.
219
+ If explicit buckets are not provided by either the View API or the Advice API
220
+ then the SDK defaults apply.
221
+
222
+ * View API
223
+
224
+ Views can be used to provide custom explicit buckets for a Histogram. This
225
+ requires the use of ` ExplicitBucketHistogramConfiguration ` .
226
+
227
+ ``` csharp
228
+ // Change Histogram boundaries to count measurements under the following buckets:
229
+ // (-inf, 10]
230
+ // (10, 20]
231
+ // (20, +inf)
232
+ .AddView (
233
+ instrumentName : " MyHistogram" ,
234
+ new ExplicitBucketHistogramConfiguration { Boundaries = new double [] { 10 , 20 } })
235
+
236
+ // If you provide an empty `double` array as `Boundaries` to the `ExplicitBucketHistogramConfiguration`,
237
+ // the SDK will only export the sum, count, min and max for the measurements.
238
+ // There are no buckets exported in this case.
239
+ .AddView (
240
+ instrumentName : " MyHistogram" ,
241
+ new ExplicitBucketHistogramConfiguration { Boundaries = Array .Empty <double >() })
242
+ ```
243
+
244
+ * Advice API
245
+
246
+ Starting with the ` 1.10.0 ` SDK, explicit buckets for a Histogram may be provided
247
+ by instrumentation authors when the instrument is created. This is generally
248
+ recommended to be used by library authors when the SDK defaults don't match the
249
+ required granularity for the histogram being emitted.
250
+
251
+ See:
252
+ [ InstrumentAdvice< ; T> ; ] ( https://learn.microsoft.com/dotnet/api/system.diagnostics.metrics.instrumentadvice-1 ) .
226
253
227
254
##### Base2 exponential bucket histogram aggregation
228
255
0 commit comments