|
@@ -16,9 +16,10 @@ import io.opentelemetry.instrumentation.jmx.yaml.RuleParser;
|
|
|
import io.opentelemetry.javaagent.extension.AgentListener;
|
|
|
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
|
|
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
|
|
-import java.io.File;
|
|
|
import java.io.InputStream;
|
|
|
import java.nio.file.Files;
|
|
|
+import java.nio.file.Paths;
|
|
|
+import java.util.List;
|
|
|
|
|
|
/** An {@link AgentListener} that enables JMX metrics during agent startup. */
|
|
|
@AutoService(AgentListener.class)
|
|
@@ -59,7 +60,7 @@ public class JmxMetricInsightInstaller implements AgentListener {
|
|
|
if (inputStream != null) {
|
|
|
JmxMetricInsight.getLogger().log(FINE, "Opened input stream {0}", yamlResource);
|
|
|
RuleParser parserInstance = RuleParser.get();
|
|
|
- parserInstance.addMetricDefsTo(conf, inputStream);
|
|
|
+ parserInstance.addMetricDefsTo(conf, inputStream, platform);
|
|
|
} else {
|
|
|
JmxMetricInsight.getLogger().log(INFO, "No support found for {0}", platform);
|
|
|
}
|
|
@@ -70,9 +71,7 @@ public class JmxMetricInsightInstaller implements AgentListener {
|
|
|
|
|
|
private static void buildFromDefaultRules(
|
|
|
MetricConfiguration conf, ConfigProperties configProperties) {
|
|
|
- String targetSystem = configProperties.getString("otel.jmx.target.system", "");
|
|
|
- String[] platforms = targetSystem.isEmpty() ? new String[0] : targetSystem.split(",");
|
|
|
-
|
|
|
+ List<String> platforms = configProperties.getList("otel.jmx.target.system");
|
|
|
for (String platform : platforms) {
|
|
|
addRulesForPlatform(platform, conf);
|
|
|
}
|
|
@@ -80,14 +79,16 @@ public class JmxMetricInsightInstaller implements AgentListener {
|
|
|
|
|
|
private static void buildFromUserRules(
|
|
|
MetricConfiguration conf, ConfigProperties configProperties) {
|
|
|
- String jmxDir = configProperties.getString("otel.jmx.config");
|
|
|
- if (jmxDir != null) {
|
|
|
- JmxMetricInsight.getLogger().log(FINE, "JMX config file name: {0}", jmxDir);
|
|
|
+ List<String> configFiles = configProperties.getList("otel.jmx.config");
|
|
|
+ for (String configFile : configFiles) {
|
|
|
+ JmxMetricInsight.getLogger().log(FINE, "JMX config file name: {0}", configFile);
|
|
|
RuleParser parserInstance = RuleParser.get();
|
|
|
- try (InputStream inputStream = Files.newInputStream(new File(jmxDir.trim()).toPath())) {
|
|
|
- parserInstance.addMetricDefsTo(conf, inputStream);
|
|
|
+ try (InputStream inputStream = Files.newInputStream(Paths.get(configFile))) {
|
|
|
+ parserInstance.addMetricDefsTo(conf, inputStream, configFile);
|
|
|
} catch (Exception e) {
|
|
|
- JmxMetricInsight.getLogger().warning(e.getMessage());
|
|
|
+ // yaml parsing errors are caught and logged inside of addMetricDefsTo
|
|
|
+ // only file access related exceptions are expected here
|
|
|
+ JmxMetricInsight.getLogger().warning(e.toString());
|
|
|
}
|
|
|
}
|
|
|
}
|