[New] Added system state on agent
This commit is contained in:
parent
fc1ec3b5a3
commit
18cc052a34
|
@ -18,16 +18,16 @@ package li.strolch.agent.api;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.lang.management.*;
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
import li.strolch.agent.impl.ComponentContainerImpl;
|
import li.strolch.agent.impl.ComponentContainerImpl;
|
||||||
import li.strolch.runtime.configuration.ConfigurationParser;
|
import li.strolch.runtime.configuration.ConfigurationParser;
|
||||||
import li.strolch.runtime.configuration.RuntimeConfiguration;
|
import li.strolch.runtime.configuration.RuntimeConfiguration;
|
||||||
|
@ -36,6 +36,7 @@ import li.strolch.utils.NamedThreadPoolFactory;
|
||||||
import li.strolch.utils.dbc.DBC;
|
import li.strolch.utils.dbc.DBC;
|
||||||
import li.strolch.utils.helper.StringHelper;
|
import li.strolch.utils.helper.StringHelper;
|
||||||
import li.strolch.utils.helper.SystemHelper;
|
import li.strolch.utils.helper.SystemHelper;
|
||||||
|
import li.strolch.utils.iso8601.ISO8601;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -55,6 +56,9 @@ public class StrolchAgent {
|
||||||
private Map<String, ExecutorService> executors;
|
private Map<String, ExecutorService> executors;
|
||||||
private Map<String, ScheduledExecutorService> scheduledExecutors;
|
private Map<String, ScheduledExecutorService> scheduledExecutors;
|
||||||
|
|
||||||
|
private JsonObject systemState;
|
||||||
|
private long systemStateUpdateTime;
|
||||||
|
|
||||||
public StrolchAgent(StrolchVersion appVersion) {
|
public StrolchAgent(StrolchVersion appVersion) {
|
||||||
this.appVersion = appVersion;
|
this.appVersion = appVersion;
|
||||||
}
|
}
|
||||||
|
@ -318,4 +322,65 @@ public class StrolchAgent {
|
||||||
|
|
||||||
return this.versionQueryResult;
|
return this.versionQueryResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JsonObject getSystemState(long updateInterval, TimeUnit updateIntervalUnit) {
|
||||||
|
|
||||||
|
if (this.systemState == null || System.currentTimeMillis() - this.systemStateUpdateTime > updateIntervalUnit
|
||||||
|
.toMillis(updateInterval)) {
|
||||||
|
this.systemState = new JsonObject();
|
||||||
|
|
||||||
|
JsonObject osJ = new JsonObject();
|
||||||
|
this.systemState.add("os", osJ);
|
||||||
|
osJ.addProperty("osName", SystemHelper.osName);
|
||||||
|
osJ.addProperty("osArch", SystemHelper.osArch);
|
||||||
|
osJ.addProperty("osVersion", SystemHelper.osVersion);
|
||||||
|
osJ.addProperty("javaVendor", SystemHelper.javaVendor);
|
||||||
|
osJ.addProperty("javaVersion", SystemHelper.javaVersion);
|
||||||
|
|
||||||
|
OperatingSystemMXBean osMXBean = ManagementFactory.getOperatingSystemMXBean();
|
||||||
|
osJ.addProperty("availableProcessors", osMXBean.getAvailableProcessors());
|
||||||
|
osJ.addProperty("systemLoadAverage", osMXBean.getSystemLoadAverage());
|
||||||
|
|
||||||
|
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
|
||||||
|
osJ.addProperty("startTime", ISO8601.toString(new Date(runtimeMXBean.getStartTime())));
|
||||||
|
osJ.addProperty("uptime", runtimeMXBean.getUptime());
|
||||||
|
|
||||||
|
// memory
|
||||||
|
JsonObject memoryJ = new JsonObject();
|
||||||
|
this.systemState.add("memory", memoryJ);
|
||||||
|
|
||||||
|
if (osMXBean instanceof com.sun.management.OperatingSystemMXBean) {
|
||||||
|
com.sun.management.OperatingSystemMXBean os = (com.sun.management.OperatingSystemMXBean) osMXBean;
|
||||||
|
memoryJ.addProperty("totalPhysicalMemorySize", os.getTotalPhysicalMemorySize());
|
||||||
|
memoryJ.addProperty("freePhysicalMemorySize", os.getFreePhysicalMemorySize());
|
||||||
|
memoryJ.addProperty("freeSwapSpaceSize", os.getFreeSwapSpaceSize());
|
||||||
|
memoryJ.addProperty("committedVirtualMemorySize", os.getCommittedVirtualMemorySize());
|
||||||
|
}
|
||||||
|
|
||||||
|
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
|
||||||
|
MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage();
|
||||||
|
memoryJ.addProperty("heapMemoryUsageInit", heapMemoryUsage.getInit());
|
||||||
|
memoryJ.addProperty("heapMemoryUsageUsed", heapMemoryUsage.getUsed());
|
||||||
|
memoryJ.addProperty("heapMemoryUsageMax", heapMemoryUsage.getMax());
|
||||||
|
memoryJ.addProperty("heapMemoryUsageCommitted", heapMemoryUsage.getCommitted());
|
||||||
|
|
||||||
|
// disk space
|
||||||
|
JsonArray rootsJ = new JsonArray();
|
||||||
|
this.systemState.add("roots", rootsJ);
|
||||||
|
File[] roots = File.listRoots();
|
||||||
|
for (File root : roots) {
|
||||||
|
JsonObject rootJ = new JsonObject();
|
||||||
|
rootsJ.add(rootJ);
|
||||||
|
rootJ.addProperty("path", root.getAbsolutePath());
|
||||||
|
rootJ.addProperty("usableSpace", root.getUsableSpace());
|
||||||
|
rootJ.addProperty("usedSpace", root.getTotalSpace() - root.getFreeSpace());
|
||||||
|
rootJ.addProperty("freeSpace", root.getFreeSpace());
|
||||||
|
rootJ.addProperty("totalSpace", root.getTotalSpace());
|
||||||
|
}
|
||||||
|
|
||||||
|
this.systemStateUpdateTime = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.systemState;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,6 +147,7 @@ public class Tags {
|
||||||
public static final String FLAT = "flat";
|
public static final String FLAT = "flat";
|
||||||
|
|
||||||
public static final String APP_VERSION = "appVersion";
|
public static final String APP_VERSION = "appVersion";
|
||||||
|
public static final String SYSTEM_STATE = "systemState";
|
||||||
public static final String AGENT_VERSION = "agentVersion";
|
public static final String AGENT_VERSION = "agentVersion";
|
||||||
public static final String COMPONENT_VERSIONS = "componentVersions";
|
public static final String COMPONENT_VERSIONS = "componentVersions";
|
||||||
public static final String ERRORS = "errors";
|
public static final String ERRORS = "errors";
|
||||||
|
|
Loading…
Reference in New Issue