Skip to content

Commit 50b9b3c

Browse files
committed
remove option to keep scope info metric
1 parent edc2e56 commit 50b9b3c

File tree

9 files changed

+24
-81
lines changed

9 files changed

+24
-81
lines changed

exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/Otel2PrometheusConverter.java

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,9 @@
5656
import java.util.Collection;
5757
import java.util.Collections;
5858
import java.util.HashMap;
59-
import java.util.LinkedHashSet;
6059
import java.util.List;
6160
import java.util.Locale;
6261
import java.util.Map;
63-
import java.util.Set;
6462
import java.util.StringJoiner;
6563
import java.util.concurrent.ConcurrentHashMap;
6664
import java.util.concurrent.TimeUnit;
@@ -82,7 +80,6 @@ final class Otel2PrometheusConverter {
8280
private static final long NANOS_PER_MILLISECOND = TimeUnit.MILLISECONDS.toNanos(1);
8381
static final int MAX_CACHE_SIZE = 10;
8482

85-
private final boolean otelScopeInfoMetricEnabled;
8683
@Nullable private final Predicate<String> allowedResourceAttributesFilter;
8784

8885
/**
@@ -94,15 +91,10 @@ final class Otel2PrometheusConverter {
9491
/**
9592
* Constructor with feature flag parameter.
9693
*
97-
* @param otelScopeInfoMetricEnabled enable generation of the OpenTelemetry instrumentation scope
98-
* info metric and labels.
9994
* @param allowedResourceAttributesFilter if not {@code null}, resource attributes with keys
10095
* matching this predicate will be added as labels on each exported metric
10196
*/
102-
Otel2PrometheusConverter(
103-
boolean otelScopeInfoMetricEnabled,
104-
@Nullable Predicate<String> allowedResourceAttributesFilter) {
105-
this.otelScopeInfoMetricEnabled = otelScopeInfoMetricEnabled;
97+
Otel2PrometheusConverter(@Nullable Predicate<String> allowedResourceAttributesFilter) {
10698
this.allowedResourceAttributesFilter = allowedResourceAttributesFilter;
10799
this.resourceAttributesToAllowedKeysCache =
108100
allowedResourceAttributesFilter != null
@@ -116,7 +108,6 @@ MetricSnapshots convert(@Nullable Collection<MetricData> metricDataCollection) {
116108
}
117109
Map<String, MetricSnapshot> snapshotsByName = new HashMap<>(metricDataCollection.size());
118110
Resource resource = null;
119-
Set<InstrumentationScopeInfo> scopes = new LinkedHashSet<>();
120111
for (MetricData metricData : metricDataCollection) {
121112
MetricSnapshot snapshot = convert(metricData);
122113
if (snapshot == null) {
@@ -126,17 +117,10 @@ MetricSnapshots convert(@Nullable Collection<MetricData> metricDataCollection) {
126117
if (resource == null) {
127118
resource = metricData.getResource();
128119
}
129-
if (otelScopeInfoMetricEnabled
130-
&& !metricData.getInstrumentationScopeInfo().getAttributes().isEmpty()) {
131-
scopes.add(metricData.getInstrumentationScopeInfo());
132-
}
133120
}
134121
if (resource != null) {
135122
putOrMerge(snapshotsByName, makeTargetInfo(resource));
136123
}
137-
if (otelScopeInfoMetricEnabled && !scopes.isEmpty()) {
138-
putOrMerge(snapshotsByName, makeScopeInfo(scopes));
139-
}
140124
return new MetricSnapshots(snapshotsByName.values());
141125
}
142126

@@ -442,19 +426,6 @@ private InfoSnapshot makeTargetInfo(Resource resource) {
442426
resource.getAttributes()))));
443427
}
444428

445-
private InfoSnapshot makeScopeInfo(Set<InstrumentationScopeInfo> scopes) {
446-
List<InfoDataPointSnapshot> prometheusScopeInfos = new ArrayList<>(scopes.size());
447-
for (InstrumentationScopeInfo scope : scopes) {
448-
prometheusScopeInfos.add(
449-
new InfoDataPointSnapshot(
450-
convertAttributes(
451-
null, // resource attributes are only copied for point's attributes
452-
scope,
453-
scope.getAttributes())));
454-
}
455-
return new InfoSnapshot(new MetricMetadata("otel_scope"), prometheusScopeInfos);
456-
}
457-
458429
/**
459430
* Convert OpenTelemetry attributes to Prometheus labels.
460431
*

exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServer.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ public final class PrometheusHttpServer implements MetricReader {
4242

4343
private final String host;
4444
private final int port;
45-
private final boolean otelScopeInfoMetricEnabled;
4645
@Nullable private final Predicate<String> allowedResourceAttributesFilter;
4746
private final MemoryMode memoryMode;
4847
private final DefaultAggregationSelector defaultAggregationSelector;
@@ -72,21 +71,18 @@ public static PrometheusHttpServerBuilder builder() {
7271
int port,
7372
@Nullable ExecutorService executor,
7473
PrometheusRegistry prometheusRegistry,
75-
boolean otelScopeInfoMetricEnabled,
7674
@Nullable Predicate<String> allowedResourceAttributesFilter,
7775
MemoryMode memoryMode,
7876
@Nullable HttpHandler defaultHandler,
7977
DefaultAggregationSelector defaultAggregationSelector,
8078
@Nullable Authenticator authenticator) {
8179
this.host = host;
8280
this.port = port;
83-
this.otelScopeInfoMetricEnabled = otelScopeInfoMetricEnabled;
8481
this.allowedResourceAttributesFilter = allowedResourceAttributesFilter;
8582
this.memoryMode = memoryMode;
8683
this.defaultAggregationSelector = defaultAggregationSelector;
8784
this.builder = builder;
88-
this.prometheusMetricReader =
89-
new PrometheusMetricReader(otelScopeInfoMetricEnabled, allowedResourceAttributesFilter);
85+
this.prometheusMetricReader = new PrometheusMetricReader(allowedResourceAttributesFilter);
9086
this.prometheusRegistry = prometheusRegistry;
9187
prometheusRegistry.register(prometheusMetricReader);
9288
// When memory mode is REUSABLE_DATA, concurrent reads lead to data corruption. To prevent this,
@@ -171,7 +167,6 @@ public String toString() {
171167
StringJoiner joiner = new StringJoiner(",", "PrometheusHttpServer{", "}");
172168
joiner.add("host=" + host);
173169
joiner.add("port=" + port);
174-
joiner.add("otelScopeInfoMetricEnabled=" + otelScopeInfoMetricEnabled);
175170
joiner.add("allowedResourceAttributesFilter=" + allowedResourceAttributesFilter);
176171
joiner.add("memoryMode=" + memoryMode);
177172
joiner.add(

exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServerBuilder.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ public final class PrometheusHttpServerBuilder {
3030
private String host = DEFAULT_HOST;
3131
private int port = DEFAULT_PORT;
3232
private PrometheusRegistry prometheusRegistry = new PrometheusRegistry();
33-
private boolean otelScopeInfoMetricEnabled = true;
3433
@Nullable private Predicate<String> allowedResourceAttributesFilter;
3534
@Nullable private ExecutorService executor;
3635
private MemoryMode memoryMode = DEFAULT_MEMORY_MODE;
@@ -45,7 +44,6 @@ public final class PrometheusHttpServerBuilder {
4544
this.host = builder.host;
4645
this.port = builder.port;
4746
this.prometheusRegistry = builder.prometheusRegistry;
48-
this.otelScopeInfoMetricEnabled = builder.otelScopeInfoMetricEnabled;
4947
this.allowedResourceAttributesFilter = builder.allowedResourceAttributesFilter;
5048
this.executor = builder.executor;
5149
this.memoryMode = builder.memoryMode;
@@ -86,24 +84,14 @@ public PrometheusHttpServerBuilder setPrometheusRegistry(PrometheusRegistry prom
8684
/**
8785
* Set if the {@code otel_scope_*} attributes are generated. Default is {@code true}.
8886
*
89-
* @deprecated {@code otel_scope_*} attributes are always generated. Use {@link
90-
* #setOtelScopeInfoMetricEnabled(boolean)} to control emission of the {@code otel_scope_info}
91-
* metric.
87+
* @deprecated {@code otel_scope_*} attributes are always generated.
9288
*/
9389
@SuppressWarnings("UnusedReturnValue")
9490
@Deprecated
9591
public PrometheusHttpServerBuilder setOtelScopeEnabled(boolean otelScopeEnabled) {
9692
return this;
9793
}
9894

99-
/** Set if the {@code otel_scope_info} metric is emitted. Default is {@code true}. */
100-
@SuppressWarnings("UnusedReturnValue")
101-
public PrometheusHttpServerBuilder setOtelScopeInfoMetricEnabled(
102-
boolean otelScopeInfoMetricEnabled) {
103-
this.otelScopeInfoMetricEnabled = otelScopeInfoMetricEnabled;
104-
return this;
105-
}
106-
10795
/**
10896
* Set if the resource attributes should be added as labels on each exported metric.
10997
*
@@ -190,7 +178,6 @@ public PrometheusHttpServer build() {
190178
port,
191179
executor,
192180
prometheusRegistry,
193-
otelScopeInfoMetricEnabled,
194181
allowedResourceAttributesFilter,
195182
memoryMode,
196183
defaultHandler,

exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/PrometheusMetricReader.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,21 @@ public class PrometheusMetricReader implements MetricReader, MultiCollector {
2828
private volatile CollectionRegistration collectionRegistration = CollectionRegistration.noop();
2929
private final Otel2PrometheusConverter converter;
3030

31-
// TODO: refactor to public static create or builder pattern to align with project style
31+
/**
32+
* Deprecated. Use {@link #PrometheusMetricReader(Predicate)}.
33+
*
34+
* @deprecated use {@link #PrometheusMetricReader(Predicate)}.
35+
*/
36+
@Deprecated
37+
@SuppressWarnings({"unused", "InconsistentOverloads"})
3238
public PrometheusMetricReader(
33-
boolean otelScopeInfoMetricEnabled,
34-
@Nullable Predicate<String> allowedResourceAttributesFilter) {
35-
this.converter =
36-
new Otel2PrometheusConverter(otelScopeInfoMetricEnabled, allowedResourceAttributesFilter);
39+
boolean otelScopeEnabled, @Nullable Predicate<String> allowedResourceAttributesFilter) {
40+
this.converter = new Otel2PrometheusConverter(allowedResourceAttributesFilter);
41+
}
42+
43+
// TODO: refactor to public static create or builder pattern to align with project style
44+
public PrometheusMetricReader(@Nullable Predicate<String> allowedResourceAttributesFilter) {
45+
this.converter = new Otel2PrometheusConverter(allowedResourceAttributesFilter);
3746
}
3847

3948
@Override

exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/internal/PrometheusComponentProvider.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,6 @@ public MetricReader create(DeclarativeConfigProperties config) {
4545
prometheusBuilder.setHost(host);
4646
}
4747

48-
Boolean withoutScopeInfo = config.getBoolean("without_scope_info_metric");
49-
if (withoutScopeInfo != null) {
50-
prometheusBuilder.setOtelScopeInfoMetricEnabled(!withoutScopeInfo);
51-
}
52-
5348
DeclarativeConfigProperties withResourceConstantLabels =
5449
config.getStructured("with_resource_constant_labels");
5550
if (withResourceConstantLabels != null) {

exporters/prometheus/src/test/java/io/opentelemetry/exporter/prometheus/Otel2PrometheusConverterTest.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ class Otel2PrometheusConverterTest {
7171
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
7272

7373
private final Otel2PrometheusConverter converter =
74-
new Otel2PrometheusConverter(
75-
/* otelScopeInfoMetricEnabled */ true, /* allowedResourceAttributesFilter= */ null);
74+
new Otel2PrometheusConverter(/* allowedResourceAttributesFilter= */ null);
7675

7776
@ParameterizedTest
7877
@MethodSource("metricMetadataArgs")
@@ -202,8 +201,7 @@ void resourceAttributesAddition(
202201
throws IOException {
203202

204203
Otel2PrometheusConverter converter =
205-
new Otel2PrometheusConverter(
206-
/* otelScopeInfoMetricEnabled */ true, allowedResourceAttributesFilter);
204+
new Otel2PrometheusConverter(allowedResourceAttributesFilter);
207205

208206
ByteArrayOutputStream out = new ByteArrayOutputStream();
209207
MetricSnapshots snapshots = converter.convert(Collections.singletonList(metricData));
@@ -503,9 +501,7 @@ void validateCacheIsBounded() {
503501
};
504502

505503
Otel2PrometheusConverter otel2PrometheusConverter =
506-
new Otel2PrometheusConverter(
507-
/* otelScopeInfoMetricEnabled */ true,
508-
/* allowedResourceAttributesFilter= */ countPredicate);
504+
new Otel2PrometheusConverter(/* allowedResourceAttributesFilter= */ countPredicate);
509505

510506
// Create 20 different metric data objects with 2 different resource attributes;
511507
Resource resource1 = Resource.builder().put("cluster", "cluster1").build();

exporters/prometheus/src/test/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServerTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,6 @@ void stringRepresentation() {
413413
"PrometheusHttpServer{"
414414
+ "host=localhost,"
415415
+ "port=0,"
416-
+ "otelScopeInfoMetricEnabled=true,"
417416
+ "allowedResourceAttributesFilter=null,"
418417
+ "memoryMode=REUSABLE_DATA,"
419418
+ "defaultAggregationSelector=DefaultAggregationSelector{COUNTER=default, UP_DOWN_COUNTER=default, HISTOGRAM=default, OBSERVABLE_COUNTER=default, OBSERVABLE_UP_DOWN_COUNTER=default, OBSERVABLE_GAUGE=default, GAUGE=default}"
@@ -528,7 +527,6 @@ void toBuilder() {
528527
PrometheusHttpServerBuilder builder = PrometheusHttpServer.builder();
529528
builder.setHost("localhost");
530529
builder.setPort(1234);
531-
builder.setOtelScopeInfoMetricEnabled(false);
532530

533531
Predicate<String> resourceAttributesFilter = s -> false;
534532
builder.setAllowedResourceAttributesFilter(resourceAttributesFilter);
@@ -555,7 +553,6 @@ public Result authenticate(HttpExchange exchange) {
555553
.isInstanceOf(PrometheusHttpServerBuilder.class)
556554
.hasFieldOrPropertyWithValue("host", "localhost")
557555
.hasFieldOrPropertyWithValue("port", 1234)
558-
.hasFieldOrPropertyWithValue("otelScopeInfoMetricEnabled", false)
559556
.hasFieldOrPropertyWithValue("allowedResourceAttributesFilter", resourceAttributesFilter)
560557
.hasFieldOrPropertyWithValue("executor", executor)
561558
.hasFieldOrPropertyWithValue("prometheusRegistry", prometheusRegistry)

exporters/prometheus/src/test/java/io/opentelemetry/exporter/prometheus/PrometheusMetricReaderTest.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,7 @@ class PrometheusMetricReaderTest {
6161
void setUp() {
6262
this.testClock.setTime(Instant.ofEpochMilli((System.currentTimeMillis() / 100) * 100));
6363
this.createdTimestamp = convertTimestamp(testClock.now());
64-
this.reader =
65-
new PrometheusMetricReader(
66-
/* otelScopeInfoMetricEnabled */ true, /* allowedResourceAttributesFilter= */ null);
64+
this.reader = new PrometheusMetricReader(/* allowedResourceAttributesFilter= */ null);
6765
this.meter =
6866
SdkMeterProvider.builder()
6967
.setClock(testClock)
@@ -778,8 +776,7 @@ void exponentialHistogramBucketConversion() {
778776
int otelScale = random.nextInt(24) - 4;
779777
int prometheusScale = Math.min(otelScale, 8);
780778
PrometheusMetricReader reader =
781-
new PrometheusMetricReader(
782-
/* otelScopeInfoMetricEnabled */ true, /* allowedResourceAttributesFilter= */ null);
779+
new PrometheusMetricReader(/* allowedResourceAttributesFilter= */ null);
783780
Meter meter =
784781
SdkMeterProvider.builder()
785782
.registerMetricReader(reader)
@@ -1032,8 +1029,7 @@ void otelScopeComplete() throws IOException {
10321029
@Test
10331030
void otelScopeLabelsOnly() throws IOException {
10341031
PrometheusMetricReader reader =
1035-
new PrometheusMetricReader(
1036-
/* otelScopeInfoMetricEnabled */ false, /* allowedResourceAttributesFilter= */ null);
1032+
new PrometheusMetricReader(/* allowedResourceAttributesFilter= */ null);
10371033
Meter meter =
10381034
SdkMeterProvider.builder()
10391035
.setClock(testClock)
@@ -1063,9 +1059,7 @@ void otelScopeLabelsOnly() throws IOException {
10631059
@Test
10641060
void addResourceAttributesWorks() throws IOException {
10651061
PrometheusMetricReader reader =
1066-
new PrometheusMetricReader(
1067-
/* otelScopeInfoMetricEnabled */ true,
1068-
/* allowedResourceAttributesFilter= */ Predicates.is("cluster"));
1062+
new PrometheusMetricReader(/* allowedResourceAttributesFilter= */ Predicates.is("cluster"));
10691063
Meter meter =
10701064
SdkMeterProvider.builder()
10711065
.setClock(testClock)

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricReaderFactoryTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@ void create_PullPrometheusConfigured() throws IOException {
165165
PrometheusHttpServer.builder()
166166
.setHost("localhost")
167167
.setPort(port)
168-
.setOtelScopeInfoMetricEnabled(true) // always enabled for declarative config
169168
.setAllowedResourceAttributesFilter(
170169
IncludeExcludePredicate.createPatternMatching(
171170
singletonList("foo"), singletonList("bar")))

0 commit comments

Comments
 (0)