|
17 | 17 | import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
|
18 | 18 | import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
19 | 19 | import java.io.InputStream;
|
20 |
| -import java.nio.file.Files; |
21 |
| -import java.nio.file.Paths; |
| 20 | +import java.net.URL; |
22 | 21 | import java.time.Duration;
|
23 | 22 | import java.util.List;
|
24 | 23 |
|
@@ -78,13 +77,37 @@ private static void buildFromDefaultRules(
|
78 | 77 | }
|
79 | 78 | }
|
80 | 79 |
|
81 |
| - private static void buildFromUserRules( |
82 |
| - MetricConfiguration conf, ConfigProperties configProperties) { |
| 80 | + static void buildFromUserRules(MetricConfiguration conf, ConfigProperties configProperties) { |
| 81 | + |
83 | 82 | List<String> configFiles = configProperties.getList("otel.jmx.config");
|
| 83 | + |
| 84 | + // current working directory path |
| 85 | + String currentWorkingDirectory = System.getProperty("user.dir"); |
| 86 | + |
84 | 87 | for (String configFile : configFiles) {
|
85 |
| - JmxMetricInsight.getLogger().log(FINE, "JMX config file name: {0}", configFile); |
| 88 | + String configFileUrlString = configFile; |
| 89 | + |
| 90 | + if(configFile != null) { |
| 91 | + |
| 92 | + // handle relative path case |
| 93 | + if (!configFile.startsWith("/") && !configFile.contains("://")) { |
| 94 | + configFile = currentWorkingDirectory + "/" + configFile; |
| 95 | + } |
| 96 | + |
| 97 | + // handle relative path URL case |
| 98 | + if (configFile.startsWith("file://") && !configFile.startsWith("file:///")) { |
| 99 | + String configFileRelativePath = configFile.replaceFirst("^file://",""); |
| 100 | + configFile = "file://" + currentWorkingDirectory + "/" + configFileRelativePath; |
| 101 | + } |
| 102 | + |
| 103 | + // handle absolute path |
| 104 | + if (!configFile.contains("://")) { |
| 105 | + configFileUrlString = "file://" + configFile; |
| 106 | + } |
| 107 | + } |
| 108 | + JmxMetricInsight.getLogger().log(FINE, "JMX config file name: {0}", configFileUrlString); |
86 | 109 | RuleParser parserInstance = RuleParser.get();
|
87 |
| - try (InputStream inputStream = Files.newInputStream(Paths.get(configFile))) { |
| 110 | + try (InputStream inputStream = new URL(configFileUrlString).openStream()) { |
88 | 111 | parserInstance.addMetricDefsTo(conf, inputStream, configFile);
|
89 | 112 | } catch (Exception e) {
|
90 | 113 | // yaml parsing errors are caught and logged inside of addMetricDefsTo
|
|
0 commit comments