`

用Sigar取得网卡流量数据

阅读更多

在网络应用中,经常要对网卡的流量进行统计分析。

和网卡相关的统计数据主要有:网卡信息(ip地址、子网掩码、mac地址等)、网卡的吞吐量、流量等等。

当然了使用sigar也可以获得这些数据。

下面通过例子说明:

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.}  

 

分享到:
评论

相关推荐

    Sigar使用之:取得系统内存的数据

    程序用到的jar 博文链接:https://wangrui.iteye.com/blog/153002

    java使用sigar检测CPU占用率

    Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar 依赖sigar-amd64-winnt.dll或sigar-x86-...

    sigar获取服务器负载信息需要的sigar等相关的文件

    包括:libsigar-aarch64-linux.so、libsigar-amd64-linux.so、libsigar-x86-linux.so、sigar-amd64-winnt.dll、sigar-x86-winnt.dll、sigar-x86-winnt.lib

    sigar兼容linux和windows

    sigar兼容linux和windows,本人亲自测试

    Sigar 使用详解

    一、 Sigar详细介绍 Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API,核心由C语言实现的。 Sigar资料地址:...

    hyperic-sigar-1.6.4

    使用Sigar,你完全可以模仿出cpuinfo,meminfo,top,free,ifconfig,ipconfig,netstat,route,df,du,ps,ls等多种unix平台和windows平台的指令. 2.跨平台,支持多数平台 支持的平台包括:windows系列(32系列,IA64系列,AMD64...

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

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

    sigar例子和sigar架包

    把sigar压缩文件覆盖到系统文件目录下,能够成功运行例子,说明安装成功。

    sigar读取服务器CPU内存数据.zip

    java利用sigar模块实现监控服务器运行状态,资料包含win和linux dll动态库和案例代码。

    sigar-sigar-1.6.4.tar.gz

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

    sigar.jar 获取cpu,内存,磁盘等信息

    通过Hyperic-hq产品的基础包sigar.jar来实现服务器状态数据的获取。Sigar.jar包是通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar依赖sigar-amd64-winnt.dll或sigar-x86-winnt.dll,...

    sigar资源包及工具列

    Linux, Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX.Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。...

    sigar工具包

    sigar

    Sigar_1.6.4 API ( CHM格式 )

    Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar 依赖sigar-amd64-winnt.dll或sigar-x86-...

    sigar_mirror(系统信息收集API_Sigar)

    sigar_mirror(系统信息收集API_Sigar)

    树莓派上使用sigar必需的本地库linuxsigar-arm-linux.so

    在树莓派和基于arm的lunux系统中使用sigar库时必需的本地库文件。官方并未提供此文件。

    sigar.jar+dll

    Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。 注意:Sigar为不同平台提供了不同的库文件.典型的: windows平台:...

    sigar 获取OS系统信息

    sigar 取cpu,进程,内存,硬盘信息的实例代码

Global site tag (gtag.js) - Google Analytics