java sigar 系统监控
<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 系统监控的更多相关文章
- Java系统监控(淘汰sigar)
Sigar是Hyperic-hq产品的基础包,是Hyperic HQ主要的数据收集组件.它用来从许多平台收集系统和处理信息. 这些平台包括:Linux, Windows, Solaris, AIX, ...
- ava如何实现系统监控、系统信息收集、sigar开源API的学习(转)
ava如何实现系统监控.系统信息收集.sigar开源API的学习(转) 转自:http://liningjustsoso.iteye.com/blog/1254584 首先给大家介绍一个开源工具Sig ...
- Java如何实现系统监控、系统信息收集(转
Java如何实现系统监控.系统信息收集.sigar开源API的学习 系统监控(1) Jar资源下载:http://download.csdn.net/detail/yixiaoping/4903853 ...
- Linux系统监控命令及如何定位到Java线程
>>PID.TID的区分 uid是user id,即用户id,root用户的uid是0,0为最高权限,gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID ...
- Linux系统监控命令及定位Java线程
1.PID.TID的区分 uid是user id,即用户id,root用户的uid是0,0为最高权限,gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID.GID:~ ...
- Java日志系统框架的设计与实现
推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...
- Ubuntu系统监控cpu memery 磁盘Io次数 IO速率 网卡 运行时间等信息的采集
实验室最近在做的项目要做ubuntu系统监控,要获得系统的一些信息并返回给web服务器. web服务器与ubuntu主机的通信我写的程序用的是socket,至于为什么不用java程序ssh到对应的主机 ...
- StatsD!次世代系统监控的核心
在互联网业务蒸蒸日上的今时今日,系统架构日渐复杂,随着软件产品和工程团队的变革,许多开源的监控工具应运而生,其中有一些相当出名,比如 Zabbix.Nagios 还有 StatsD.也有一些问题被大家 ...
- 基于 JVMTI 实现 Java 线程的监控(转)
随着多核 CPU 的日益普及,越来越多的 Java 应用程序使用多线程并行计算来充分发挥整个系统的性能.多线程的使用也给应用程序开发人员带来了巨大的挑战,不正确地使用多线程可能造成线程死锁或资源竞争, ...
随机推荐
- centos挂载移动硬盘ntfs-3g
yum install ntfs-3g sudo mount -t ntfs-3g /dev/sdc1 /mnt/mobiledisk https://tuxera.com/opensource/nt ...
- python and 用法
>>> 1 and [] and [1] [] >>> 1 and [2] and [1] [1] >>> 0 and [1] and [2] 0
- no sucn file or directory,scandir.......node-sass
an 解决方法 运行 npm rebuild node-sass
- 每天一个linux常用命令--ls 和 -ll 有什么区别?
一.-ls 和 -ll 有什么区别? 1. ls 命令可以说是linux下最常用的命令之一.ll不是命令,是ls -l的别名相当于windows里的快捷方式.所以"ll"和“ls ...
- 重温《javascript高级程序设计》(第3版)
1.重温<JavaScript高级程序设计>(第3版) (一)重温<javascript高级程序设计>(第1-4章) (二)重温<JavaScript高级程序设计> ...
- fiddler如何抓取https接口
1.Fiddler工作原理: Fiddler 是以代理 web 服务器的形式工作的,它使用代理地址:127.0.0.1端口:8888. 当 Fiddler 退出的时候它会自动注销,这样就不会影响 ...
- SQLAlchemy应用到Flask中
安装模块 pip install Flask-SQLAlchemy 加入Flask-SQLAlchemy第三方组件 from flask import Flask # 导入Flask-SQLAlche ...
- HDU 1029Ignatius and the Princess IV
Ignatius and the Princess IV Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32767 K ( ...
- docker-container 操作
1.把container放后台运行 [root@localhost dockerfile3]# docker run bigni/python_flask #默认运行image,container里运 ...
- object of type 'Response' has no len()
看见没,这里括号弄错了! 网上解释是requests.get()得到的是一个response对象,无法用BeautifulSoup解析,如果要解析,解析对象应该是requests.get().cont ...