Improve AIX lparstat parsing

Bump version 0.1.10
Update dependencies
This commit is contained in:
Mark Nellemann 2022-03-01 20:07:43 +01:00
parent 484834ff35
commit be233d52b9
11 changed files with 56 additions and 26 deletions

20
CHANGELOG.md Normal file
View File

@ -0,0 +1,20 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.1.10] - 2022-03-01
### Added
- (client) More debug options.
- (plugins/linux) Re-enabled network socket-statistics extension.
### Changed
- Updated the oshi dependency to v. 6.1.4.
- (plugins/aix) Improved AIX lparstat parsing.
- (plugins/aix) More debug output from (Power) processor extension.
- (plugins/base) More debug output from plugins-base disk extension.
## [0.1.9] - 2022-02-15
### Changed
- Updated 3rd party dependencies.
[0.1.10]: https://bitbucket.org/mnellemann/sysmon/branches/compare/v0.1.10%0Dv0.1.9
[0.1.9]: https://bitbucket.org/mnellemann/sysmon/branches/compare/v0.1.9%0Dv0.1.8

View File

@ -1,6 +1,6 @@
# Client / Agent
This is the client component of SysMon. Install on the hosts where you want to collect metrics.
This is the client/agent component of SysMon, which you install (together with sysmon-plugins) on the hosts where you want to collect metrics.
## Installation

View File

@ -28,9 +28,11 @@ public class Application implements Callable<Integer> {
@CommandLine.Option(names = { "-c", "--conf" }, description = "Configuration file [default: '/etc/sysmon-client.toml'].", paramLabel = "<file>", defaultValue = "/etc/sysmon-client.toml")
private File configurationFile;
@CommandLine.Option(names = { "-d", "--debug" }, description = "Enable debugging (default: ${DEFAULT_VALUE}).")
private boolean enableDebug = false;
//@CommandLine.Option(names = { "-d", "--debug" }, description = "Enable debugging (default: ${DEFAULT_VALUE}).")
//private boolean enableDebug = false;
@CommandLine.Option(names = { "-d", "--debug" }, description = "Enable debugging (default: ${DEFAULT_VALUE}).")
private boolean[] enableDebug = new boolean[0];
public static void main(String... args) {
int exitCode = new CommandLine(new Application()).execute(args);
@ -42,10 +44,22 @@ public class Application implements Callable<Integer> {
public Integer call() {
String sysmonDebug = System.getProperty("sysmon.debug");
if(sysmonDebug != null || enableDebug) {
if(sysmonDebug != null) {
System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "INFO");
}
switch (enableDebug.length) {
case 1:
System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "INFO");
break;
case 2:
System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "DEBUG");
break;
case 3:
System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "TRACE");
break;
}
String sysmonCfgFile = System.getProperty("sysmon.cfgFile");
if(sysmonCfgFile != null) {
configurationFile = new File(sysmonCfgFile);

View File

@ -3,4 +3,4 @@ pf4jVersion = 3.6.0
slf4jVersion = 1.7.36
camelVersion = 3.14.1
picocliVersion = 4.6.3
oshiVersion = 6.1.3
oshiVersion = 6.1.4

View File

@ -94,6 +94,7 @@ public class AixProcessorExtension implements MetricExtension {
log.error("lparstat error", e);
}
log.debug("getMetrics() - tags: {}, fields: {}", tagsMap, fieldsMap);
return new MetricResult(name, new Measurement(tagsMap, fieldsMap));
}

View File

@ -52,6 +52,7 @@ public class AixProcessorStat {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
while(reader.ready()) {
String line = reader.readLine();
log.trace("AixProcessorStat() - {}", line);
if (line.startsWith("System configuration:")) {
Matcher matcher = patternAixShared.matcher(line);

View File

@ -94,6 +94,7 @@ public class BaseDiskExtension implements MetricExtension {
put("queue", store.getCurrentQueueLength());
}};
log.debug("getMetrics() - tags: {}, fields: {}", tagsMap, fieldsMap);
measurementList.add(new Measurement(tagsMap, fieldsMap));
}

View File

@ -12,11 +12,10 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
// Disabled
//@Extension
public class LinuxSockstatExtension implements MetricExtension {
@Extension
public class LinuxSocketExtension implements MetricExtension {
private static final Logger log = LoggerFactory.getLogger(LinuxSockstatExtension.class);
private static final Logger log = LoggerFactory.getLogger(LinuxSocketExtension.class);
// Extension details
private final String name = "linux_network_sockets";
@ -77,16 +76,17 @@ public class LinuxSockstatExtension implements MetricExtension {
@Override
public MetricResult getMetrics() {
LinuxNetworkSockStat sockStat = processSockOutput(PluginHelper.readFile("/proc/net/sockstat"));
LinuxSocketStat sockStat = processSockOutput(PluginHelper.readFile("/proc/net/sockstat"));
HashMap<String, String> tagsMap = sockStat.getTags();
HashMap<String, Object> fieldsMap = sockStat.getFields();
log.debug("getMetrics() - tags: {}, fields: {}", tagsMap, fieldsMap);
return new MetricResult(name, new Measurement(tagsMap, fieldsMap));
}
protected LinuxNetworkSockStat processSockOutput(List<String> inputLines) {
return new LinuxNetworkSockStat(inputLines);
protected LinuxSocketStat processSockOutput(List<String> inputLines) {
return new LinuxSocketStat(inputLines);
}
}

View File

@ -8,9 +8,9 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class LinuxNetworkSockStat {
public class LinuxSocketStat {
private static final Logger log = LoggerFactory.getLogger(LinuxNetworkSockStat.class);
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+)");
@ -35,7 +35,7 @@ public class LinuxNetworkSockStat {
*/
LinuxNetworkSockStat(List<String> lines) {
LinuxSocketStat(List<String> lines) {
Matcher matcher;
for(String line : lines) {

View File

@ -1,6 +1,6 @@
import spock.lang.Specification
import sysmon.plugins.os_linux.LinuxSockstatExtension
import sysmon.plugins.os_linux.LinuxNetworkSockStat
import sysmon.plugins.os_linux.LinuxSocketExtension
import sysmon.plugins.os_linux.LinuxSocketStat
class LinuxNetworkTest extends Specification {
@ -11,8 +11,8 @@ class LinuxNetworkTest extends Specification {
List<String> lines = testFile.readLines("UTF-8")
when:
LinuxSockstatExtension extension = new LinuxSockstatExtension()
LinuxNetworkSockStat stats = extension.processSockOutput(lines)
LinuxSocketExtension extension = new LinuxSocketExtension()
LinuxSocketStat stats = extension.processSockOutput(lines)
then:
stats.getFields().get("sockets") == 1238L

View File

@ -53,13 +53,6 @@ public class Application implements Callable<Integer> {
}
InfluxDB influxDB = InfluxDBFactory.connect(influxUrl.toString(), influxUser, influxPass);
/*
try {
influxDB.query(new Query("CREATE DATABASE " + influxName));
} catch (InfluxDBException e) {
System.err.println(e.getMessage());
return -1;
}*/
Main main = new Main();
main.bind("myInfluxConnection", influxDB);