
com.undefinedlabs.scope.utils.props.SystemProps Maven / Gradle / Ivy
package com.undefinedlabs.scope.utils.props;
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.UUID;
public class SystemProps {
public static final String USER_DIR;
public static final String AGENT_ID;
public static final String AGENT_TYPE;
public static final String AGENT_VERSION;
public static final String JAVA_HOME;
public static final String JAVA_CLASS_PATH;
public static final String JAVA_VENDOR;
public static final String JAVA_VERSION;
public static final String JAVA_VM_ARGUMENTS;
public static final String JAVA_MAIN_CLASS;
public static final String PLATFORM_NAME;
public static final String PLATFORM_VERSION;
public static final String PLATFORM_ARCHITECTURE;
public static final boolean RUNNING_IN_CONTAINER;
public static final String HOSTNAME;
static {
USER_DIR = System.getProperty("user.dir");
AGENT_ID = UUID.randomUUID().toString();
AGENT_VERSION = getAgentVersion();
AGENT_TYPE = "java";
JAVA_HOME = System.getProperty("java.home");
JAVA_VERSION = System.getProperty("java.version");
JAVA_CLASS_PATH = System.getProperty("java.class.path");
JAVA_VENDOR = System.getProperty("java.vendor");
JAVA_VM_ARGUMENTS = getVmArguments();
JAVA_MAIN_CLASS = getMainClass();
PLATFORM_NAME = System.getProperty("os.name");
PLATFORM_VERSION = System.getProperty("os.version");
PLATFORM_ARCHITECTURE = System.getProperty("os.arch");
RUNNING_IN_CONTAINER = isRunningInContainer();
HOSTNAME = getHostname();
}
private static String getAgentVersion() {
final String version = VersionUtils.getAgentVersion();
return version != null ? version : "";
}
private static String getMainClass() {
final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
final StackTraceElement main = stackTrace[stackTrace.length - 1];
return main.getClassName();
}
private static String getVmArguments() {
return ManagementFactory.getRuntimeMXBean().getInputArguments().toString();
}
private static String getHostname() {
try {
return InetAddress.getLocalHost().getHostName();
} catch (final UnknownHostException e) {
return "unknown";
}
}
private static boolean isRunningInContainer() {
try {
// When it is executed within a container
// the cgroups returns lines starting with "/docker" || "/lxc"
final List lines =
Files.readAllLines(Paths.get("/proc/1/cgroup"), Charset.defaultCharset());
for (final String line : lines) {
if (line.contains("/docker")
|| line.contains("/lxc")
|| line.contains("/ecs")
|| line.contains("/kubepods")
|| line.contains("/actions_job")) {
return true;
}
}
return false;
} catch (final IOException e) {
return false;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy