Skip to content

Commit 66aa3a9

Browse files
committed
post-review changes
1 parent 7cd8c47 commit 66aa3a9

File tree

5 files changed

+41
-15
lines changed

5 files changed

+41
-15
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,17 @@ public void afterAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredSdk) {
3131
if (config.getBoolean("otel.jmx.enabled", true)) {
3232
JmxTelemetryBuilder jmx =
3333
JmxTelemetry.builder(GlobalOpenTelemetry.get())
34-
.beanDiscoveryDelay(beanDiscoveryDelay(config).toMillis());
34+
.beanDiscoveryDelay(beanDiscoveryDelay(config));
3535

3636
try {
3737
config.getList("otel.jmx.config").stream().map(Paths::get).forEach(jmx::addCustomRules);
3838
config.getList("otel.jmx.target.system").forEach(jmx::addClassPathRules);
39-
} catch (IllegalArgumentException e) {
39+
} catch (RuntimeException e) {
4040
// for now only log JMX errors as they do not prevent agent startup
4141
logger.log(Level.SEVERE, "Error while loading JMX configuration", e);
4242
}
4343

44-
jmx.build().startLocal();
44+
jmx.build().start();
4545
}
4646
}
4747

instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/JmxTelemetry.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,22 @@
55

66
package io.opentelemetry.instrumentation.jmx;
77

8+
import com.google.errorprone.annotations.CanIgnoreReturnValue;
89
import io.opentelemetry.api.OpenTelemetry;
910
import io.opentelemetry.instrumentation.jmx.engine.JmxMetricInsight;
1011
import io.opentelemetry.instrumentation.jmx.engine.MetricConfiguration;
1112
import java.util.List;
1213
import java.util.function.Supplier;
1314
import javax.management.MBeanServerConnection;
15+
import javax.management.MBeanServerFactory;
1416

17+
/** Entrypoint for JMX metrics Insights */
1518
public final class JmxTelemetry {
1619

1720
private final JmxMetricInsight service;
1821
private final MetricConfiguration metricConfiguration;
1922

23+
/** Returns a new {@link JmxTelemetryBuilder} configured with the given {@link OpenTelemetry}. */
2024
public static JmxTelemetryBuilder builder(OpenTelemetry openTelemetry) {
2125
return new JmxTelemetryBuilder(openTelemetry);
2226
}
@@ -27,12 +31,25 @@ public static JmxTelemetryBuilder builder(OpenTelemetry openTelemetry) {
2731
this.metricConfiguration = metricConfiguration;
2832
}
2933

30-
@SuppressWarnings("unused") // used by jmx-scraper with remote connection
31-
public void startRemote(Supplier<List<? extends MBeanServerConnection>> connections) {
32-
service.startRemote(metricConfiguration, connections);
34+
/**
35+
* Starts JMX metrics collection on current JVM
36+
*
37+
* @return this
38+
*/
39+
@CanIgnoreReturnValue
40+
public JmxTelemetry start() {
41+
return this.start(() -> MBeanServerFactory.findMBeanServer(null));
3342
}
3443

35-
public void startLocal() {
36-
service.startLocal(metricConfiguration);
44+
/**
45+
* Starts JMX metrics collection on provided (local or remote) connections
46+
*
47+
* @param connections connection provider
48+
* @return this
49+
*/
50+
@CanIgnoreReturnValue
51+
public JmxTelemetry start(Supplier<List<? extends MBeanServerConnection>> connections) {
52+
service.start(metricConfiguration, connections);
53+
return this;
3754
}
3855
}

instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/JmxTelemetryBuilder.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
import java.io.InputStream;
1616
import java.nio.file.Files;
1717
import java.nio.file.Path;
18+
import java.time.Duration;
1819
import java.util.logging.Logger;
1920

21+
/** Builder for {@link JmxTelemetry} */
2022
public final class JmxTelemetryBuilder {
2123

2224
private static final Logger logger = Logger.getLogger(JmxTelemetryBuilder.class.getName());
@@ -34,15 +36,15 @@ public final class JmxTelemetryBuilder {
3436
/**
3537
* Sets initial delay for MBean discovery
3638
*
37-
* @param delayMs delay in milliseconds
39+
* @param delay delay
3840
* @return builder instance
3941
*/
4042
@CanIgnoreReturnValue
41-
public JmxTelemetryBuilder beanDiscoveryDelay(long delayMs) {
42-
if (delayMs < 0) {
43-
throw new IllegalArgumentException("delay must be greater than 0");
43+
public JmxTelemetryBuilder beanDiscoveryDelay(Duration delay) {
44+
if (delay.isNegative()) {
45+
throw new IllegalArgumentException("delay must be positive or zero");
4446
}
45-
this.discoveryDelayMs = delayMs;
47+
this.discoveryDelayMs = delay.toMillis();
4648
return this;
4749
}
4850

instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/engine/JmxMetricInsight.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,13 @@ public void startRemote(
5858
start(conf, connections);
5959
}
6060

61-
private void start(
61+
/**
62+
* Starts metric registration on the provided list of connections
63+
*
64+
* @param conf metric configuration
65+
* @param connections supplier for list of connections (remote or local)
66+
*/
67+
public void start(
6268
MetricConfiguration conf, Supplier<List<? extends MBeanServerConnection>> connections) {
6369
if (conf.isEmpty()) {
6470
logger.log(

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.nio.charset.StandardCharsets;
1313
import java.nio.file.Files;
1414
import java.nio.file.Path;
15+
import java.time.Duration;
1516
import org.junit.jupiter.api.Test;
1617
import org.junit.jupiter.api.io.TempDir;
1718

@@ -54,7 +55,7 @@ void invalidExternalYaml(@TempDir Path dir) throws Exception {
5455
@Test
5556
void invalidStartDelay() {
5657
JmxTelemetryBuilder builder = JmxTelemetry.builder(OpenTelemetry.noop());
57-
assertThatThrownBy(() -> builder.beanDiscoveryDelay(-1))
58+
assertThatThrownBy(() -> builder.beanDiscoveryDelay(Duration.ofMillis(-1)))
5859
.isInstanceOf(IllegalArgumentException.class);
5960
}
6061
}

0 commit comments

Comments
 (0)