From 11a22e84ba2bfa5d8c54a10323c1377016e0e98f Mon Sep 17 00:00:00 2001 From: Mark Nellemann Date: Wed, 15 Mar 2023 16:21:07 +0100 Subject: [PATCH 1/3] Initial work on power readings. --- gradle.properties | 2 +- .../plugins/base/BasePowerExtension.java | 112 ++++++++++++++++++ .../sysmon/plugins/power/PowerPlugin.java | 2 - 3 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 plugins/base/src/main/java/sysmon/plugins/base/BasePowerExtension.java diff --git a/gradle.properties b/gradle.properties index fb94756..9d8261e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version = 1.1.2 +version = 1.1.3 pf4jVersion = 3.7.0 slf4jVersion = 2.0.6 camelVersion = 3.14.7 diff --git a/plugins/base/src/main/java/sysmon/plugins/base/BasePowerExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BasePowerExtension.java new file mode 100644 index 0000000..071fd73 --- /dev/null +++ b/plugins/base/src/main/java/sysmon/plugins/base/BasePowerExtension.java @@ -0,0 +1,112 @@ +package sysmon.plugins.base; + +import org.pf4j.Extension; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import oshi.hardware.HardwareAbstractionLayer; +import oshi.hardware.PowerSource; +import sysmon.shared.Measurement; +import sysmon.shared.MetricExtension; +import sysmon.shared.MetricResult; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +@Extension +public class BasePowerExtension implements MetricExtension { + + private static final Logger log = LoggerFactory.getLogger(BasePowerExtension.class); + + // Extension details + private final String name = "base_power"; + private final String description = "Base Power Metrics"; + + // Configuration / Options + private boolean enabled = true; + private boolean threaded = false; + private String interval = "30s"; + + private HardwareAbstractionLayer hardwareAbstractionLayer; + private List powerSources; + + @Override + public boolean isEnabled() { + return enabled; + } + + @Override + public boolean isThreaded() { + return threaded; + } + + @Override + public boolean isSupported() { + hardwareAbstractionLayer = BasePlugin.getHardwareAbstractionLayer(); + return hardwareAbstractionLayer != null; + } + + @Override + public String getName() { + return name; + } + + @Override + public String getInterval() { + return interval; + } + + @Override + public String getDescription() { + return description; + } + + @Override + public void setConfiguration(Map map) { + if (map.containsKey("enabled")) { + enabled = (boolean) map.get("enabled"); + } + if (map.containsKey("threaded")) { + threaded = (boolean) map.get("threaded"); + } + if (map.containsKey("interval")) { + interval = (String) map.get("interval"); + } + } + + @Override + public MetricResult getMetrics() { + + if(powerSources == null) { + powerSources = hardwareAbstractionLayer.getPowerSources(); + } + + ArrayList measurementList = new ArrayList<>(); + powerSources.forEach((source) -> { + log.info("name: {}", source.getName()); + log.info("amp: {}", source.getAmperage()); + log.info("voltage: {}", source.getVoltage()); + + TreeMap tagsMap = new TreeMap() { + { + put("name", source.getName()); + } + }; + + TreeMap fieldsMap = new TreeMap() { + { + put("amperage", source.getAmperage()); + put("voltage", source.getVoltage()); + } + }; + + log.debug("getMetrics() - tags: {}, fields: {}", tagsMap, fieldsMap); + measurementList.add(new Measurement(tagsMap, fieldsMap)); + + }); + + return new MetricResult(name, measurementList); + } + +} diff --git a/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java b/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java index 07d7e6f..0388784 100644 --- a/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java +++ b/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java @@ -14,5 +14,3 @@ public class PowerPlugin extends Plugin { } } - - From 7b9d27a1242314b0fc8390f62db9528f534d12c0 Mon Sep 17 00:00:00 2001 From: Mark Nellemann Date: Wed, 15 Mar 2023 17:27:37 +0100 Subject: [PATCH 2/3] Changes to reflect updated deps. --- .../java/sysmon/plugins/base/BasePlugin.java | 4 - .../plugins/base/BasePowerExtension.java | 112 ------------------ .../sysmon/plugins/power/PowerPlugin.java | 9 -- 3 files changed, 125 deletions(-) delete mode 100644 plugins/base/src/main/java/sysmon/plugins/base/BasePowerExtension.java diff --git a/plugins/base/src/main/java/sysmon/plugins/base/BasePlugin.java b/plugins/base/src/main/java/sysmon/plugins/base/BasePlugin.java index c8a9c5d..198847d 100644 --- a/plugins/base/src/main/java/sysmon/plugins/base/BasePlugin.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BasePlugin.java @@ -3,7 +3,6 @@ package sysmon.plugins.base; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.pf4j.Plugin; -import org.pf4j.PluginWrapper; import oshi.SystemInfo; import oshi.hardware.HardwareAbstractionLayer; @@ -15,9 +14,6 @@ public class BasePlugin extends Plugin { private static SystemInfo systemInfo; private static HardwareAbstractionLayer hardwareAbstractionLayer; - public BasePlugin(PluginWrapper wrapper) { - super(wrapper); - } public static HardwareAbstractionLayer getHardwareAbstractionLayer() { diff --git a/plugins/base/src/main/java/sysmon/plugins/base/BasePowerExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BasePowerExtension.java deleted file mode 100644 index 071fd73..0000000 --- a/plugins/base/src/main/java/sysmon/plugins/base/BasePowerExtension.java +++ /dev/null @@ -1,112 +0,0 @@ -package sysmon.plugins.base; - -import org.pf4j.Extension; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import oshi.hardware.HardwareAbstractionLayer; -import oshi.hardware.PowerSource; -import sysmon.shared.Measurement; -import sysmon.shared.MetricExtension; -import sysmon.shared.MetricResult; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - -@Extension -public class BasePowerExtension implements MetricExtension { - - private static final Logger log = LoggerFactory.getLogger(BasePowerExtension.class); - - // Extension details - private final String name = "base_power"; - private final String description = "Base Power Metrics"; - - // Configuration / Options - private boolean enabled = true; - private boolean threaded = false; - private String interval = "30s"; - - private HardwareAbstractionLayer hardwareAbstractionLayer; - private List powerSources; - - @Override - public boolean isEnabled() { - return enabled; - } - - @Override - public boolean isThreaded() { - return threaded; - } - - @Override - public boolean isSupported() { - hardwareAbstractionLayer = BasePlugin.getHardwareAbstractionLayer(); - return hardwareAbstractionLayer != null; - } - - @Override - public String getName() { - return name; - } - - @Override - public String getInterval() { - return interval; - } - - @Override - public String getDescription() { - return description; - } - - @Override - public void setConfiguration(Map map) { - if (map.containsKey("enabled")) { - enabled = (boolean) map.get("enabled"); - } - if (map.containsKey("threaded")) { - threaded = (boolean) map.get("threaded"); - } - if (map.containsKey("interval")) { - interval = (String) map.get("interval"); - } - } - - @Override - public MetricResult getMetrics() { - - if(powerSources == null) { - powerSources = hardwareAbstractionLayer.getPowerSources(); - } - - ArrayList measurementList = new ArrayList<>(); - powerSources.forEach((source) -> { - log.info("name: {}", source.getName()); - log.info("amp: {}", source.getAmperage()); - log.info("voltage: {}", source.getVoltage()); - - TreeMap tagsMap = new TreeMap() { - { - put("name", source.getName()); - } - }; - - TreeMap fieldsMap = new TreeMap() { - { - put("amperage", source.getAmperage()); - put("voltage", source.getVoltage()); - } - }; - - log.debug("getMetrics() - tags: {}, fields: {}", tagsMap, fieldsMap); - measurementList.add(new Measurement(tagsMap, fieldsMap)); - - }); - - return new MetricResult(name, measurementList); - } - -} diff --git a/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java b/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java index 0388784..d658c00 100644 --- a/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java +++ b/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java @@ -1,16 +1,7 @@ package sysmon.plugins.power; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.pf4j.Plugin; -import org.pf4j.PluginWrapper; public class PowerPlugin extends Plugin { - private static final Logger log = LoggerFactory.getLogger(PowerPlugin.class); - - public PowerPlugin(PluginWrapper wrapper) { - super(wrapper); - } - } From 27838ab6ec5d229497cbb908b8e2d1895beb1993 Mon Sep 17 00:00:00 2001 From: Mark Nellemann Date: Wed, 10 May 2023 11:02:22 +0200 Subject: [PATCH 3/3] Update 3rd party build dependencies. --- gradle.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 32470df..a3f1f9d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,9 +1,9 @@ version = 1.1.3 pf4jVersion = 3.9.0 -slf4jVersion = 2.0.6 +slf4jVersion = 2.0.7 camelVersion = 3.14.7 -groovyVersion = 3.0.16 -picocliVersion = 4.7.1 -oshiVersion = 6.4.0 +groovyVersion = 3.0.17 +picocliVersion = 4.7.3 +oshiVersion = 6.4.2 spockVersion = 2.3-groovy-3.0 tomljVersion = 1.1.0