`
yaerfeng1989
  • 浏览: 234121 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sigar(System Information Gatherer And Reporter)简介

    博客分类:
  • java
 
阅读更多

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> 
 

 

分享到:
评论

相关推荐

    sigar-sigar-1.6.4.tar.gz

    开源工具包 SIGAR System Information Gatherer And Reporter 即 系统信息收集和报告 官方站点: http: support hyperic com display SIGAR Home;jsessionid A9705887A07D20BBAC9A96500BC60822 SIGAR 官方站点 ...

    获取系统信息(cpu,内存,硬盘等。。。)的第三方jar包(sigar.jar)

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统监控库,由Hyperic公司开发,现已成为开源项目。这个第三方jar包`sigar.jar`提供了丰富的API,允许开发者便捷地获取各种操作系统级别的...

    使用sigar监控web服务器软硬件信息

    Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API。 Sigar API 提供一个方便的接口来收集系统信息,如: ◆系统内存,页面交换,cpu,平均负载,运行时间,...

    Sigar 使用详解

    Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API,核心由C语言实现的。 Sigar资料地址:https://support.hyperic.com/display/SIGAR/Home Sigar提供了一...

    hyperic-sigar-1.6.3

    sigar全名是System Information Gatherer And Reporter,中文名是系统信息收集和报表工具。

    hyperic-sigar-1.6.4.zip

    sigar全名是System Information Gatherer And Reporter,Sigar是Hyperic-hq产品的基础包,是Hyperic HQ主要的数据收集组件。它用来从许多平台收集系统和处理信息。这些平台包括:Linux, Windows, Solaris, AIX, HP-UX...

    hyperic-sigar-1.6.4.zip资源包(包含dll,jar,lib等文件)

    Sigar(System Information Gatherer AndReporter),是一个开源的工具,提供了跨平台的系统信息收集的API,核心由C语言实现的。 可以收集的信息包括: 1, CPU信息,包括基本信息(vendor、model、mhz、cacheSize...

    sigar dll for win and linux.rar

    Sigar(System Information Gatherer and Reporter)是一款跨平台的系统信息收集库,它提供了一种简单的方法来获取操作系统级别的信息,如CPU、内存、网络、磁盘和其他资源的状态。这个"sigar dll for win and linux...

    Sigar1.6.2 jar包

    System Information Gatherer And Reporter,系统信息收集和报表工具。 一个开源的工具,提供了跨平台的系统信息收集的API,通过它可以获取包括: 1.操作系统的信息,包括:dataModel、cpuEndian、name、version、...

    sigar-32位

    标题中的“sigar-32位”指的是Sigar(System Information Gatherer and Reporter)的32位版本。Sigar是一个跨平台的系统信息收集库,它允许开发者通过一个统一的接口来获取各种操作系统上的系统信息,如进程列表、...

    Sigar文档+配置

    Sigar(System Information Gatherer and Reporter)是由Hyperic公司开发的一款强大的跨平台系统监控工具,它提供了丰富的API,能够方便地获取操作系统级别的信息,包括但不限于CPU使用率、内存状态、网络流量、磁盘...

    sigar实例maven项目

    Sigar(System Information Gatherer and Reporter)是一个跨平台的库,提供了丰富的接口来获取操作系统级别的信息,如CPU使用率、内存状态、网络统计等。这个项目旨在帮助开发者集成Sigar到他们的Spring Boot应用...

    hyperic-sigar-1.6.4jar包.zip

    Hyperic Sigar(System Information Gatherer and Reporter)是一款跨平台的系统信息收集工具,它提供了一种统一的方式来获取多种操作系统平台上的系统状态信息,包括CPU使用率、内存使用、网络状态、磁盘I/O等。...

    sigar的jar包与dll文件

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集工具,它提供了一种简单的方式来获取操作系统级别的信息,包括但不限于CPU使用率、内存使用情况、网络接口统计、进程状态等。...

    sigar兼容linux和windows

    Sigar(System Information Gatherer and Reporter)是一款跨平台的系统信息收集库,它为开发者提供了一种简单的方式来获取操作系统及硬件的各种信息。Sigar库由Hypertable项目开发并维护,现在已成为Apache软件基金...

    sigar-1.6.4包含X86_X64的dll和so

    标题中的“sigar-1.6.4包含X86_X64的dll和so”指的是一款名为SIGAR(System Information Gatherer and Reporter)的工具包,版本为1.6.4,它包含了适用于X86和X64架构的动态链接库(dll)和共享对象文件(so)。...

    sigar.jar、sigar-amd64-winnt.dll、sigar-x86-winnt.dll

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统监控工具,由Hypertable组织开发,用于收集和报告操作系统级别的信息,如CPU使用率、内存状态、网络活动等。在Java环境中,通过sigar.jar...

    借助Sigar API获取磁盘信息

    Sigar(System Information Gatherer and Reporter)是一款跨平台的系统信息收集库,它提供了一种简单的方法来获取操作系统级别的信息,包括CPU、内存、磁盘、网络等。在这个项目中,我们将探讨如何利用Sigar API...

    sigar读取系统信息.rar

    Sigar(System Information Gatherer and Reporter)是一款跨平台的开源库,它允许程序开发者轻松地获取操作系统和网络设备的各种信息,如CPU使用率、内存使用情况、网络接口统计、进程列表等。在"sigar读取系统信息...

Global site tag (gtag.js) - Google Analytics