`

用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

    Sigar文档+配置

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

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

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集工具,它提供了一种简单的方法来获取操作系统的关键信息,如CPU使用率、内存使用情况、网络流量、磁盘I/O等。在Java中使用Sigar库...

    sigar-1.6.4 包+Sigar_1.6.4.CHM

    4. **数据结构和枚举**:Sigar API定义了一系列的数据结构(如`sigar_proc_list_t`、`sigar_mem_t`等)和枚举类型(如`SIGAR_PT_PROCESS`、`SIGAR_NET_AF_INET`等),用于封装和传递系统信息。 5. **错误处理**:...

    sigar兼容linux和windows

    在Java环境中,Sigar提供了Java绑定,使得开发者可以轻松地在Java应用程序中使用这些功能。通过引入sigar.jar库,并调用其提供的API,可以便捷地获取到系统级别的信息。例如,以下是一个简单的Java代码示例,用于...

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

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

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

    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获取系统信息,内存,磁盘,jvm虚拟机等

    本项目主要关注如何使用Sigar库在Java环境下获取系统信息,特别是内存、磁盘和JVM虚拟机的相关数据。 一、获取系统内存信息 在Java中使用Sigar库获取系统内存信息,主要涉及以下几个方面: 1. **总内存**:通过`...

    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

    基于java通过第三方jar包sigar的支持,完成对服务器系统的参数监控,包括CPU、内存、硬盘以及网络流量的实时监控.zip

    总之,通过使用Sigar库,Java开发者能够轻松构建一个全面的服务器监控系统,对CPU、内存、硬盘和网络流量进行实时监控,从而确保服务的高效稳定运行。这对于任何依赖于服务器性能的应用来说,都是至关重要的。

    sigar使用教程

    在Java环境中,主要使用sigar.jar,这是一个封装了底层C实现的库,通过JNI(Java Native Interface)调用操作系统原生API来获取数据。 在Windows系统下,sigar.jar依赖于相应的动态链接库,例如sigar-amd64-winnt....

    sigar的jar包及dll文件

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统度量工具,它允许开发者获取各种操作系统级别的信息,包括但不限于CPU使用率、内存状态、网络连接、文件系统统计等。这个压缩包包含了运行...

    hyperic-sigar-1.6.4jar包.zip

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

    sigar java 监控 本地

    标题中的“sigar java 监控 本地”指的是使用开源库SIGAR(System Information Gatherer and Reporter)来监控Java应用程序在本地操作系统上的运行状态,包括CPU使用率、内存占用、磁盘I/O等关键指标。SIGAR是一个跨...

    sigar.jar+dll

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

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

    `sigar`库提供了许多功能,例如获取CPU使用率、内存使用情况、进程信息、网络接口统计等。例如,你可以用它来获取系统CPU的平均负载: ```c sigar_cpu_list_t *cpulist; if (sigar_cpu_list_get(sigar, &cpulist) =...

Global site tag (gtag.js) - Google Analytics