Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API,由C语言实现的。可以收集的信息包括:
1, CPU信息,包括基本信息(vendor、model、mhz、cacheSize)和统计信息(user、sys、idle、nice、wait)
2, 文件系统信息,包括Filesystem、Size、Used、Avail、Use%、Type
3, 事件信息,类似Service Control Manager
4, 内存信息,物理内存和交换内存的总数、使用数、剩余数;RAM的大小
5, 网络信息,包括网络接口信息和网络路由信息
6, 进程信息,包括每个进程的内存、CPU占用数、状态、参数、句柄
7, IO信息,包括IO的状态,读写大小等
8, 服务状态信息
9, 系统信息,包括操作系统版本,系统资源限制情况,系统运行时间以及负载,JAVA的版本信息等.
Sigar在Java中的使用:
示例代码:
package cn.jsi.buaa;
import org.hyperic.sigar.Cpu;
import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import com.thoughtworks.xstream.XStream;
/**
* Cpu数据
*
* 使用Sigar获得CPU的基本信息、使用百分比、使用时间
*
*/
public class SigarTest {
private CpuInfo info;
private CpuPerc perc;
private Cpu timer;
public SigarTest() {
}
public void populate(Sigar sigar) throws SigarException {
info = sigar.getCpuInfoList()[0];
perc = sigar.getCpuPerc();
timer = sigar.getCpu();
}
public static SigarTest gather(Sigar sigar) throws SigarException {
SigarTest data = new SigarTest();
data.populate(sigar);
return data;
}
public static void main(String[] args) throws Exception {
System.out.println(System.getProperty("java.library.path"));
Sigar sigar = new Sigar();
SigarTest cpuData = SigarTest.gather(sigar);
XStream xstream = new XStream();
xstream.alias("CpuData", SigarTest.class);
System.out.println(xstream.toXML(cpuData));
}
}
Windows:将sigar.jar包放到classpath下,将sigar-amd64-winnt.dll放到环境变量java.library.path下。
Linux:将sigar.jar包放到classpath下,将libsigar-x86-linux.so放到环境变量java.library.path下。
获取网卡的流量
和网卡相关的统计数据主要有:网卡信息(ip地址、子网掩码、mac地址等)、网卡的吞吐量、流量等等。
当然了使用sigar也可以获得这些数据。
下面通过例子说明:
Java代码
1. package lab.sigar;
2.
3. import java.util.ArrayList;
4. import java.util.List;
5.
6. import org.hyperic.sigar.NetInterfaceConfig;
7. import org.hyperic.sigar.NetInterfaceStat;
8. import org.hyperic.sigar.Sigar;
9. import org.hyperic.sigar.SigarException;
10.
11. import com.thoughtworks.xstream.XStream;
12.
13. /**
14. * 网卡信息、接口数据、流量
15. *
16. * 使用Sigar获得网卡信息
17. *
18. */
19. public class NetInterfaceData {
20.
21. private NetInterfaceConfig config;
22. private NetInterfaceStat stat;
23. private long rxbps;
24. private long txbps;
25.
26. public NetInterfaceData() {}
27.
28. public void populate(Sigar sigar, String name)
29. throws SigarException {
30.
31. config = sigar.getNetInterfaceConfig(name);
32.
33. try {
34.
35. long start = System.currentTimeMillis();
36. NetInterfaceStat statStart = sigar.getNetInterfaceStat(name);
37. long rxBytesStart = statStart.getRxBytes();
38. long txBytesStart = statStart.getTxBytes();
39. Thread.sleep(1000);
40. long end = System.currentTimeMillis();
41. NetInterfaceStat statEnd = sigar.getNetInterfaceStat(name);
42. long rxBytesEnd = statEnd.getRxBytes();
43. long txBytesEnd = statEnd.getTxBytes();
44.
45. rxbps = (rxBytesEnd - rxBytesStart)*8/(end-start)*1000;
46. txbps = (txBytesEnd - txBytesStart)*8/(end-start)*1000;
47. stat = sigar.getNetInterfaceStat(name);
48. } catch (SigarException e) {
49.
50. } catch (Exception e) {
51.
52. }
53. }
54.
55. public static NetInterfaceData gather(Sigar sigar, String name)
56. throws SigarException {
57.
58. NetInterfaceData data = new NetInterfaceData();
59. data.populate(sigar, name);
60. return data;
61. }
62.
63. public NetInterfaceConfig getConfig() {
64. return config;
65. }
66.
67. public NetInterfaceStat getStat() {
68. return stat;
69. }
70.
71.
72.
73. public long getRxbps() {
74. return rxbps;
75. }
76.
77. public long getTxbps() {
78. return txbps;
79. }
80.
81. public static void main(String[] args) throws Exception {
82. Sigar sigar = new Sigar();
83. String[] netIfs = sigar.getNetInterfaceList();
84. List netIfList = new ArrayList();
85. for ( String name:netIfs ) {
86. NetInterfaceData netIfData1 = NetInterfaceData.gather(sigar, name);
87. netIfList.add(netIfData1);
88. }
89. XStream xstream = new XStream();
90. xstream.alias("NetInterfaceDatas", List.class);
91. xstream.alias("NetInterfaceData", NetInterfaceData.class);
92. System.out.println(xstream.toXML(netIfList));
93. }
94. }
获取内存数据
内存的主要指标有:物理内存的大小、使用数、剩余数;交换内存的大小、使用数、剩余数;RAM的大小等等。
下面通过例子说明:
Java代码
1. package lab.sigar;
2.
3. import org.hyperic.sigar.Mem;
4. import org.hyperic.sigar.Sigar;
5. import org.hyperic.sigar.SigarException;
6. import org.hyperic.sigar.Swap;
7.
8. import com.thoughtworks.xstream.XStream;
9.
10. /**
11. * 内存数据
12. *
13. * 使用Sigar获得系统内存信息
14. *
15. */
16. public class MemoryData {
17. private Mem mem;
18. private Swap swap;
19.
20. public MemoryData() {
21. }
22.
23. public void populate(Sigar sigar) throws SigarException {
24. mem = sigar.getMem();
25. swap = sigar.getSwap();
26. }
27.
28. public static MemoryData gather(Sigar sigar) throws SigarException {
29. MemoryData data = new MemoryData();
30. data.populate(sigar);
31. return data;
32. }
33.
34. public static void main(String[] args) throws Exception {
35. Sigar sigar = new Sigar();
36. MemoryData memData = MemoryData.gather(sigar);
37. XStream xstream = new XStream();
38. xstream.alias("MemData", MemoryData.class);
39. System.out.println(xstream.toXML(memData));
40. }
41.
42. }
输出:
Xml代码
1. <MemData>
2. <mem>
3. <total>1073102848</total>
4. <ram>1024</ram>
5. <used>932274176</used>
6. <free>140828672</free>
7. <actualUsed>932274176</actualUsed>
8. <actualFree>140828672</actualFree>
9. </mem>
10. <swap>
11. <total>2580328448</total>
12. <used>870432768</used>
13. <free>1709895680</free>
14. <pageIn>137691</pageIn>
15. <pageOut>19392</pageOut>
16. </swap>
17. </MemData>
- 浏览: 281512 次
- 性别:
- 来自: 江西
最新评论
-
wzxxzw519:
多谢哈哈哈哈哈
eclipse左边导航package explorer自动定位 -
jmq2007:
感谢!
eclipse安装maven插件,处理无Maven Pom editor打开方式问题 -
sswh:
非常感谢!不过一个maven插件的安装就弄得这样麻烦(Ecli ...
eclipse安装maven插件,处理无Maven Pom editor打开方式问题 -
摇曳的风:
谢谢,刚知道。
eclipse左边导航package explorer自动定位 -
张阿三:
不错!
将win7电脑变身WiFi热点,让手机、笔记本共享上网
相关推荐
export.sugar百度大屏sugar模版下载
I started this book with the intention of bringing a new side of SugarCRM to light. Since I began working at SugarCRM, I saw the flexibility and extensibility that the application could provide. I ...
sugar.zip,使用MotionLayout实现高德地图bottomSheets效果
sugarcrm developer guide en sugarcrm developer guide en sugarcrm developer guide en
SugarCRM v3.5.1c 简体中文版 See the Installation Guide found on SugarForge.org for installation steps of Sugar Open Source. http://www.sugarcrm.com/crm/documentation.html How to Install a Sugar Patch ...
Sugar QCT_SP
SugarCRM ver 说明 SugarCRM Community Edition SugarCRM Professinal Edition SugarCRM Enterprise Edition
Soft Sugar
最新的sugarCRM6.2.0的汉化包!Delphi语言汉化后(更新算法,不过,据说应该用php汉化更简单的,可惜我不会的哈!),手动修改了少量,均通过测试,没问题! ★★★★使用方法: 第1步:记事本打开.\htdocs\...
sugarcrm原版教程,国内现在sugarcrm的教程较少,网页上很多翻译粗看比较难理解,如果要系统了解,这个是很不错的教程。
Sugar是一个价格合理并且容易使用的企业级CRM,Sugar的设计初衷是为了帮助您的企业于千载客户沟通,共享销售信息,促成交易以及保持客户开心。 数千家企业每天使用Sugar去管理销售,市场和客户支持。 作为一个开源,...
Android数据库框架——Sugar
sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引
My Portal模块允许管理员和用户区连接其他的网站和web应用程序到Sugar User Interface,让sugar成为它的用户的一个一个统一的接口。 sugar时间建立在包括php开发环境,Mysql关系数据库,apache或者IIS web服务器和...
Sugarcrm开发指南英文版共享 很好的crm应用
sugar Android数据库框架jar包,欢迎同学们下载,sugar 框架用起来方便很多
最新SugarCrm6.3.1完美中文汉化包,附有安装教程(word2007,docx格式)
packt_用开源项目快速建站实践丛书之SugarCRM
前端项目-sugar,用于处理本机对象的JavaScript库。
SugarCRM-LangPack-zh_cn-6.5.17 SugarCRM6.5中文语言包