Skip to content

Commit 2db78d8

Browse files
committed
Java documentation for cardinality limits
1 parent ad58587 commit 2db78d8

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

content/en/docs/languages/java/sdk.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,14 @@ and is responsible for handling metric telemetry produced by the API.
567567

568568
- [Resource](#resource): The resource metrics are associated with.
569569
- [MetricReader](#metricreader): Reads the aggregated state of metrics.
570+
- Optionally, with
571+
[CardinalityLimitSelector](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-metrics/latest/io/opentelemetry/sdk/metrics/export/CardinalityLimitSelector.html)
572+
for overriding cardinality limit by instrument kind. If unset, each
573+
instrument is limited to 2000 unique combinations of attributes per
574+
collection cycle. Cardinality limits are also configurable for individual
575+
instruments via [views](#views). See
576+
[cardinality limits](/docs/specs/otel/metrics/sdk/#cardinality-limits) for
577+
more details.
570578
- [MetricExporter](#metricexporter): Exports metrics out of process (in
571579
conjunction with associated `MetricReader`).
572580
- [Views](#views): Configures metric streams, including dropping unused metrics.
@@ -594,11 +602,18 @@ public class SdkMeterProviderConfig {
594602
MetricReaderConfig.periodicMetricReader(
595603
MetricExporterConfig.otlpHttpMetricExporter(
596604
"http://localhost:4318/v1/metrics")));
605+
// Uncomment to optionally register metric reader with cardinality limits
606+
// builder.registerMetricReader(
607+
// MetricReaderConfig.periodicMetricReader(
608+
// MetricExporterConfig.otlpHttpMetricExporter("http://localhost:4318/v1/metrics")),
609+
// unusedInstrumentType -> 100);
610+
597611
ViewConfig.dropMetricView(builder, "some.custom.metric");
598612
ViewConfig.histogramBucketBoundariesView(
599613
builder, "http.server.request.duration", List.of(1.0, 5.0, 10.0));
600614
ViewConfig.attributeFilterView(
601615
builder, "http.client.request.duration", Set.of("http.request.method"));
616+
ViewConfig.cardinalityLimitsView(builder, "http.server.active_requests", 100);
602617
return builder.build();
603618
}
604619
}
@@ -874,7 +889,7 @@ public class CustomMetricExporter implements MetricExporter {
874889
[Views](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-metrics/latest/io/opentelemetry/sdk/metrics/View.html)
875890
allow metric streams to be customized, including changing metric names, metric
876891
descriptions, metric aggregations (i.e. histogram bucket boundaries), the set of
877-
attribute keys to retain, etc.
892+
attribute keys to retain, cardinality limit, etc.
878893

879894
{{% alert %}} Views have somewhat unintuitive behavior when multiple match a
880895
particular instrument. If one matching view changes the metric name and another
@@ -922,6 +937,13 @@ public class ViewConfig {
922937
InstrumentSelector.builder().setName(metricName).build(),
923938
View.builder().setAttributeFilter(keysToRetain).build());
924939
}
940+
941+
public static SdkMeterProviderBuilder cardinalityLimitsView(
942+
SdkMeterProviderBuilder builder, String metricName, int cardinalityLimit) {
943+
return builder.registerView(
944+
InstrumentSelector.builder().setName(metricName).build(),
945+
View.builder().setCardinalityLimit(cardinalityLimit).build());
946+
}
925947
}
926948
```
927949
<!-- prettier-ignore-end -->

0 commit comments

Comments
 (0)