<dependency>
<groupId>org</groupId>
<artifactId>sigar</artifactId>
<version>1.6.4</version>
</dependency>
package org.runtime;

import org.hyperic.sigar.*;

import java.util.Date;

import static org.rx.core.Contract.toJsonString;

public final class SystemRuntime {
public static String formatSize(long size) {
return Sigar.formatSize(size);
} public static SystemStatusProperty getProperty() throws Exception {
Sigar sigar = new Sigar();
SystemStatusProperty status = new SystemStatusProperty();
status.setDate(new Date());
CpuInfo cpuInfo = sigar.getCpuInfoList()[0];
status.setCpuInfo(String.format("%s %s @ %s Threads", cpuInfo.getVendor(), cpuInfo.getModel(), cpuInfo.getTotalCores()));
status.setCpuCombined(sigar.getCpuPerc().getCombined());
status.setCpuCombinedPercent(CpuPerc.format(status.getCpuCombined()));
Mem mem = sigar.getMem();
status.setMemoryTotal(mem.getTotal());
status.setMemoryUsed(mem.getActualUsed());
org.hyperic.sigar.Sigar.formatSize()
// org.hyperic.sigar.CpuPerc.format()
long used = 0, total = 0, read = 0, write = 0;
for (FileSystem fileSystem : sigar.getFileSystemList()) {
switch (fileSystem.getType()) {
case FileSystem.TYPE_LOCAL_DISK:
case FileSystem.TYPE_RAM_DISK:
FileSystemUsage usage = sigar.getFileSystemUsage(fileSystem.getDirName());
used += usage.getUsed();
total += usage.getTotal();
read += usage.getDiskReads();
write += usage.getDiskWrites();
break;
}
}
status.setDiskUsed(used);
status.setDiskTotal(total);
status.setDiskReadBytes(read);
status.setDiskWriteBytes(write); NetInterfaceStat netStatLast = find(sigar);
if (netStatLast != null) {
Thread.sleep(1000);
NetInterfaceStat netStatCurrent = find(new Sigar());
if (netStatCurrent != null) {
status.setNetInBytes(netStatCurrent.getRxBytes() - netStatLast.getRxBytes());
status.setNetOutBytes(netStatCurrent.getTxBytes() - netStatLast.getTxBytes());
}
} sigar.close();
System.out.println(toJsonString(status));
return status;
} private static NetInterfaceStat find(Sigar sigar) throws SigarException {
NetInterfaceStat netStat = null;
for (String netName : sigar.getNetInterfaceList()) {
NetInterfaceConfig netConfig = sigar.getNetInterfaceConfig(netName);
if ((netConfig.getFlags() & 1L) <= 0L) {
// System.out.println("!IFF_UP...skipping getNetInterfaceStat");
continue;
}
if (NetFlags.LOOPBACK_ADDRESS.equals(netConfig.getAddress())
|| (netConfig.getFlags() & NetFlags.IFF_LOOPBACK) != 0
|| NetFlags.NULL_HWADDR.equals(netConfig.getHwaddr())) {
continue;
}
// if (NetFlags.ANY_ADDR.equals(netConfig.getAddress())) {
// continue;
// }
// System.out.println("netConfig:" + JSON.toJSONString(netConfig));
netStat = sigar.getNetInterfaceStat(netName);
break;
// System.out.println("netStat:" + JSON.toJSONString(netStat));
// System.out.println(Sigar.formatSize(netStat.getRxBytes()));
// System.out.println();
}
return netStat;
}
}
package org.runtime;

import lombok.Data;

import java.io.Serializable;
import java.util.Date; @Data
public class SystemStatusProperty implements Serializable {
private Date date;
private String cpuInfo;
private double cpuCombined;
private String cpuCombinedPercent;
private long memoryUsed;
private long memoryTotal;
private long diskUsed;
private long diskTotal;
private long diskReadBytes;
private long diskWriteBytes;
private long netInBytes;
private long netOutBytes;
}

java sigar 系统监控的更多相关文章

  1. Java系统监控(淘汰sigar)

    Sigar是Hyperic-hq产品的基础包,是Hyperic HQ主要的数据收集组件.它用来从许多平台收集系统和处理信息. 这些平台包括:Linux, Windows, Solaris, AIX, ...

  2. ava如何实现系统监控、系统信息收集、sigar开源API的学习(转)

    ava如何实现系统监控.系统信息收集.sigar开源API的学习(转) 转自:http://liningjustsoso.iteye.com/blog/1254584 首先给大家介绍一个开源工具Sig ...

  3. Java如何实现系统监控、系统信息收集(转

    Java如何实现系统监控.系统信息收集.sigar开源API的学习 系统监控(1) Jar资源下载:http://download.csdn.net/detail/yixiaoping/4903853 ...

  4. Linux系统监控命令及如何定位到Java线程

    >>PID.TID的区分 uid是user id,即用户id,root用户的uid是0,0为最高权限,gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID ...

  5. Linux系统监控命令及定位Java线程

    1.PID.TID的区分 uid是user id,即用户id,root用户的uid是0,0为最高权限,gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID.GID:~ ...

  6. Java日志系统框架的设计与实现

    推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...

  7. Ubuntu系统监控cpu memery 磁盘Io次数 IO速率 网卡 运行时间等信息的采集

    实验室最近在做的项目要做ubuntu系统监控,要获得系统的一些信息并返回给web服务器. web服务器与ubuntu主机的通信我写的程序用的是socket,至于为什么不用java程序ssh到对应的主机 ...

  8. StatsD!次世代系统监控的核心

    在互联网业务蒸蒸日上的今时今日,系统架构日渐复杂,随着软件产品和工程团队的变革,许多开源的监控工具应运而生,其中有一些相当出名,比如 Zabbix.Nagios 还有 StatsD.也有一些问题被大家 ...

  9. 基于 JVMTI 实现 Java 线程的监控(转)

    随着多核 CPU 的日益普及,越来越多的 Java 应用程序使用多线程并行计算来充分发挥整个系统的性能.多线程的使用也给应用程序开发人员带来了巨大的挑战,不正确地使用多线程可能造成线程死锁或资源竞争, ...

随机推荐

  1. composer 国内加速,修改镜像源

    为什么慢 由于默认情况下执行 composer 各种命令是去国外的 composer 官方镜像源获取需要安装的具体软件信息,所以在不使用代理.不翻墙的情况下,从国内访问国外服务器的速度相对比较慢 如何 ...

  2. VS2015 编写C++的DLL,并防止DLL导出的函数名出现乱码(以串口通信为例,实现串口通信)

    参考链接:https://blog.csdn.net/songyi160/article/details/50754705 1.新建项目 建立好的项目界面如下: 接着在解决方案中找到[头文件]然后右击 ...

  3. Jenkins构建触发器的区别

    Build periodically:定时进行项目构建或执行(它不care源码是否发生变化),配置如下: 0 2 * * *  (每天2:00 必须build一次源码) 如果是要定时执行脚本,需要选择 ...

  4. Linux 通配符和特殊符号

  5. 关系型数据库MySQL(四)_备份与还原

    数据库备份 备份命令:mysqldump 备份一个数据库 mysqldump -h localhost -u username -p password database_name > D:\fi ...

  6. Makefile之自动化变量

    makefile自动化变量在大型项目的Makefile使用的太普遍了,如果你看不懂自动化变量,开源项目的makefile你是看不下去的. 以往总是看到一些项目的makefile,总是要翻gnu的Mak ...

  7. Java +selenium Navigation接口介绍

    Navigation接口主要实现对浏览器的前进.后退.打开网址.刷新当前页面等操作的. void back():就是操作当前页面后退,相当于网页的后退按钮. void forward():就是操作当前 ...

  8. Ascii Chart

    Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex -------------------------- ...

  9. python 装饰器 第十一步:多层装饰器的嵌套

    #第十一步:多层装饰器的嵌套 #装饰器1 def kuozhan1(func): #定义装饰之后的函数 def neweat1(): # 扩展功能1 print('1-----饭前洗手') # 调用基 ...

  10. 使用UI Automation实现自动化测试--5-7

    使用UI Automation实现自动化测试--5 (Winfrom和WPF中弹出和关闭对话框的不同处理方式) 在使用UI Automation对Winform和WPF的程序测试中发现有一些不同的地方 ...