in bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/monitoring/AgentHostMonitoring.java [99:174]
public static JsonNode getHostInfo() throws UnknownHostException {
ObjectMapper json = new ObjectMapper();
ObjectNode objectNode = json.createObjectNode();
SystemInfo si = new SystemInfo();
OperatingSystem operatingSystem = si.getOperatingSystem();
OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean();
HardwareAbstractionLayer hal = si.getHardware();
NetworkParams networkParams = operatingSystem.getNetworkParams();
String hostName = networkParams.getHostName();
String ipv4DefaultGateway = networkParams.getIpv4DefaultGateway();
// File Descriptor
OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
long maxFileDescriptors = -1L;
long openFileDescriptors = -1L;
if (operatingSystemMXBean instanceof com.sun.management.UnixOperatingSystemMXBean) {
maxFileDescriptors =
((com.sun.management.UnixOperatingSystemMXBean) operatingSystemMXBean).getMaxFileDescriptorCount();
openFileDescriptors =
((com.sun.management.UnixOperatingSystemMXBean) operatingSystemMXBean).getOpenFileDescriptorCount();
}
// Agent Host Base Info
ObjectNode hostInfoNode = json.createObjectNode();
hostInfoNode
.put("hostname", hostName)
.put("os", osBean.getName())
.put("arch", osBean.getArch())
.put("ipv4Gateway", ipv4DefaultGateway)
// .put("cpu_info", hal.getProcessor().getProcessorIdentifier().getMicroarchitecture())
.put("cpu_info", hal.getProcessor().getProcessorIdentifier().getName())
.put("logical_cores", hal.getProcessor().getLogicalProcessorCount())
.put("physical_cores", hal.getProcessor().getPhysicalProcessorCount())
.put("iPv4addr", getAgentHostIPv4addr(hal, ipv4DefaultGateway))
.put(FILE_OPEN_DESCRIPTOR, openFileDescriptors)
.put(FILE_TOTAL_DESCRIPTOR, maxFileDescriptors);
objectNode.set(AGENT_BASE_INFO, hostInfoNode);
objectNode.put(BOOT_TIME, operatingSystem.getSystemBootTime());
// .put("upTimeSeconds", operatingSystem.getSystemUptime())
// MEM
GlobalMemory memory = hal.getMemory();
objectNode.put(MEM_IDLE, memory.getAvailable()).put(MEM_TOTAL, memory.getTotal());
// DISK
List<OSFileStore> fileStores = operatingSystem.getFileSystem().getFileStores(true);
ArrayNode diskArrayNode = json.createArrayNode();
for (OSFileStore fileStore : fileStores) {
if (fileStore.getTotalSpace() <= 1024 * 1024 * 1024) {
continue;
}
ObjectNode disk = json.createObjectNode();
disk.put(DISK_NAME, fileStore.getVolume());
disk.put(DISK_TOTAL, fileStore.getTotalSpace());
disk.put(DISK_IDLE, fileStore.getFreeSpace());
diskArrayNode.add(disk);
}
objectNode.set(DISKS_BASE_INFO, diskArrayNode);
// DISK IO init
if (!initialized) {
List<HWDiskStore> diskStores = si.getHardware().getDiskStores();
previousReadBytes = new long[diskStores.size()];
previousWriteBytes = new long[diskStores.size()];
// init 0
for (int i = 0; i < diskStores.size(); i++) {
previousReadBytes[i] = 0L;
previousWriteBytes[i] = 0L;
}
initialized = true; // tag
}
return objectNode;
}