Skip to content

Commit 44b62ae

Browse files
authored
Mark nonstable JMX targets experimental (#18971)
1 parent a5d55cf commit 44b62ae

6 files changed

Lines changed: 27 additions & 7 deletions

File tree

instrumentation/jmx-metrics/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ To enable collection of the predefined metrics, specify a list of targets as the
1818

1919
```bash
2020
$ java -javaagent:path/to/opentelemetry-javaagent.jar \
21-
-Dotel.jmx.target.system=jetty,kafka-broker \
21+
-Dotel.jmx.target.system=jetty,experimental-kafka-broker \
2222
... \
2323
-jar myapp.jar
2424
```
@@ -28,8 +28,8 @@ No targets are enabled by default. The supported target environments are listed
2828
- [activemq](library/activemq.md)
2929
- [camel](library/camel.md)
3030
- [jetty](library/jetty.md)
31-
- [kafka-broker](javaagent/kafka-broker.md)
32-
- [kafka-connect](library/kafka-connect.md)
31+
- [experimental-kafka-broker](javaagent/kafka-broker.md)
32+
- [experimental-kafka-connect](library/kafka-connect.md)
3333
- [tomcat](library/tomcat.md)
3434
- [wildfly](library/wildfly.md)
3535
- [hadoop](library/hadoop.md)

instrumentation/jmx-metrics/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jmx/JmxMetricInsightInstaller.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77

88
import static java.util.Collections.emptyList;
99
import static java.util.logging.Level.SEVERE;
10+
import static java.util.logging.Level.WARNING;
1011

1112
import com.google.auto.service.AutoService;
1213
import io.opentelemetry.api.GlobalOpenTelemetry;
1314
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
1415
import io.opentelemetry.instrumentation.api.incubator.config.internal.DeclarativeConfigUtil;
1516
import io.opentelemetry.instrumentation.jmx.JmxTelemetry;
1617
import io.opentelemetry.instrumentation.jmx.JmxTelemetryBuilder;
18+
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
1719
import io.opentelemetry.javaagent.extension.AgentListener;
1820
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
1921
import java.io.IOException;
@@ -65,7 +67,7 @@ private static void addFileRules(Path path, JmxTelemetryBuilder builder) {
6567

6668
private static void addClasspathRules(String target, JmxTelemetryBuilder builder) {
6769
ClassLoader classLoader = JmxTelemetryBuilder.class.getClassLoader();
68-
String resource = String.format("jmx/rules/%s.yaml", target);
70+
String resource = targetSystemResource(target, AgentCommonConfig.get().isV3Preview());
6971
try (InputStream input = classLoader.getResourceAsStream(resource)) {
7072
if (input == null) {
7173
logger.log(SEVERE, "JMX configuration not found on classpath " + resource);
@@ -77,4 +79,20 @@ private static void addClasspathRules(String target, JmxTelemetryBuilder builder
7779
logger.log(SEVERE, "Error while loading JMX configuration from classpath " + resource, e);
7880
}
7981
}
82+
83+
private static String targetSystemResource(String target, boolean v3Preview) {
84+
if (target.equals("kafka-broker") && !v3Preview) {
85+
logger.log(
86+
WARNING,
87+
"The kafka-broker JMX target system has been renamed to experimental-kafka-broker.");
88+
return "jmx/rules/experimental-kafka-broker.yaml";
89+
}
90+
if (target.equals("kafka-connect") && !v3Preview) {
91+
logger.log(
92+
WARNING,
93+
"The kafka-connect JMX target system has been renamed to experimental-kafka-connect.");
94+
return "jmx/rules/experimental-kafka-connect.yaml";
95+
}
96+
return String.format("jmx/rules/%s.yaml", target);
97+
}
8098
}

instrumentation/jmx-metrics/javaagent/src/main/resources/jmx/rules/kafka-broker.yaml renamed to instrumentation/jmx-metrics/javaagent/src/main/resources/jmx/rules/experimental-kafka-broker.yaml

File renamed without changes.

instrumentation/jmx-metrics/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jmx/JmxMetricInsightInstallerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
*/
2525
class JmxMetricInsightInstallerTest {
2626
private static final String PATH_TO_ALL_EXISTING_RULES = "src/main/resources/jmx/rules";
27-
private static final Set<String> FILES_TO_BE_TESTED = singleton("kafka-broker.yaml");
27+
private static final Set<String> FILES_TO_BE_TESTED = singleton("experimental-kafka-broker.yaml");
2828

2929
@Test
3030
void testToVerifyExistingRulesAreValid() {

instrumentation/jmx-metrics/library/src/main/resources/jmx/rules/kafka-connect.yaml renamed to instrumentation/jmx-metrics/library/src/main/resources/jmx/rules/experimental-kafka-connect.yaml

File renamed without changes.

instrumentation/jmx-metrics/library/src/test/java/io/opentelemetry/instrumentation/jmx/rules/KafkaConnectTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ void statusStateMappingsPresent() throws Exception {
132132

133133
@Test
134134
void metricsAreReportedFromKafkaConnectContainer() throws Exception {
135-
List<String> yamlFiles = singletonList("kafka-connect.yaml");
135+
List<String> yamlFiles = singletonList("experimental-kafka-connect.yaml");
136136

137137
yamlFiles.forEach(this::validateYamlSyntax);
138138

@@ -197,7 +197,9 @@ void metricsAreReportedFromKafkaConnectContainer() throws Exception {
197197

198198
private JmxConfig loadKafkaConnectConfig() throws Exception {
199199
try (InputStream input =
200-
getClass().getClassLoader().getResourceAsStream("jmx/rules/kafka-connect.yaml")) {
200+
getClass()
201+
.getClassLoader()
202+
.getResourceAsStream("jmx/rules/experimental-kafka-connect.yaml")) {
201203
assertThat(input).isNotNull();
202204
return RuleParser.get().loadConfig(input);
203205
}

0 commit comments

Comments
 (0)