`

Sigar简介

    博客分类:
  • Java
 
阅读更多

Sigar简介

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>
分享到:
评论

相关推荐

    export.sugar百度大屏sugar模版下载.zip

    export.sugar百度大屏sugar模版下载

    SugarCRM For Dummies

    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

    sugar.zip,使用MotionLayout实现高德地图bottomSheets效果

    sugarcrm developer guide en

    sugarcrm developer guide en sugarcrm developer guide en sugarcrm developer guide en

    SugarCRM v3.5.1c 简体中文版

    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

    Sugar QCT_SP

    SugarCRM各版本功能说明

    SugarCRM ver 说明 SugarCRM Community Edition SugarCRM Professinal Edition SugarCRM Enterprise Edition

    Soft Sugar

    Soft Sugar

    SugarCRM6.2.0的中文包

    最新的sugarCRM6.2.0的汉化包!Delphi语言汉化后(更新算法,不过,据说应该用php汉化更简单的,可惜我不会的哈!),手动修改了少量,均通过测试,没问题! ★★★★使用方法: 第1步:记事本打开.\htdocs\...

    SugarCRM傻瓜教程

    sugarcrm原版教程,国内现在sugarcrm的教程较少,网页上很多翻译粗看比较难理解,如果要系统了解,这个是很不错的教程。

    SugarCRM企业级CRMv6.5.10

    Sugar是一个价格合理并且容易使用的企业级CRM,Sugar的设计初衷是为了帮助您的企业于千载客户沟通,共享销售信息,促成交易以及保持客户开心。 数千家企业每天使用Sugar去管理销售,市场和客户支持。 作为一个开源,...

    Android数据库框架——Sugar

    Android数据库框架——Sugar

    sugar操作指引

    sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引sugar操作指引

    SugarCRM 6.5.9

    My Portal模块允许管理员和用户区连接其他的网站和web应用程序到Sugar User Interface,让sugar成为它的用户的一个一个统一的接口。 sugar时间建立在包括php开发环境,Mysql关系数据库,apache或者IIS web服务器和...

    Sugarcrm开发指南

    Sugarcrm开发指南英文版共享 很好的crm应用

    sugar.jar jar包.rar

    sugar Android数据库框架jar包,欢迎同学们下载,sugar 框架用起来方便很多

    SugarCrm6.3.1中文汉化包

    最新SugarCrm6.3.1完美中文汉化包,附有安装教程(word2007,docx格式)

    SugarCRM

    packt_用开源项目快速建站实践丛书之SugarCRM

    前端项目-sugar.zip

    前端项目-sugar,用于处理本机对象的JavaScript库。

    SugarCRM6.5中文语言包

    SugarCRM-LangPack-zh_cn-6.5.17 SugarCRM6.5中文语言包

Global site tag (gtag.js) - Google Analytics