From 31b494163d289329d52d6cb038edd3da5938d727 Mon Sep 17 00:00:00 2001 From: Mark Nellemann Date: Wed, 21 Dec 2022 17:12:15 +0100 Subject: [PATCH] Work on support for groovy scripts. --- CHANGELOG.md | 3 + client/build.gradle | 3 + client/doc/scripts/README.md | 3 + client/doc/scripts/example.groovy | 20 +++ client/doc/sysmon-client.toml | 3 + .../sysmon/client/ClientRouteBuilder.java | 128 +++++++++++--- .../java/sysmon/client/Configuration.java | 6 + .../java/sysmon/client/ScriptWrapper.java | 40 +++++ plugins/README.md | 5 +- plugins/{os-base => base}/README.md | 0 plugins/{os-base => base}/build.gradle | 0 plugins/{os-base => base}/gradle.properties | 2 +- .../plugins/base}/BaseDiskExtension.java | 8 +- .../base}/BaseFilesystemExtension.java | 8 +- .../plugins/base}/BaseInfoExtension.java | 8 +- .../plugins/base}/BaseLoadExtension.java | 9 +- .../plugins/base}/BaseMemoryExtension.java | 9 +- .../plugins/base}/BaseNetstatExtension.java | 9 +- .../plugins/base}/BaseNetworkExtension.java | 8 +- .../java/sysmon/plugins/base}/BasePlugin.java | 2 +- .../plugins/base}/BaseProcessExtension.java | 8 +- .../plugins/base}/BaseProcessorExtension.java | 9 +- .../src/test/resources/free.txt | 0 .../src/test/resources/meminfo.txt | 0 .../src/test/resources/proc_diskstats1.txt | 0 .../src/test/resources/proc_diskstats2.txt | 0 .../src/test/resources/proc_net_dev1.txt | 0 .../src/test/resources/proc_net_dev2.txt | 0 .../src/test/resources/proc_net_sockstat.txt | 0 .../src/test/resources/proc_stats1.txt | 0 .../src/test/resources/proc_stats2.txt | 0 plugins/os-aix/gradle.properties | 6 - .../java/sysmon/plugins/os_aix/AixPlugin.java | 18 -- plugins/os-ibmi/README.md | 4 - plugins/os-ibmi/build.gradle | 7 - plugins/os-ibmi/gradle.properties | 4 - .../sysmon/plugins/os_ibmi/IbmIPlugin.java | 97 ---------- .../sysmon/plugins/os_ibmi/TestExtension.java | 146 ---------------- plugins/os-linux/README.md | 7 - plugins/os-linux/build.gradle | 2 - plugins/os-linux/gradle.properties | 5 - .../os_linux/LinuxNetstatExtension.java | 109 ------------ .../plugins/os_linux/LinuxNetstatParser.java | 165 ------------------ .../sysmon/plugins/os_linux/LinuxPlugin.java | 17 -- .../os_linux/LinuxSocketExtension.java | 98 ----------- .../plugins/os_linux/LinuxSocketStat.java | 97 ---------- .../src/test/groovy/LinuxNetstatTest.groovy | 26 --- .../src/test/groovy/LinuxNetworkTest.groovy | 29 --- .../src/test/resources/netstat-linux.txt | 112 ------------ .../src/test/resources/proc_net_sockstat.txt | 6 - plugins/{os-aix => power}/README.md | 0 plugins/{os-aix => power}/build.gradle | 0 plugins/power/gradle.properties | 6 + .../sysmon/plugins/power/PowerPlugin.java | 18 ++ .../power/PowerProcessorExtension.java} | 23 +-- .../plugins/power/PowerProcessorStat.java} | 9 +- .../test/groovy/PowerProcessorTest.groovy} | 22 +-- .../lparstat-aix-dedicated-capped.txt | 0 .../lparstat-aix-dedicated-donating.txt | 0 .../test/resources/lparstat-aix-shared.txt | 0 .../src/test/resources/lparstat-linux.txt | 0 .../java/sysmon/shared/MetricExtension.java | 1 - .../main/java/sysmon/shared/MetricScript.java | 7 + 63 files changed, 246 insertions(+), 1086 deletions(-) create mode 100644 client/doc/scripts/README.md create mode 100644 client/doc/scripts/example.groovy create mode 100644 client/src/main/java/sysmon/client/ScriptWrapper.java rename plugins/{os-base => base}/README.md (100%) rename plugins/{os-base => base}/build.gradle (100%) rename plugins/{os-base => base}/gradle.properties (66%) rename plugins/{os-base/src/main/java/sysmon/plugins/os_base => base/src/main/java/sysmon/plugins/base}/BaseDiskExtension.java (95%) rename plugins/{os-base/src/main/java/sysmon/plugins/os_base => base/src/main/java/sysmon/plugins/base}/BaseFilesystemExtension.java (96%) rename plugins/{os-base/src/main/java/sysmon/plugins/os_base => base/src/main/java/sysmon/plugins/base}/BaseInfoExtension.java (94%) rename plugins/{os-base/src/main/java/sysmon/plugins/os_base => base/src/main/java/sysmon/plugins/base}/BaseLoadExtension.java (92%) rename plugins/{os-base/src/main/java/sysmon/plugins/os_base => base/src/main/java/sysmon/plugins/base}/BaseMemoryExtension.java (93%) rename plugins/{os-base/src/main/java/sysmon/plugins/os_base => base/src/main/java/sysmon/plugins/base}/BaseNetstatExtension.java (95%) rename plugins/{os-base/src/main/java/sysmon/plugins/os_base => base/src/main/java/sysmon/plugins/base}/BaseNetworkExtension.java (94%) rename plugins/{os-base/src/main/java/sysmon/plugins/os_base => base/src/main/java/sysmon/plugins/base}/BasePlugin.java (97%) rename plugins/{os-base/src/main/java/sysmon/plugins/os_base => base/src/main/java/sysmon/plugins/base}/BaseProcessExtension.java (96%) rename plugins/{os-base/src/main/java/sysmon/plugins/os_base => base/src/main/java/sysmon/plugins/base}/BaseProcessorExtension.java (95%) rename plugins/{os-base => base}/src/test/resources/free.txt (100%) rename plugins/{os-base => base}/src/test/resources/meminfo.txt (100%) rename plugins/{os-base => base}/src/test/resources/proc_diskstats1.txt (100%) rename plugins/{os-base => base}/src/test/resources/proc_diskstats2.txt (100%) rename plugins/{os-base => base}/src/test/resources/proc_net_dev1.txt (100%) rename plugins/{os-base => base}/src/test/resources/proc_net_dev2.txt (100%) rename plugins/{os-base => base}/src/test/resources/proc_net_sockstat.txt (100%) rename plugins/{os-base => base}/src/test/resources/proc_stats1.txt (100%) rename plugins/{os-base => base}/src/test/resources/proc_stats2.txt (100%) delete mode 100644 plugins/os-aix/gradle.properties delete mode 100644 plugins/os-aix/src/main/java/sysmon/plugins/os_aix/AixPlugin.java delete mode 100644 plugins/os-ibmi/README.md delete mode 100644 plugins/os-ibmi/build.gradle delete mode 100644 plugins/os-ibmi/gradle.properties delete mode 100644 plugins/os-ibmi/src/main/java/sysmon/plugins/os_ibmi/IbmIPlugin.java delete mode 100644 plugins/os-ibmi/src/main/java/sysmon/plugins/os_ibmi/TestExtension.java delete mode 100644 plugins/os-linux/README.md delete mode 100644 plugins/os-linux/build.gradle delete mode 100644 plugins/os-linux/gradle.properties delete mode 100644 plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxNetstatExtension.java delete mode 100644 plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxNetstatParser.java delete mode 100644 plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxPlugin.java delete mode 100644 plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxSocketExtension.java delete mode 100644 plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxSocketStat.java delete mode 100644 plugins/os-linux/src/test/groovy/LinuxNetstatTest.groovy delete mode 100644 plugins/os-linux/src/test/groovy/LinuxNetworkTest.groovy delete mode 100644 plugins/os-linux/src/test/resources/netstat-linux.txt delete mode 100644 plugins/os-linux/src/test/resources/proc_net_sockstat.txt rename plugins/{os-aix => power}/README.md (100%) rename plugins/{os-aix => power}/build.gradle (100%) create mode 100644 plugins/power/gradle.properties create mode 100644 plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java rename plugins/{os-aix/src/main/java/sysmon/plugins/os_aix/AixProcessorExtension.java => power/src/main/java/sysmon/plugins/power/PowerProcessorExtension.java} (78%) rename plugins/{os-aix/src/main/java/sysmon/plugins/os_aix/AixProcessorStat.java => power/src/main/java/sysmon/plugins/power/PowerProcessorStat.java} (96%) rename plugins/{os-aix/src/test/groovy/AixProcessorTest.groovy => power/src/test/groovy/PowerProcessorTest.groovy} (73%) rename plugins/{os-aix => power}/src/test/resources/lparstat-aix-dedicated-capped.txt (100%) rename plugins/{os-aix => power}/src/test/resources/lparstat-aix-dedicated-donating.txt (100%) rename plugins/{os-aix => power}/src/test/resources/lparstat-aix-shared.txt (100%) rename plugins/{os-aix => power}/src/test/resources/lparstat-linux.txt (100%) create mode 100644 shared/src/main/java/sysmon/shared/MetricScript.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 77e7157..96f7cfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All notable changes to this project will be documented in this file. +## [1.1.1] - 2022-12-xx +- Simplify plugin naming + ## [1.1.0] - 2022-12-17 - Lower influx time precision from milliseconds to seconds - requires you to update server and clients to this version. diff --git a/client/build.gradle b/client/build.gradle index 4f6b871..b118c81 100644 --- a/client/build.gradle +++ b/client/build.gradle @@ -23,6 +23,9 @@ dependencies { exclude(group: "org.slf4j") } + //implementation "org.apache.groovy:groovy-all:${groovyVersion}" // From version 4.+ + implementation "org.codehaus.groovy:groovy:${groovyVersion}" + implementation group: 'org.apache.camel', name: 'camel-core', version: camelVersion implementation group: 'org.apache.camel', name: 'camel-main', version: camelVersion implementation group: 'org.apache.camel', name: 'camel-http', version: camelVersion diff --git a/client/doc/scripts/README.md b/client/doc/scripts/README.md new file mode 100644 index 0000000..36fdb27 --- /dev/null +++ b/client/doc/scripts/README.md @@ -0,0 +1,3 @@ +# Example Scripts + +TODO. diff --git a/client/doc/scripts/example.groovy b/client/doc/scripts/example.groovy new file mode 100644 index 0000000..cdcbd01 --- /dev/null +++ b/client/doc/scripts/example.groovy @@ -0,0 +1,20 @@ +import sysmon.shared.MetricResult +import sysmon.shared.MetricScript +import sysmon.shared.Measurement + +class ExampleScript implements MetricScript { + + @Override + MetricResult getMetrics() { + Map tags = new TreeMap<>(); + Map fields = new TreeMap<>(); + + tags.put("location", "blabla"); + fields.put("temp1", 23); + fields.put("temp2", 25); + + Measurement measurement = new Measurement(tags, fields); + return new MetricResult("script_example", measurement); + } + +} diff --git a/client/doc/sysmon-client.toml b/client/doc/sysmon-client.toml index 803aa5b..c66d913 100644 --- a/client/doc/sysmon-client.toml +++ b/client/doc/sysmon-client.toml @@ -4,6 +4,9 @@ ### Example configuration with some default values. ### +# Local path for Groovy scripts +scripts = "/opt/sysmon/scripts" + [extension.base_info] enabled = true interval = '60m' diff --git a/client/src/main/java/sysmon/client/ClientRouteBuilder.java b/client/src/main/java/sysmon/client/ClientRouteBuilder.java index 033d0be..a6e1a54 100644 --- a/client/src/main/java/sysmon/client/ClientRouteBuilder.java +++ b/client/src/main/java/sysmon/client/ClientRouteBuilder.java @@ -14,15 +14,25 @@ import sysmon.shared.ComboResult; import sysmon.shared.MetricExtension; import sysmon.shared.MetricResult; +import javax.script.*; +import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class ClientRouteBuilder extends RouteBuilder { private static final Logger log = LoggerFactory.getLogger(ClientRouteBuilder.class); + private final Set scriptFiles = new HashSet<>(); + + @Override public void configure() { @@ -34,12 +44,9 @@ public class ClientRouteBuilder extends RouteBuilder { pluginManager.loadPlugins(); pluginManager.startPlugins(); - List providers = new ArrayList<>(); List metricExtensions = pluginManager.getExtensions(MetricExtension.class); for (MetricExtension ext : metricExtensions) { - final String name = ext.getName(); - final String provides = ext.getProvides(); // Load configuration if available if(configuration.isForExtension(name)) { @@ -48,33 +55,10 @@ public class ClientRouteBuilder extends RouteBuilder { } if(ext.isSupported() && ext.isEnabled()) { - - if(providers.contains(provides)) { - log.warn("Skipping extension (already provided): " + ext.getName()); - continue; - } - - log.info("Enabling extension: " + ext.getDescription()); - providers.add(provides); - - // Setup Camel route for this extension - // a unique timer name gives the timer it's own thread, otherwise it's a shared thread for other timers with same name. - String timerName = ext.isThreaded() ? ext.getProvides() : "default"; - String timerInterval = (ext.getInterval() != null) ? ext.getInterval() : "30s"; - from("timer:"+timerName+"?fixedRate=true&period="+timerInterval) - .bean(ext, "getMetrics") - .outputType(MetricResult.class) - .process(new MetricEnrichProcessor(registry)) - .choice().when(exchangeProperty("skip").isEqualTo(true)) - .log(LoggingLevel.WARN,"Skipping empty measurement.") - .stop() - .otherwise() - .log("${body}") - .to("seda:metrics?discardWhenFull=true"); + addExtensionRoute(ext); } else { log.info("Skipping extension (not supported or disabled): " + ext.getDescription()); } - } from("seda:metrics?purgeWhenStopping=true") @@ -97,7 +81,97 @@ public class ClientRouteBuilder extends RouteBuilder { .log(LoggingLevel.WARN,"Error: ${exception.message}.") .end(); + // Find all local scripts + String scriptsPath = configuration.getScriptPath(); + if(scriptsPath != null && Files.isDirectory(Paths.get(scriptsPath))) { + try { + scriptFiles.addAll(listFilesByExtension(scriptsPath, "groovy")); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + // Enable the local scripts + for (String scriptFile : scriptFiles) { + try { + ScriptWrapper scriptWrapper = new ScriptWrapper(scriptsPath, scriptFile); + addScriptRoute(scriptWrapper); + } catch(Exception e) { + log.error("configure() - script error: {}", e.getMessage()); + } + } + } + void addScriptRoute(ScriptWrapper script) { + Registry registry = getContext().getRegistry(); + + from("timer:scripts?fixedRate=true&period=30s") + .bean(script, "run") + .outputType(MetricResult.class) + .process(new MetricEnrichProcessor(registry)) + .choice().when(exchangeProperty("skip").isEqualTo(true)) + .log(LoggingLevel.WARN, "Skipping empty measurement.") + .stop() + .otherwise() + .log("${body}") + .to("seda:metrics?discardWhenFull=true"); + } + + + void addExtensionRoute(MetricExtension ext) { + + Registry registry = getContext().getRegistry(); + + // Setup Camel route for this extension + // a unique timer name gives the timer it's own thread, otherwise it's a shared thread for other timers with same name. + String timerName = ext.isThreaded() ? ext.getName() : "default"; + String timerInterval = (ext.getInterval() != null) ? ext.getInterval() : "30s"; + from("timer:" + timerName + "?fixedRate=true&period=" + timerInterval) + .bean(ext, "getMetrics") + .outputType(MetricResult.class) + .process(new MetricEnrichProcessor(registry)) + .choice().when(exchangeProperty("skip").isEqualTo(true)) + .log(LoggingLevel.WARN, "Skipping empty measurement.") + .stop() + .otherwise() + .log("${body}") + .to("seda:metrics?discardWhenFull=true"); + } + + + List findScripts(String location) { + log.info("Looking for scripts in: {}", location); + List scripts = new ArrayList<>(); + ScriptEngineManager manager = new ScriptEngineManager(); + List factoryList = manager.getEngineFactories(); + for (ScriptEngineFactory factory : factoryList) { + log.info("findScripts() - Supporting: {}", factory.getLanguageName()); + for(String ex : factory.getExtensions()) { + log.info("findScripts() - Extension: {}", ex); + try { + scripts.addAll(listFilesByExtension(location, ex)); + log.warn(scripts.toString()); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + } + return scripts; + } + + + Set listFilesByExtension(String dir, String ext) throws IOException { + try (Stream stream = Files.list(Paths.get(dir))) { + return stream + .filter(file -> !Files.isDirectory(file)) + .map(Path::getFileName) + .map(Path::toString) + .filter(s -> s.endsWith(ext)) + .collect(Collectors.toSet()); + } + } + } diff --git a/client/src/main/java/sysmon/client/Configuration.java b/client/src/main/java/sysmon/client/Configuration.java index bc07038..6f2899c 100644 --- a/client/src/main/java/sysmon/client/Configuration.java +++ b/client/src/main/java/sysmon/client/Configuration.java @@ -65,4 +65,10 @@ public final class Configuration { return map; } + + String getScriptPath() { + return result.getString("scripts"); + } + + } diff --git a/client/src/main/java/sysmon/client/ScriptWrapper.java b/client/src/main/java/sysmon/client/ScriptWrapper.java new file mode 100644 index 0000000..9b53a33 --- /dev/null +++ b/client/src/main/java/sysmon/client/ScriptWrapper.java @@ -0,0 +1,40 @@ +package sysmon.client; + +import groovy.lang.GroovyClassLoader; +import groovy.lang.GroovyObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import sysmon.shared.MetricResult; +import sysmon.shared.MetricScript; + +import java.io.File; +import java.io.IOException; + +public class ScriptWrapper { + + private static final Logger log = LoggerFactory.getLogger(ScriptWrapper.class); + + private final static GroovyClassLoader loader = new GroovyClassLoader(); + + private GroovyObject script; + + public ScriptWrapper(String scriptPath, String scriptFile) { + try { + Class scriptClass = loader.parseClass(new File(scriptPath, scriptFile)); + script = (GroovyObject) scriptClass.newInstance(); + } catch (IOException |InstantiationException | IllegalAccessException e) { + log.error("ScriptWrapper() - error: {}", e.getMessage()); + } + } + + + MetricResult run() { + MetricResult result = null; + if (script != null && script instanceof MetricScript) { + result = (MetricResult) script.invokeMethod("getMetrics", null); + } + return result; + } + + +} diff --git a/plugins/README.md b/plugins/README.md index 637c8db..9da9907 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -2,6 +2,5 @@ Collection of standard sysmon plugins for use with the client. -- [base](os-base/README.md) - Base OS metrics (uses [oshi](https://github.com/oshi/oshi)) -- [aix](os-aix/README.md) - AIX (and IBM Power) specific metrics -- [linux](os-linux/README.md) - Linux specific metrics +- [base](base/README.md) - Base OS metrics (uses [oshi](https://github.com/oshi/oshi)) +- [power](power/README.md) - IBM Power specific metrics diff --git a/plugins/os-base/README.md b/plugins/base/README.md similarity index 100% rename from plugins/os-base/README.md rename to plugins/base/README.md diff --git a/plugins/os-base/build.gradle b/plugins/base/build.gradle similarity index 100% rename from plugins/os-base/build.gradle rename to plugins/base/build.gradle diff --git a/plugins/os-base/gradle.properties b/plugins/base/gradle.properties similarity index 66% rename from plugins/os-base/gradle.properties rename to plugins/base/gradle.properties index db66d99..d7968e2 100644 --- a/plugins/os-base/gradle.properties +++ b/plugins/base/gradle.properties @@ -1,5 +1,5 @@ pluginId=sysmon-base -pluginClass=sysmon.plugins.os_base.BasePlugin +pluginClass=sysmon.plugins.base.BasePlugin pluginDependencies= pluginDescription=Base OS metrics where supported. diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseDiskExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BaseDiskExtension.java similarity index 95% rename from plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseDiskExtension.java rename to plugins/base/src/main/java/sysmon/plugins/base/BaseDiskExtension.java index 9703cd1..d847f2d 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseDiskExtension.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BaseDiskExtension.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_base; +package sysmon.plugins.base; import org.pf4j.Extension; import org.slf4j.Logger; @@ -18,7 +18,6 @@ public class BaseDiskExtension implements MetricExtension { // Extension details private final String name = "base_disk"; - private final String provides = "disk"; private final String description = "Base Disk Metrics"; // Configuration / Options @@ -57,11 +56,6 @@ public class BaseDiskExtension implements MetricExtension { return interval; } - @Override - public String getProvides() { - return provides; - } - @Override public String getDescription() { return description; diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseFilesystemExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BaseFilesystemExtension.java similarity index 96% rename from plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseFilesystemExtension.java rename to plugins/base/src/main/java/sysmon/plugins/base/BaseFilesystemExtension.java index f6c460b..a1495c4 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseFilesystemExtension.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BaseFilesystemExtension.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_base; +package sysmon.plugins.base; import org.pf4j.Extension; import org.slf4j.Logger; @@ -19,7 +19,6 @@ public class BaseFilesystemExtension implements MetricExtension { // Extension details private final String name = "base_filesystem"; - private final String provides = "filesystem"; private final String description = "Base Filesystem Metrics"; // Configuration / Options @@ -67,11 +66,6 @@ public class BaseFilesystemExtension implements MetricExtension { return interval; } - @Override - public String getProvides() { - return provides; - } - @Override public String getDescription() { return description; diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseInfoExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BaseInfoExtension.java similarity index 94% rename from plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseInfoExtension.java rename to plugins/base/src/main/java/sysmon/plugins/base/BaseInfoExtension.java index f9acbca..aa3fdd6 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseInfoExtension.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BaseInfoExtension.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_base; +package sysmon.plugins.base; import org.pf4j.Extension; import org.slf4j.Logger; @@ -19,7 +19,6 @@ public class BaseInfoExtension implements MetricExtension { // Extension details private final String name = "base_info"; - private final String provides = "info"; private final String description = "Base System Information"; // Configuration / Options @@ -52,11 +51,6 @@ public class BaseInfoExtension implements MetricExtension { return name; } - @Override - public String getProvides() { - return provides; - } - @Override public String getInterval() { return interval; } diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseLoadExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BaseLoadExtension.java similarity index 92% rename from plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseLoadExtension.java rename to plugins/base/src/main/java/sysmon/plugins/base/BaseLoadExtension.java index 038d7f1..7e61a77 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseLoadExtension.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BaseLoadExtension.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_base; +package sysmon.plugins.base; import org.pf4j.Extension; import org.slf4j.Logger; @@ -8,7 +8,6 @@ import sysmon.shared.Measurement; import sysmon.shared.MetricExtension; import sysmon.shared.MetricResult; -import java.util.HashMap; import java.util.Map; import java.util.TreeMap; @@ -19,7 +18,6 @@ public class BaseLoadExtension implements MetricExtension { // Extension details private final String name = "base_load"; - private final String provides = "load"; private final String description = "Base Load Average Metrics"; // Configuration / Options @@ -55,11 +53,6 @@ public class BaseLoadExtension implements MetricExtension { return interval; } - @Override - public String getProvides() { - return provides; - } - @Override public String getDescription() { return description; diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseMemoryExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BaseMemoryExtension.java similarity index 93% rename from plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseMemoryExtension.java rename to plugins/base/src/main/java/sysmon/plugins/base/BaseMemoryExtension.java index 81dc523..5a2f267 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseMemoryExtension.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BaseMemoryExtension.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_base; +package sysmon.plugins.base; import org.pf4j.Extension; import org.slf4j.Logger; @@ -8,7 +8,6 @@ import sysmon.shared.Measurement; import sysmon.shared.MetricExtension; import sysmon.shared.MetricResult; -import java.util.HashMap; import java.util.Map; import java.util.TreeMap; @@ -19,7 +18,6 @@ public class BaseMemoryExtension implements MetricExtension { // Extension details private final String name = "base_memory"; - private final String provides = "memory"; private final String description = "Base Memory Metrics"; // Configuration / Options @@ -56,11 +54,6 @@ public class BaseMemoryExtension implements MetricExtension { return interval; } - @Override - public String getProvides() { - return provides; - } - @Override public String getDescription() { return description; diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseNetstatExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BaseNetstatExtension.java similarity index 95% rename from plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseNetstatExtension.java rename to plugins/base/src/main/java/sysmon/plugins/base/BaseNetstatExtension.java index 1aea883..9c728cc 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseNetstatExtension.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BaseNetstatExtension.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_base; +package sysmon.plugins.base; import org.pf4j.Extension; import org.slf4j.Logger; @@ -8,7 +8,6 @@ import sysmon.shared.Measurement; import sysmon.shared.MetricExtension; import sysmon.shared.MetricResult; -import java.util.HashMap; import java.util.Map; import java.util.TreeMap; @@ -19,7 +18,6 @@ public class BaseNetstatExtension implements MetricExtension { // Extension details private final String name = "base_netstat"; - private final String provides = "netstat"; private final String description = "Base Netstat Metrics"; // Configuration / Options @@ -56,11 +54,6 @@ public class BaseNetstatExtension implements MetricExtension { return interval; } - @Override - public String getProvides() { - return provides; - } - @Override public String getDescription() { return description; diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseNetworkExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BaseNetworkExtension.java similarity index 94% rename from plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseNetworkExtension.java rename to plugins/base/src/main/java/sysmon/plugins/base/BaseNetworkExtension.java index d9b84c3..e52d628 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseNetworkExtension.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BaseNetworkExtension.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_base; +package sysmon.plugins.base; import org.pf4j.Extension; import org.slf4j.Logger; @@ -18,7 +18,6 @@ public class BaseNetworkExtension implements MetricExtension { // Extension details private final String name = "base_network"; - private final String provides = "network"; private final String description = "Base Network Metrics"; // Configuration / Options @@ -57,11 +56,6 @@ public class BaseNetworkExtension implements MetricExtension { return interval; } - @Override - public String getProvides() { - return provides; - } - @Override public String getDescription() { return description; diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BasePlugin.java b/plugins/base/src/main/java/sysmon/plugins/base/BasePlugin.java similarity index 97% rename from plugins/os-base/src/main/java/sysmon/plugins/os_base/BasePlugin.java rename to plugins/base/src/main/java/sysmon/plugins/base/BasePlugin.java index 864205e..c8a9c5d 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BasePlugin.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BasePlugin.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_base; +package sysmon.plugins.base; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseProcessExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BaseProcessExtension.java similarity index 96% rename from plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseProcessExtension.java rename to plugins/base/src/main/java/sysmon/plugins/base/BaseProcessExtension.java index 19fa71f..efdf0df 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseProcessExtension.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BaseProcessExtension.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_base; +package sysmon.plugins.base; import org.pf4j.Extension; import org.slf4j.Logger; @@ -18,7 +18,6 @@ public class BaseProcessExtension implements MetricExtension { // Extension details private final String name = "base_process"; - private final String provides = "process"; private final String description = "Base Process Metrics"; // Configuration / Options @@ -75,11 +74,6 @@ public class BaseProcessExtension implements MetricExtension { return interval; } - @Override - public String getProvides() { - return provides; - } - @Override public String getDescription() { return description; diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseProcessorExtension.java b/plugins/base/src/main/java/sysmon/plugins/base/BaseProcessorExtension.java similarity index 95% rename from plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseProcessorExtension.java rename to plugins/base/src/main/java/sysmon/plugins/base/BaseProcessorExtension.java index 994d18b..545a053 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseProcessorExtension.java +++ b/plugins/base/src/main/java/sysmon/plugins/base/BaseProcessorExtension.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_base; +package sysmon.plugins.base; import org.pf4j.Extension; import org.slf4j.Logger; @@ -10,7 +10,6 @@ import sysmon.shared.MetricExtension; import sysmon.shared.MetricResult; import sysmon.shared.PluginHelper; -import java.util.HashMap; import java.util.Map; import java.util.TreeMap; @@ -21,7 +20,6 @@ public class BaseProcessorExtension implements MetricExtension { // Extension details private final String name = "base_processor"; - private final String provides = "processor"; private final String description = "Base Processor Metrics"; // Configuration / Options @@ -58,11 +56,6 @@ public class BaseProcessorExtension implements MetricExtension { return interval; } - @Override - public String getProvides() { - return provides; - } - @Override public String getDescription() { return description; diff --git a/plugins/os-base/src/test/resources/free.txt b/plugins/base/src/test/resources/free.txt similarity index 100% rename from plugins/os-base/src/test/resources/free.txt rename to plugins/base/src/test/resources/free.txt diff --git a/plugins/os-base/src/test/resources/meminfo.txt b/plugins/base/src/test/resources/meminfo.txt similarity index 100% rename from plugins/os-base/src/test/resources/meminfo.txt rename to plugins/base/src/test/resources/meminfo.txt diff --git a/plugins/os-base/src/test/resources/proc_diskstats1.txt b/plugins/base/src/test/resources/proc_diskstats1.txt similarity index 100% rename from plugins/os-base/src/test/resources/proc_diskstats1.txt rename to plugins/base/src/test/resources/proc_diskstats1.txt diff --git a/plugins/os-base/src/test/resources/proc_diskstats2.txt b/plugins/base/src/test/resources/proc_diskstats2.txt similarity index 100% rename from plugins/os-base/src/test/resources/proc_diskstats2.txt rename to plugins/base/src/test/resources/proc_diskstats2.txt diff --git a/plugins/os-base/src/test/resources/proc_net_dev1.txt b/plugins/base/src/test/resources/proc_net_dev1.txt similarity index 100% rename from plugins/os-base/src/test/resources/proc_net_dev1.txt rename to plugins/base/src/test/resources/proc_net_dev1.txt diff --git a/plugins/os-base/src/test/resources/proc_net_dev2.txt b/plugins/base/src/test/resources/proc_net_dev2.txt similarity index 100% rename from plugins/os-base/src/test/resources/proc_net_dev2.txt rename to plugins/base/src/test/resources/proc_net_dev2.txt diff --git a/plugins/os-base/src/test/resources/proc_net_sockstat.txt b/plugins/base/src/test/resources/proc_net_sockstat.txt similarity index 100% rename from plugins/os-base/src/test/resources/proc_net_sockstat.txt rename to plugins/base/src/test/resources/proc_net_sockstat.txt diff --git a/plugins/os-base/src/test/resources/proc_stats1.txt b/plugins/base/src/test/resources/proc_stats1.txt similarity index 100% rename from plugins/os-base/src/test/resources/proc_stats1.txt rename to plugins/base/src/test/resources/proc_stats1.txt diff --git a/plugins/os-base/src/test/resources/proc_stats2.txt b/plugins/base/src/test/resources/proc_stats2.txt similarity index 100% rename from plugins/os-base/src/test/resources/proc_stats2.txt rename to plugins/base/src/test/resources/proc_stats2.txt diff --git a/plugins/os-aix/gradle.properties b/plugins/os-aix/gradle.properties deleted file mode 100644 index 300c5af..0000000 --- a/plugins/os-aix/gradle.properties +++ /dev/null @@ -1,6 +0,0 @@ -pluginId=sysmon-aix -pluginClass=sysmon.plugins.os_aix.AixPlugin -pluginVersion=0.0.1 -pluginProvider=System Monitor -pluginDependencies= -pluginDescription=Collects AIX OS metrics. \ No newline at end of file diff --git a/plugins/os-aix/src/main/java/sysmon/plugins/os_aix/AixPlugin.java b/plugins/os-aix/src/main/java/sysmon/plugins/os_aix/AixPlugin.java deleted file mode 100644 index 1469eb3..0000000 --- a/plugins/os-aix/src/main/java/sysmon/plugins/os_aix/AixPlugin.java +++ /dev/null @@ -1,18 +0,0 @@ -package sysmon.plugins.os_aix; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.pf4j.Plugin; -import org.pf4j.PluginWrapper; - -public class AixPlugin extends Plugin { - - private static final Logger log = LoggerFactory.getLogger(AixPlugin.class); - - public AixPlugin(PluginWrapper wrapper) { - super(wrapper); - } - -} - - diff --git a/plugins/os-ibmi/README.md b/plugins/os-ibmi/README.md deleted file mode 100644 index c191c34..0000000 --- a/plugins/os-ibmi/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# IBM i Plugin - -This is just for testing purposes. - diff --git a/plugins/os-ibmi/build.gradle b/plugins/os-ibmi/build.gradle deleted file mode 100644 index 5cc4451..0000000 --- a/plugins/os-ibmi/build.gradle +++ /dev/null @@ -1,7 +0,0 @@ -plugins { -} - -dependencies { - // https://sourceforge.net/projects/jt400/ and http://jt400.sourceforge.net/ - implementation group: 'net.sf.jt400', name: 'jt400', version: '11.0' -} diff --git a/plugins/os-ibmi/gradle.properties b/plugins/os-ibmi/gradle.properties deleted file mode 100644 index 18a185f..0000000 --- a/plugins/os-ibmi/gradle.properties +++ /dev/null @@ -1,4 +0,0 @@ -pluginId=sysmon-ibmi -pluginClass=sysmon.plugins.os_ibmi.IbmIPlugin -pluginDependencies= -pluginDescription=Collects IBM-i OS metrics. \ No newline at end of file diff --git a/plugins/os-ibmi/src/main/java/sysmon/plugins/os_ibmi/IbmIPlugin.java b/plugins/os-ibmi/src/main/java/sysmon/plugins/os_ibmi/IbmIPlugin.java deleted file mode 100644 index 74cf25f..0000000 --- a/plugins/os-ibmi/src/main/java/sysmon/plugins/os_ibmi/IbmIPlugin.java +++ /dev/null @@ -1,97 +0,0 @@ -package sysmon.plugins.os_ibmi; - -import com.ibm.as400.access.AS400; -import com.ibm.as400.access.SystemStatus; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.pf4j.Plugin; -import org.pf4j.PluginWrapper; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; - -public class IbmIPlugin extends Plugin { - - private static final Logger log = LoggerFactory.getLogger(IbmIPlugin.class); - - private static AS400 as400; - private static SystemStatus systemStatus; - private static Connection connection; - - - public IbmIPlugin(PluginWrapper wrapper) { - super(wrapper); - } - - public static AS400 getAS400() { - - if(as400 != null) { - return as400; - } - - // Check platform - String osArch = System.getProperty("os.arch").toLowerCase(); - String osName = System.getProperty("os.name").toLowerCase(); - if(!osArch.equals("ppc64") && !osName.equals("os/400")) { - log.info("getAS400() - OS Arch: {}", osArch); - log.info("getAS400() - OS Name: {}", osName); - return null; - } - - try { - as400 = new AS400("localhost", "*CURRENT"); - //as400 = new AS400("localhost", "*LOCAL"); - //as400 = new AS400("10.32.64.142"); - return as400; - } catch (Exception exception) { - log.error("getAS400() - {}", exception.getMessage()); - } - - return null; - } - - - public static SystemStatus getSystemStatus() { - - if(systemStatus != null) { - return systemStatus; - } - - try { - if (as400 == null) { - as400 = IbmIPlugin.getAS400(); - } - if(systemStatus == null && as400 != null) { - systemStatus = new SystemStatus(as400); - return systemStatus; - } - } catch (Exception exception) { - log.error("getSystemStatus() - {}", exception.getMessage()); - } - - return null; - } - - - public static Connection getConnection() { - - if(connection != null) { - return connection; - } - - try { - DriverManager.registerDriver(new com.ibm.as400.access.AS400JDBCDriver()); - connection = DriverManager.getConnection("jdbc:as400://localhost"); - return connection; - } catch (SQLException exception) { - log.error("getConnection() - {}", exception.getMessage()); - } - - return null; - } - - -} - - diff --git a/plugins/os-ibmi/src/main/java/sysmon/plugins/os_ibmi/TestExtension.java b/plugins/os-ibmi/src/main/java/sysmon/plugins/os_ibmi/TestExtension.java deleted file mode 100644 index 8a7b7fd..0000000 --- a/plugins/os-ibmi/src/main/java/sysmon/plugins/os_ibmi/TestExtension.java +++ /dev/null @@ -1,146 +0,0 @@ -package sysmon.plugins.os_ibmi; - -import com.ibm.as400.access.*; -import org.pf4j.Extension; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import sysmon.shared.Measurement; -import sysmon.shared.MetricExtension; -import sysmon.shared.MetricResult; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; - -//@Extension -public class TestExtension implements MetricExtension { - - private static final Logger log = LoggerFactory.getLogger(TestExtension.class); - - // Extension details - private final String name = "ibmi_test"; - private final String provides = "ibmi_test"; - private final String description = "IBM i Test Metrics"; - - // Configuration / Options - private boolean enabled = true; - private boolean threaded = false; - private String interval = "10s"; - - private SystemStatus systemStatus; - - - @Override - public boolean isEnabled() { - return enabled; - } - - @Override - public boolean isThreaded() { - return threaded; - } - - @Override - public boolean isSupported() { - systemStatus = IbmIPlugin.getSystemStatus(); - return systemStatus != null; - } - - @Override - public String getName() { - return name; - } - - @Override - public String getInterval() { - return interval; - } - - @Override - public String getProvides() { - return provides; - } - - @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(systemStatus == null) { - log.warn("getMetrics() - no system or status"); - return null; - } - - /* const hSql = "select - SERVER_NAME, - HTTP_FUNCTION, - SERVER_NORMAL_CONNECTIONS, - SERVER_ACTIVE_THREADS, - SERVER_IDLE_THREADS, - BYTES_RECEIVED, - BYTES_SENT, - NONCACHE_PROCESSING_TIME, - CACHE_PROCESSING_TIME - from - QSYS2.HTTP_SERVER_INFO"; - */ - - try { - int jobsInSystem = systemStatus.getJobsInSystem(); - log.info("Jobs In System: {}", jobsInSystem); - - int batchJobsRunning = systemStatus.getBatchJobsRunning(); - log.info("Batch Jobs Running: {}", batchJobsRunning); - - int activeThreads = systemStatus.getActiveThreadsInSystem(); - log.info("Active Threads: {}", activeThreads); - - int activeJobs = systemStatus.getActiveJobsInSystem(); - log.info("Active Jobs: {}", activeJobs); - - int onlineUsers = systemStatus.getUsersCurrentSignedOn(); - log.info("Online Users: {}", onlineUsers); - - // The storage capacity of the system auxiliary storage pool (ASP1) in MBytes. - long systemAsp = systemStatus.getSystemASP(); - - System.out.println("Current Processing Capacity :" + systemStatus.getCurrentProcessingCapacity()); - System.out.println("ASPUsed:" + systemStatus.getPercentSystemASPUsed()); - System.out.println("Temp Addresses Used:" + systemStatus.getPercentTemporaryAddresses()); - - - TreeMap fieldsMap = new TreeMap() {{ - put("jobs_total", jobsInSystem); - put("jobs_running", batchJobsRunning); - put("jobs_active", activeJobs); - put("threads", activeThreads); - put("users", onlineUsers); - - }}; - return new MetricResult(name, new Measurement(new TreeMap<>(), fieldsMap)); - - } catch (AS400SecurityException | ErrorCompletingRequestException | InterruptedException | IOException | ObjectDoesNotExistException e) { - log.error("getMetrics() {}", e.getMessage()); - e.printStackTrace(); - } - - return null; - } -} diff --git a/plugins/os-linux/README.md b/plugins/os-linux/README.md deleted file mode 100644 index 1b6412a..0000000 --- a/plugins/os-linux/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Linux Plugins - -## Components - -### Network Sockets - -Collects statistics from */proc/net/sockstats*. diff --git a/plugins/os-linux/build.gradle b/plugins/os-linux/build.gradle deleted file mode 100644 index d18c3d3..0000000 --- a/plugins/os-linux/build.gradle +++ /dev/null @@ -1,2 +0,0 @@ -plugins { -} \ No newline at end of file diff --git a/plugins/os-linux/gradle.properties b/plugins/os-linux/gradle.properties deleted file mode 100644 index 8f02aac..0000000 --- a/plugins/os-linux/gradle.properties +++ /dev/null @@ -1,5 +0,0 @@ -pluginId=sysmon-linux -pluginClass=sysmon.plugins.os_linux.LinuxPlugin -pluginDependencies= -pluginDescription=Linux OS Metrics. - diff --git a/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxNetstatExtension.java b/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxNetstatExtension.java deleted file mode 100644 index a1bf049..0000000 --- a/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxNetstatExtension.java +++ /dev/null @@ -1,109 +0,0 @@ -package sysmon.plugins.os_linux; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import sysmon.shared.Measurement; -import sysmon.shared.MetricExtension; -import sysmon.shared.MetricResult; -import sysmon.shared.PluginHelper; - -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; - -// Disabled -//@Extension -public class LinuxNetstatExtension implements MetricExtension { - - private static final Logger log = LoggerFactory.getLogger(LinuxNetstatExtension.class); - - // Extension details - private final String name = "linux_network_netstat"; - private final String provides = "network_netstat"; - private final String description = "Linux Netstat Metrics"; - - // Configuration / Options - private boolean enabled = true; - private boolean threaded = false; - - - @Override - public boolean isEnabled() { - return enabled; - } - - @Override - public boolean isThreaded() { - return threaded; - } - - @Override - public boolean isSupported() { - - if(!System.getProperty("os.name").toLowerCase().contains("linux")) { - log.warn("Requires Linux."); - return false; - } - - if(PluginHelper.notExecutable("netstat")) { - log.warn("Requires the 'netstat' command."); - return false; - } - - return true; - } - - @Override - public String getName() { - return name; - } - - @Override - public String getInterval() { - return null; - } - - @Override - public String getProvides() { - return provides; - } - - @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"); - } - } - - @Override - public MetricResult getMetrics() throws Exception { - - TreeMap tagsMap; - TreeMap fieldsMap; - - try (InputStream inputStream = PluginHelper.executeCommand("netstat -s")) { - LinuxNetstatParser parser = processCommandOutput(inputStream); - tagsMap = parser.getTags(); - fieldsMap = parser.getFields(); - } - - return new MetricResult(name, new Measurement(tagsMap, fieldsMap)); - } - - - protected LinuxNetstatParser processCommandOutput(InputStream input) throws IOException { - return new LinuxNetstatParser(input); - } - -} - diff --git a/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxNetstatParser.java b/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxNetstatParser.java deleted file mode 100644 index f351a67..0000000 --- a/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxNetstatParser.java +++ /dev/null @@ -1,165 +0,0 @@ -package sysmon.plugins.os_linux; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.HashMap; -import java.util.TreeMap; - -public class LinuxNetstatParser { - - private static final Logger log = LoggerFactory.getLogger(LinuxNetstatParser.class); - - private long ipTotalPacketsReceived; - private long ipForwarded; - private long ipIncomingPacketsDiscarded; - private long ipOutgoingPacketsDropped; - - private long tcpConnectionsEstablished; - private long tcpSegmentsReceived; - private long tcpSegmentsSent; - - private long udpPacketsReceived; - private long udpPacketsSent; - - - public LinuxNetstatParser(InputStream inputStream) throws IOException { - - BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); - while (reader.ready()) { - String line = reader.readLine(); - log.debug("LinuxNetstatParser() - Line: " + line); - - if(line.startsWith("Ip:")) { - parseIp(reader); - } - - if(line.startsWith("Tcp:")) { - parseTcp(reader); - } - - if(line.startsWith("Udp:")) { - parseUdp(reader); - } - - } - - inputStream.close(); - } - - - protected void parseIp(BufferedReader reader) throws IOException { - - while (reader.ready()) { - reader.mark(64); - String line = reader.readLine(); - - if(!line.startsWith(" ")) { - reader.reset(); - return; - } - - line = line.trim(); - - if(line.matches("(\\d+) total packets received")) { - ipTotalPacketsReceived = getFirstLong(line); - } - - if(line.matches("(\\d+) forwarded")) { - ipForwarded = getFirstLong(line); - } - - if(line.matches("(\\d+) incoming packets discarded")) { - ipIncomingPacketsDiscarded = getFirstLong(line); - } - - if(line.matches("(\\d+) outgoing packets dropped")) { - ipOutgoingPacketsDropped = getFirstLong(line); - } - - } - - } - - - protected void parseTcp(BufferedReader reader) throws IOException { - - while (reader.ready()) { - reader.mark(64); - String line = reader.readLine(); - - if(!line.startsWith(" ")) { - reader.reset(); - return; - } - - line = line.trim(); - - if(line.matches("(\\d+) connections established")) { - tcpConnectionsEstablished = getFirstLong(line); - } - - if(line.matches("(\\d+) segments received")) { - tcpSegmentsReceived = getFirstLong(line); - } - - if(line.matches("(\\d+) segments sent out")) { - tcpSegmentsSent = getFirstLong(line); - } - - } - - } - - protected void parseUdp(BufferedReader reader) throws IOException { - - while (reader.ready()) { - reader.mark(64); - String line = reader.readLine(); - - if(!line.startsWith(" ")) { - reader.reset(); - return; - } - - line = line.trim(); - - if(line.matches("(\\d+) packets received")) { - udpPacketsReceived = getFirstLong(line); - } - - if(line.matches("(\\d+) packets sent")) { - udpPacketsSent = getFirstLong(line); - } - } - - } - - - public TreeMap getTags() { - return new TreeMap<>(); - } - - public TreeMap getFields() { - return new TreeMap() {{ - put("ip_forwarded", ipForwarded); - put("ip_received", ipTotalPacketsReceived); - put("ip_dropped", ipOutgoingPacketsDropped); - put("ip_discarded", ipIncomingPacketsDiscarded); - put("tcp_connections", tcpConnectionsEstablished); - put("tcp_pkts_recv", tcpSegmentsReceived); - put("tcp_pkts_sent", tcpSegmentsSent); - put("udp_pkts_recv", udpPacketsReceived); - put("udp_pkts_sent", udpPacketsSent); - }}; - } - - private Long getFirstLong(String line) { - return Long.parseLong(line.substring(0, line.indexOf(" "))); - } - -} diff --git a/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxPlugin.java b/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxPlugin.java deleted file mode 100644 index d124e00..0000000 --- a/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxPlugin.java +++ /dev/null @@ -1,17 +0,0 @@ -package sysmon.plugins.os_linux; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.pf4j.Plugin; -import org.pf4j.PluginWrapper; - - -public class LinuxPlugin extends Plugin { - - private static final Logger log = LoggerFactory.getLogger(LinuxPlugin.class); - - public LinuxPlugin(PluginWrapper wrapper) { - super(wrapper); - } - -} diff --git a/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxSocketExtension.java b/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxSocketExtension.java deleted file mode 100644 index 3428ff7..0000000 --- a/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxSocketExtension.java +++ /dev/null @@ -1,98 +0,0 @@ -package sysmon.plugins.os_linux; - -import org.pf4j.Extension; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import sysmon.shared.Measurement; -import sysmon.shared.MetricExtension; -import sysmon.shared.MetricResult; -import sysmon.shared.PluginHelper; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - -@Extension -public class LinuxSocketExtension implements MetricExtension { - - private static final Logger log = LoggerFactory.getLogger(LinuxSocketExtension.class); - - // Extension details - private final String name = "linux_network_sockets"; - private final String provides = "network_sockets"; - private final String description = "Linux Network Socket Metrics"; - - // Configuration / Options - private boolean enabled = true; - private boolean threaded = false; - - - @Override - public boolean isEnabled() { - return enabled; - } - - @Override - public boolean isThreaded() { - return threaded; - } - - @Override - public boolean isSupported() { - - if(!System.getProperty("os.name").toLowerCase().contains("linux")) { - log.debug("Requires Linux."); - return false; - } - - return true; - } - - @Override - public String getName() { - return name; - } - - @Override - public String getInterval() { - return null; - } - - @Override - public String getProvides() { - return provides; - } - - @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"); - } - } - - @Override - public MetricResult getMetrics() { - - LinuxSocketStat sockStat = processSockOutput(PluginHelper.readFile("/proc/net/sockstat")); - - TreeMap tagsMap = sockStat.getTags(); - TreeMap fieldsMap = sockStat.getFields(); - - log.debug("getMetrics() - tags: {}, fields: {}", tagsMap, fieldsMap); - return new MetricResult(name, new Measurement(tagsMap, fieldsMap)); - } - - protected LinuxSocketStat processSockOutput(List inputLines) { - return new LinuxSocketStat(inputLines); - } - -} diff --git a/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxSocketStat.java b/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxSocketStat.java deleted file mode 100644 index eb7326c..0000000 --- a/plugins/os-linux/src/main/java/sysmon/plugins/os_linux/LinuxSocketStat.java +++ /dev/null @@ -1,97 +0,0 @@ -package sysmon.plugins.os_linux; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.List; -import java.util.TreeMap; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class LinuxSocketStat { - - private static final Logger log = LoggerFactory.getLogger(LinuxSocketStat.class); - - private static final Pattern pattern1 = Pattern.compile("^sockets: used (\\d+)"); - private static final Pattern pattern2 = Pattern.compile("^TCP: inuse (\\d+) orphan (\\d+) tw (\\d+) alloc (\\d+) mem (\\d+)"); - private static final Pattern pattern3 = Pattern.compile("^UDP: inuse (\\d+) mem (\\d+)"); - - private long sockets; - private long tcp_inuse; - private long tcp_orphan; - private long tcp_tw; - private long tcp_alloc; - private long tcp_mem; - private long udp_inuse; - private long udp_mem; - - /* - sockets: used 1238 - TCP: inuse 52 orphan 0 tw 18 alloc 55 mem 7 - UDP: inuse 11 mem 10 - UDPLITE: inuse 0 - RAW: inuse 0 - FRAG: inuse 0 memory 0 - */ - - - LinuxSocketStat(List lines) { - - Matcher matcher; - for(String line : lines) { - String proto = line.substring(0, line.indexOf(':')); - - switch (proto) { - case "sockets": - matcher = pattern1.matcher(line); - if (matcher.matches() && matcher.groupCount() == 1) { - sockets = Long.parseLong(matcher.group(1)); - } - break; - - case "TCP": - matcher = pattern2.matcher(line); - if (matcher.matches() && matcher.groupCount() == 5) { - tcp_inuse = Long.parseLong(matcher.group(1)); - tcp_orphan = Long.parseLong(matcher.group(2)); - tcp_tw = Long.parseLong(matcher.group(3)); - tcp_alloc = Long.parseLong(matcher.group(4)); - tcp_mem = Long.parseLong(matcher.group(5)); - } - break; - - case "UDP": - matcher = pattern3.matcher(line); - if (matcher.matches() && matcher.groupCount() == 2) { - udp_inuse = Long.parseLong(matcher.group(1)); - udp_mem = Long.parseLong(matcher.group(2)); - } - break; - - } - - } - - } - - - public TreeMap getTags() { - return new TreeMap<>(); - } - - - public TreeMap getFields() { - return new TreeMap() {{ - put("sockets", sockets); - put("tcp_inuse", tcp_inuse); - put("tcp_alloc", tcp_alloc); - put("tcp_orphan", tcp_orphan); - put("tcp_mem", tcp_mem); - put("tcp_tw", tcp_tw); - put("udp_inuse", udp_inuse); - put("udp_mem", udp_mem); - }}; - } - -} diff --git a/plugins/os-linux/src/test/groovy/LinuxNetstatTest.groovy b/plugins/os-linux/src/test/groovy/LinuxNetstatTest.groovy deleted file mode 100644 index 4f0e416..0000000 --- a/plugins/os-linux/src/test/groovy/LinuxNetstatTest.groovy +++ /dev/null @@ -1,26 +0,0 @@ -import spock.lang.Specification -import sysmon.plugins.os_linux.LinuxNetstatParser - -class LinuxNetstatTest extends Specification { - - void "test netstat parsing"() { - - setup: - InputStream inputStream = getClass().getResourceAsStream('/netstat-linux.txt') - - when: - LinuxNetstatParser parser = new LinuxNetstatParser(inputStream) - - then: - parser.getFields().size() > 0 - parser.getFields().get('ip_received') == 109772L - parser.getFields().get('ip_dropped') == 70L - parser.getFields().get('ip_discarded') == 0L - parser.getFields().get('tcp_pkts_sent') == 89891L - parser.getFields().get('tcp_pkts_recv') == 86167L - parser.getFields().get('udp_pkts_sent') == 10682L - parser.getFields().get('udp_pkts_recv') == 31928L - - } - -} diff --git a/plugins/os-linux/src/test/groovy/LinuxNetworkTest.groovy b/plugins/os-linux/src/test/groovy/LinuxNetworkTest.groovy deleted file mode 100644 index ae697ce..0000000 --- a/plugins/os-linux/src/test/groovy/LinuxNetworkTest.groovy +++ /dev/null @@ -1,29 +0,0 @@ -import spock.lang.Specification -import sysmon.plugins.os_linux.LinuxSocketExtension -import sysmon.plugins.os_linux.LinuxSocketStat - -class LinuxNetworkTest extends Specification { - - void "test /proc/net/sockstat parsing"() { - - setup: - def testFile = new File(getClass().getResource('/proc_net_sockstat.txt').toURI()) - List lines = testFile.readLines("UTF-8") - - when: - LinuxSocketExtension extension = new LinuxSocketExtension() - LinuxSocketStat stats = extension.processSockOutput(lines) - - then: - stats.getFields().get("sockets") == 1238L - stats.getFields().get("tcp_inuse") == 52L - stats.getFields().get("tcp_orphan") == 0L - stats.getFields().get("tcp_alloc") == 55L - stats.getFields().get("tcp_mem") == 7l - stats.getFields().get("tcp_tw") == 18L - stats.getFields().get("udp_inuse") == 11L - stats.getFields().get("udp_mem") == 10L - - } - -} diff --git a/plugins/os-linux/src/test/resources/netstat-linux.txt b/plugins/os-linux/src/test/resources/netstat-linux.txt deleted file mode 100644 index 68674bc..0000000 --- a/plugins/os-linux/src/test/resources/netstat-linux.txt +++ /dev/null @@ -1,112 +0,0 @@ -Ip: - Forwarding: 1 - 109772 total packets received - 1 with invalid addresses - 0 forwarded - 0 incoming packets discarded - 109769 incoming packets delivered - 103916 requests sent out - 70 outgoing packets dropped - 1 dropped because of missing route -Icmp: - 52 ICMP messages received - 0 input ICMP message failed - ICMP input histogram: - destination unreachable: 40 - echo requests: 12 - 108 ICMP messages sent - 0 ICMP messages failed - ICMP output histogram: - destination unreachable: 96 - echo replies: 12 -IcmpMsg: - InType3: 40 - InType8: 12 - OutType0: 12 - OutType3: 96 -Tcp: - 3142 active connection openings - 5 passive connection openings - 2105 failed connection attempts - 193 connection resets received - 70 connections established - 86167 segments received - 89891 segments sent out - 184 segments retransmitted - 3 bad segments received - 2735 resets sent -Udp: - 31928 packets received - 96 packets to unknown port received - 0 packet receive errors - 10682 packets sent - 0 receive buffer errors - 0 send buffer errors - IgnoredMulti: 22 -UdpLite: -TcpExt: - 30 packets pruned from receive queue because of socket buffer overrun - 178 TCP sockets finished time wait in fast timer - 426 delayed acks sent - 1 delayed acks further delayed because of locked socket - Quick ack mode was activated 1059 times - 45809 packet headers predicted - 7293 acknowledgments not containing data payload received - 7659 predicted acknowledgments - TCPSackRecovery: 3 - Detected reordering 4 times using SACK - TCPDSACKUndo: 1 - 1 congestion windows recovered without slow start after partial ack - TCPLostRetransmit: 82 - 3 timeouts after reno fast retransmit - 1 timeouts in loss state - 3 fast retransmits - 3 retransmits in slow start - TCPTimeouts: 129 - TCPLossProbes: 69 - TCPLossProbeRecovery: 10 - TCPBacklogCoalesce: 450 - TCPDSACKOldSent: 991 - TCPDSACKOfoSent: 6 - TCPDSACKRecv: 45 - 202 connections reset due to unexpected data - 147 connections reset due to early user close - 13 connections aborted due to timeout - TCPDSACKIgnoredNoUndo: 10 - TCPSackShifted: 1 - TCPSackMerged: 1 - TCPSackShiftFallback: 9 - TCPRcvCoalesce: 5338 - TCPOFOQueue: 793 - TCPOFOMerge: 6 - TCPChallengeACK: 3 - TCPSYNChallenge: 3 - TCPSpuriousRtxHostQueues: 6 - TCPAutoCorking: 710 - TCPFromZeroWindowAdv: 1 - TCPToZeroWindowAdv: 1 - TCPWantZeroWindowAdv: 4 - TCPSynRetrans: 98 - TCPOrigDataSent: 19048 - TCPHystartTrainDetect: 3 - TCPHystartTrainCwnd: 54 - TCPHystartDelayDetect: 1 - TCPHystartDelayCwnd: 24 - TCPACKSkippedSeq: 1 - TCPKeepAlive: 2595 - TCPDelivered: 20025 - TCPAckCompressed: 260 - TcpTimeoutRehash: 116 -IpExt: - InMcastPkts: 2257 - OutMcastPkts: 480 - InBcastPkts: 98 - OutBcastPkts: 78 - InOctets: 147193028 - OutOctets: 14723163 - InMcastOctets: 478599 - OutMcastOctets: 73462 - InBcastOctets: 10094 - OutBcastOctets: 5580 - InNoECTPkts: 177661 -MPTcpExt: diff --git a/plugins/os-linux/src/test/resources/proc_net_sockstat.txt b/plugins/os-linux/src/test/resources/proc_net_sockstat.txt deleted file mode 100644 index f0c0afc..0000000 --- a/plugins/os-linux/src/test/resources/proc_net_sockstat.txt +++ /dev/null @@ -1,6 +0,0 @@ -sockets: used 1238 -TCP: inuse 52 orphan 0 tw 18 alloc 55 mem 7 -UDP: inuse 11 mem 10 -UDPLITE: inuse 0 -RAW: inuse 0 -FRAG: inuse 0 memory 0 diff --git a/plugins/os-aix/README.md b/plugins/power/README.md similarity index 100% rename from plugins/os-aix/README.md rename to plugins/power/README.md diff --git a/plugins/os-aix/build.gradle b/plugins/power/build.gradle similarity index 100% rename from plugins/os-aix/build.gradle rename to plugins/power/build.gradle diff --git a/plugins/power/gradle.properties b/plugins/power/gradle.properties new file mode 100644 index 0000000..f130b6f --- /dev/null +++ b/plugins/power/gradle.properties @@ -0,0 +1,6 @@ +pluginId=sysmon-power +pluginClass=sysmon.plugins.power.PowerPlugin +pluginVersion=0.0.1 +pluginProvider=System Monitor +pluginDependencies= +pluginDescription=Collects IBM Power specific metrics. diff --git a/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java b/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java new file mode 100644 index 0000000..07d7e6f --- /dev/null +++ b/plugins/power/src/main/java/sysmon/plugins/power/PowerPlugin.java @@ -0,0 +1,18 @@ +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); + } + +} + + diff --git a/plugins/os-aix/src/main/java/sysmon/plugins/os_aix/AixProcessorExtension.java b/plugins/power/src/main/java/sysmon/plugins/power/PowerProcessorExtension.java similarity index 78% rename from plugins/os-aix/src/main/java/sysmon/plugins/os_aix/AixProcessorExtension.java rename to plugins/power/src/main/java/sysmon/plugins/power/PowerProcessorExtension.java index a20f7bd..ebe22b0 100644 --- a/plugins/os-aix/src/main/java/sysmon/plugins/os_aix/AixProcessorExtension.java +++ b/plugins/power/src/main/java/sysmon/plugins/power/PowerProcessorExtension.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_aix; +package sysmon.plugins.power; import org.pf4j.Extension; import org.slf4j.Logger; @@ -10,19 +10,17 @@ import sysmon.shared.PluginHelper; import java.io.IOException; import java.io.InputStream; -import java.util.HashMap; import java.util.Map; import java.util.TreeMap; @Extension -public class AixProcessorExtension implements MetricExtension { +public class PowerProcessorExtension implements MetricExtension { - private static final Logger log = LoggerFactory.getLogger(AixProcessorExtension.class); + private static final Logger log = LoggerFactory.getLogger(PowerProcessorExtension.class); // Extension details - private final String name = "aix_processor"; - private final String provides = "lpar_processor"; - private final String description = "AIX Processor Metrics"; + private final String name = "power_processor"; + private final String description = "IBM Power Processor Metrics"; // Configuration / Options private boolean enabled = true; @@ -66,11 +64,6 @@ public class AixProcessorExtension implements MetricExtension { return interval; } - @Override - public String getProvides() { - return provides; - } - @Override public String getDescription() { return description; @@ -96,7 +89,7 @@ public class AixProcessorExtension implements MetricExtension { TreeMap fieldsMap = null; try (InputStream buf = PluginHelper.executeCommand("lparstat 3 1")) { - AixProcessorStat processorStat = processCommandOutput(buf); + PowerProcessorStat processorStat = processCommandOutput(buf); tagsMap = processorStat.getTags(); fieldsMap = processorStat.getFields(); } catch (IOException e) { @@ -108,8 +101,8 @@ public class AixProcessorExtension implements MetricExtension { } - protected AixProcessorStat processCommandOutput(InputStream input) throws IOException { - return new AixProcessorStat(input); + protected PowerProcessorStat processCommandOutput(InputStream input) throws IOException { + return new PowerProcessorStat(input); } } diff --git a/plugins/os-aix/src/main/java/sysmon/plugins/os_aix/AixProcessorStat.java b/plugins/power/src/main/java/sysmon/plugins/power/PowerProcessorStat.java similarity index 96% rename from plugins/os-aix/src/main/java/sysmon/plugins/os_aix/AixProcessorStat.java rename to plugins/power/src/main/java/sysmon/plugins/power/PowerProcessorStat.java index a636c4d..3d694ba 100644 --- a/plugins/os-aix/src/main/java/sysmon/plugins/os_aix/AixProcessorStat.java +++ b/plugins/power/src/main/java/sysmon/plugins/power/PowerProcessorStat.java @@ -1,4 +1,4 @@ -package sysmon.plugins.os_aix; +package sysmon.plugins.power; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,15 +8,14 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Arrays; -import java.util.HashMap; import java.util.Objects; import java.util.TreeMap; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class AixProcessorStat { +public class PowerProcessorStat { - private static final Logger log = LoggerFactory.getLogger(AixProcessorStat.class); + private static final Logger log = LoggerFactory.getLogger(PowerProcessorStat.class); // System configuration: type=Shared mode=Uncapped smt=8 lcpu=8 mem=4096MB psize=19 ent=0.50 private static final Pattern patternAixShared = Pattern.compile("^System configuration: type=(\\S+) mode=(\\S+) smt=(\\d+) lcpu=(\\d+) mem=(\\d+)MB psize=(\\d+) ent=(\\d+\\.?\\d*)"); @@ -47,7 +46,7 @@ public class AixProcessorStat { private final float lbusy; // Indicates the percentage of logical processor(s) utilization that occurred while executing at the user and system level. - public AixProcessorStat(InputStream inputStream) throws IOException { + public PowerProcessorStat(InputStream inputStream) throws IOException { String lastLine = null; BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); diff --git a/plugins/os-aix/src/test/groovy/AixProcessorTest.groovy b/plugins/power/src/test/groovy/PowerProcessorTest.groovy similarity index 73% rename from plugins/os-aix/src/test/groovy/AixProcessorTest.groovy rename to plugins/power/src/test/groovy/PowerProcessorTest.groovy index 21cb090..79cf2d7 100644 --- a/plugins/os-aix/src/test/groovy/AixProcessorTest.groovy +++ b/plugins/power/src/test/groovy/PowerProcessorTest.groovy @@ -1,8 +1,8 @@ -import sysmon.plugins.os_aix.AixProcessorExtension -import sysmon.plugins.os_aix.AixProcessorStat +import sysmon.plugins.power.PowerProcessorExtension +import sysmon.plugins.power.PowerProcessorStat import spock.lang.Specification -class AixProcessorTest extends Specification { +class PowerProcessorTest extends Specification { void "test AIX lparstat shared output processing"() { @@ -10,8 +10,8 @@ class AixProcessorTest extends Specification { InputStream inputStream = getClass().getResourceAsStream('/lparstat-aix-shared.txt') when: - AixProcessorExtension extension = new AixProcessorExtension() - AixProcessorStat stats = extension.processCommandOutput(inputStream) + PowerProcessorExtension extension = new PowerProcessorExtension() + PowerProcessorStat stats = extension.processCommandOutput(inputStream) then: stats.getUser() == 83.7f @@ -30,8 +30,8 @@ class AixProcessorTest extends Specification { InputStream inputStream = getClass().getResourceAsStream('/lparstat-aix-dedicated-donating.txt') when: - AixProcessorExtension extension = new AixProcessorExtension() - AixProcessorStat stats = extension.processCommandOutput(inputStream) + PowerProcessorExtension extension = new PowerProcessorExtension() + PowerProcessorStat stats = extension.processCommandOutput(inputStream) then: stats.getUser() == 0.1f @@ -51,8 +51,8 @@ class AixProcessorTest extends Specification { InputStream inputStream = getClass().getResourceAsStream('/lparstat-aix-dedicated-capped.txt') when: - AixProcessorExtension extension = new AixProcessorExtension() - AixProcessorStat stats = extension.processCommandOutput(inputStream) + PowerProcessorExtension extension = new PowerProcessorExtension() + PowerProcessorStat stats = extension.processCommandOutput(inputStream) then: stats.getUser() == 0.0f @@ -71,8 +71,8 @@ class AixProcessorTest extends Specification { InputStream inputStream = getClass().getResourceAsStream('/lparstat-linux.txt') when: - AixProcessorExtension extension = new AixProcessorExtension() - AixProcessorStat stats = extension.processCommandOutput(inputStream) + PowerProcessorExtension extension = new PowerProcessorExtension() + PowerProcessorStat stats = extension.processCommandOutput(inputStream) then: stats.getUser() == 0.03f diff --git a/plugins/os-aix/src/test/resources/lparstat-aix-dedicated-capped.txt b/plugins/power/src/test/resources/lparstat-aix-dedicated-capped.txt similarity index 100% rename from plugins/os-aix/src/test/resources/lparstat-aix-dedicated-capped.txt rename to plugins/power/src/test/resources/lparstat-aix-dedicated-capped.txt diff --git a/plugins/os-aix/src/test/resources/lparstat-aix-dedicated-donating.txt b/plugins/power/src/test/resources/lparstat-aix-dedicated-donating.txt similarity index 100% rename from plugins/os-aix/src/test/resources/lparstat-aix-dedicated-donating.txt rename to plugins/power/src/test/resources/lparstat-aix-dedicated-donating.txt diff --git a/plugins/os-aix/src/test/resources/lparstat-aix-shared.txt b/plugins/power/src/test/resources/lparstat-aix-shared.txt similarity index 100% rename from plugins/os-aix/src/test/resources/lparstat-aix-shared.txt rename to plugins/power/src/test/resources/lparstat-aix-shared.txt diff --git a/plugins/os-aix/src/test/resources/lparstat-linux.txt b/plugins/power/src/test/resources/lparstat-linux.txt similarity index 100% rename from plugins/os-aix/src/test/resources/lparstat-linux.txt rename to plugins/power/src/test/resources/lparstat-linux.txt diff --git a/shared/src/main/java/sysmon/shared/MetricExtension.java b/shared/src/main/java/sysmon/shared/MetricExtension.java index 9cfce61..580c65b 100644 --- a/shared/src/main/java/sysmon/shared/MetricExtension.java +++ b/shared/src/main/java/sysmon/shared/MetricExtension.java @@ -12,7 +12,6 @@ public interface MetricExtension extends ExtensionPoint { String getName(); String getInterval(); - String getProvides(); String getDescription(); void setConfiguration(Map map); diff --git a/shared/src/main/java/sysmon/shared/MetricScript.java b/shared/src/main/java/sysmon/shared/MetricScript.java new file mode 100644 index 0000000..3ec1851 --- /dev/null +++ b/shared/src/main/java/sysmon/shared/MetricScript.java @@ -0,0 +1,7 @@ +package sysmon.shared; + +public interface MetricScript { + + MetricResult getMetrics(); + +}