<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. (转)堆和栈的概念和区别 HeapOutOfMemory和StackOverflow解释

    转:https://blog.csdn.net/pt666/article/details/70876410 https://blog.csdn.net/guohan_solft/article/de ...

  2. Python 进阶_OOP 面向对象编程_类和继承

    目录 目录 类 最简单的类 类方法 构造器 __init__ 创建一个类 实例化一个对象 调用实例的方法和属性 创建子类 使用 super 来调用父类的构造器 实例化子类对象 调用子类的属性和方法 类 ...

  3. APP运营怎么利用留存率等数据分析用户减少的原因?

    APP运营怎么利用留存率等数据分析用户减少的原因? 数据分析最核心的方法是作比较,因为绝对的数值在大多数场合下是没有意义的,通过在不同维度之间做数据的比较分析,能帮助开发者找到数据变化的原因.举一个典 ...

  4. 【读书笔记】:MIT线性代数(3):Special Solution, Rank and RREF

    Special Solutions: Notice what is special about s 1 and S2. They have ones and zeros in the last two ...

  5. python打开文件失败,报错'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence

    python3.7,python3.6都存在的问题: 读取的文件编码是utf-8 第1行是空行.#开头都可能会报这个错误: E:\count_packet>python string_count ...

  6. 分布式系统架构常识:CAP理论。

    什么是CAP理论? 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想.2年后麻省理工学院的Seth Gilbert和NancyLynch从理论上证明 ...

  7. Java小游戏

    这是一个飞机躲避子弹的小游戏,其中有许多干货 这是蒟蒻我第二次做,请各位大佬多多指教 目录 1.游戏主窗口的创建 2.图形绘制_文本绘制_颜色改变_图像对象的加载 3.线程内部类实现动画 4.游戏物体 ...

  8. 怎么避免从删库到跑路 -- 详解 mysql binlog 的配置与使用

    1. 引言 使用数据库的时候,我们每个操作都十分小心,尤其是不能直接在数据库上执行 update.delete 等操作,否则万一忘记加全 where 条件,可能就会造成无法挽回的结果. 有一句十分流行 ...

  9. WPF 基本图形

    一.WPF的基本图形 WPF图形的基类是Shape,所有的wpf图形类都是继承于Shape.Height,Width等决定它所处的面积,位置等,在没有设置图形宽高的情况,坐标位置为所在的容器的坐标,设 ...

  10. websocket(python)

    1.websocket-server https://github.com/google/pywebsocket git clone https://github.com/google/pywebso ...