<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. [CSP-S模拟测试]:公园(BFS+剪枝)

    题目传送门(内部题31) 输入格式 第一行,五个整数$V,M,N,E,L$.接下来$M$行,每行两个正整数$s_i,a_i$.保证$s_i$互不相等.接下来$N$行,每行两个正整数$t_j,b_j$. ...

  2. 终于好了 ipython 里执行dos命令 显示结果却显示在kernel界面里 搞定了

    import os cmd = r'type c:\foo.txt' os.system(cmd) import os cmd = r'type c:\foo.txt' os.system(cmd) ...

  3. nginx的配置系统

    nginx的配置系统由一个主配置文件和其他一些辅助的配置文件构成.这些配置文件均是纯文本文件,全部位于nginx安装目录下的conf目录下. 配置文件中以#开始的行,或者是前面有若干空格或者TAB,然 ...

  4. mybatis 学习视频总结记录

    学习mybaits简单增删改查例子记录 此整理是学习视频后的视频内容整理,后半段还没有整理 网易云课堂 SSM高级整合视频 地址 : http://study.163.com/course/cours ...

  5. 平衡二叉搜索树AVL

    package com.sunshine.AlgorithmTemplate; import com.sunshine.OFFER66_SECOND.BalanceTreeNode; import c ...

  6. upc组队赛16 Melody【签到水】

    Melody 题目描述 YellowStar is versatile. One day he writes a melody A = [A1, ..., AN ], and he has a sta ...

  7. SSD如何设置预留空间OP(Over-Provision)

    Over-Provision操作指南 SSD OP全称是(Over-Provision), 中文名预留空间, 指用户不可操作的容量,大小为SSD实际容量减去用户可用容量.简单来说over-provis ...

  8. 如何让Jmeter压力测试减少压力机的资源消耗

    如下是官方的一些建议: 1. 使用非gui模式,例如 jmeter -n -t test.jmx -l test.jtl 2. 尽量用较少的监听器(listeners):如果使用了-l 标致像上面一样 ...

  9. 转 LoadRunner错误处理函数

    在脚本的Run-time Settings中,可以设置在脚本运行过程中发生错误的处理方式.进入到Run-time Settings中,切换到Miscellaneous标签页,可以看到Error Han ...

  10. 整理eclipse,升级jdk环境小记录

    这2天在整理项目: 需要把eclipse 32位,jdk1.6 32位的更改为eclipse 64位,jdk1.8 64位版本的,于是我就在一台window7的电脑上直接操作,遇到了一下几点问题,记录 ...