public static void getServerCpuInfo(Sigar sigar, ServerStatus status) { try { CpuInfo infos[] = sigar.getCpuInfoList(); CpuPerc cpuList[] = sigar.getCpuPercList(); double totalUse = 0L; for (int i = 0; i < infos.length; i++) { CpuPerc perc = cpuList[i]; ServerStatus.CpuInfoVo cpuInfo = new ServerStatus.CpuInfoVo(); cpuInfo.setId(infos[i].hashCode() + ""); cpuInfo.setCacheSize(infos[i].getCacheSize()); cpuInfo.setModel(infos[i].getModel()); cpuInfo.setUsed(CpuPerc.format(perc.getCombined())); cpuInfo.setUsedOrigVal(perc.getCombined()); cpuInfo.setIdle(CpuPerc.format(perc.getIdle())); cpuInfo.setTotalMHz(infos[i].getMhz()); cpuInfo.setVendor(infos[i].getVendor()); status.getCpuInfos().add(cpuInfo); totalUse += perc.getCombined(); } String cpuu = CpuPerc.format(totalUse / status.getCpuInfos().size()); cpuu = cpuu.substring(0, cpuu.length() - 1); status.setCpuUsage(cpuu); } catch (Exception e) { } }
public static void getServerMemoryInfo(Sigar sigar, ServerStatus status) { try { Mem mem = sigar.getMem(); status.setTotalMem(mem.getTotal() / (1024 * 1024)); status.setUsedMem(mem.getUsed() / (1024 * 1024)); status.setFreeMem(mem.getFree() / (1024 * 1024)); // 交换区 Swap swap = sigar.getSwap(); status.setTotalSwap(swap.getTotal() / (1024 * 1024)); status.setUsedSwap(swap.getUsed() / (1024 * 1024)); status.setFreeSwap(swap.getFree() / (1024 * 1024)); } catch (Exception e) { } }
public static void getServerDiskInfo(Sigar sigar, ServerStatus status) { try { FileSystem fslist[] = sigar.getFileSystemList(); FileSystemUsage usage = null; for (int i = 0; i < fslist.length; i++) { FileSystem fs = fslist[i]; switch (fs.getType()) { case 0: // TYPE_UNKNOWN :未知 case 1: // TYPE_NONE case 3: // TYPE_NETWORK :网络 case 4: // TYPE_RAM_DISK :闪存 case 5: // TYPE_CDROM :光驱 case 6: // TYPE_SWAP :页面交换 break; case 2: // TYPE_LOCAL_DISK : 本地硬盘 ServerStatus.DiskInfoVo disk = new ServerStatus.DiskInfoVo(); disk.setDevName(fs.getDevName()); disk.setDirName(fs.getDirName()); usage = sigar.getFileSystemUsage(fs.getDirName()); disk.setTotalSize(usage.getTotal() / (1024 * 1024)); // disk.setFreeSize(usage.getFree()/(1024*1024)); disk.setAvailSize(usage.getAvail() / (1024 * 1024)); disk.setUsedSize(usage.getUsed() / (1024 * 1024)); disk.setUsePercent(usage.getUsePercent() * 100D + "%"); disk.setTypeName(fs.getTypeName()); disk.setSysTypeName(fs.getSysTypeName()); String val = diskWritesAndReadsOnInit.get(fs.getDevName()); if (val != null) { long timePeriod = (System.currentTimeMillis() - initTime) / 1000; long origRead = Long.parseLong(val.split("\\|")[0]); long origWrite = Long.parseLong(val.split("\\|")[1]); disk.setDiskReadRate((usage.getDiskReadBytes() - origRead) / timePeriod); disk.setDiskWriteRate((usage.getDiskWriteBytes() - origWrite) / timePeriod); } status.getDiskInfos().add(disk); } } } catch (Exception e) { } }
static { initTime = System.currentTimeMillis(); resetClasspath(); Sigar sigar = null; try { sigar = new Sigar(); FileSystem[] fslist = sigar.getFileSystemList(); FileSystemUsage usage = null; for (int i = 0; i < fslist.length; i++) { FileSystem fs = fslist[i]; if (fs.getType() != 2) continue; usage = sigar.getFileSystemUsage(fs.getDirName()); diskWritesAndReadsOnInit.put( fs.getDevName(), usage.getDiskReadBytes() + "|" + usage.getDiskWriteBytes()); } } catch (Exception e) { } finally { if (sigar != null) sigar.close(); } }
public SigarLibrary() { logger.info("Initializing SIGAR library"); try { sigar = new Sigar(); mounts = sigar.getFileSystemMap(); initialized = true; } catch (SigarException e) { logger.info("Could not initialize SIGAR library {} ", e.getMessage()); } catch (UnsatisfiedLinkError linkError) { logger.info("Could not initialize SIGAR library {} ", linkError.getMessage()); } }
private boolean hasAcceptableProcNumber() { try { long fileMax = sigar.getResourceLimit().getProcessesMax(); if (fileMax >= EXPECTED_NPROC || fileMax == INFINITY) { return true; } else { return false; } } catch (SigarException sigarException) { logger.warn( "Could not determine if max processes was acceptable. Error message: {}", sigarException); return false; } }
private boolean hasAcceptableFileLimits() { try { long fileMax = sigar.getResourceLimit().getOpenFilesMax(); if (fileMax >= EXPECTED_MIN_NOFILE || fileMax == INFINITY) { return true; } else { return false; } } catch (SigarException sigarException) { logger.warn( "Could not determine if max open file handle limit is correctly configured. Error message: {}", sigarException); return false; } }
private boolean isSwapEnabled() { try { Swap swap = sigar.getSwap(); long swapSize = swap.getTotal(); if (swapSize > 0) { return true; } else { return false; } } catch (SigarException sigarException) { logger.warn( "Could not determine if swap configuration is acceptable. Error message: {}", sigarException); return false; } }
private boolean hasAcceptableAddressSpace() { // Check is invalid on Windows if (FBUtilities.isWindows()) return true; try { long fileMax = sigar.getResourceLimit().getVirtualMemoryMax(); if (fileMax == EXPECTED_AS) { return true; } else { return false; } } catch (SigarException sigarException) { logger.warn( "Could not determine if VirtualMemoryMax was acceptable. Error message: {}", sigarException); return false; } }