Hyperic-Sigar学习

大家好,我是Sigar。也许好多人还不认识我。下面就介绍一下我自己,好让大家对我有一个大致的了解。


我的全名是System Information Gatherer And Reporter,中文名是系统信息收集和报表工具。我是一个开源的工具,提供了跨平台的系统信息收集的API,我可以收集的信息包括:

1.操作系统的信息,包括:dataModel、cpuEndian、name、version、arch、machine、description、patchLevel、vendor、vendorVersion、vendorName、vendorCodeName

2.CPU信息,包括:基本信息(vendor、model、mhz、cacheSize)和统计信息(user、sys、idle、nice、wait)

3.内存信息,物理内存和交换内存的总数、使用数、剩余数;RAM的大小

4.进程信息,包括每个进程的内存、CPU占用数、状态、参数、句柄等。

5.文件系统信息,包括名称、容量、剩余数、使用数、分区类型等

6.网络接口信息,包括基本信息和统计信息。

7.网络路由和链接表信息。

哈哈,够全了吧。另外我的性格比较外向,可以和绝大多数操作系统和大多数版本打交道。
当然了我的底层接口是用C语言写的。

好了,如果大家还想了较更多的信息可以去我的网站http://sigar.hyperic.com/


相关链接:

Sigar获取CPU的基本信息

Sigar获取内存的信息

Sigar获取磁盘信息

Sigar获取网卡流量信息

Sigar获取系统信息


sigar所需要的文件 下载地址



Sigar还可以结合amcharts插件在页面展现服务器相关信息,详细点击amcharts _ 2.7.6 实现动态数据展现





使用sigar其实很简单,首先要在项目中添加sigar.jar以及对应系统的

库文件(xp为例,添加pdh.dll、sigar-x86-winnt.dll、sigar-x86-winnt.lib)

 

sigar包以及库文件下载地址:http://download.csdn.net/source/2344017

 

//接口定义

public interface LoadInfo { 
 //获取cpu使用率
 public String getCpuInfo();
 // 获取系统内存使用量
 public String getRamInfo();
 //获取网络使用流量
 public String getNetworkInfo();
 //获取操作系统信息
 public String getSystemInfo();
 // 获取运行环境信息
 public String getRunLoadInfo();
 //获取虚拟机剩余内存
 public String getVmRamInfo();
}

 

 

//以下是接口的实现

import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.Properties;

import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.NetInterfaceStat;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.SigarNotImplementedException;

public class LoadInfoImpl implements LoadInfo {

 /**
  * 创建sigar对象用来获取系统信息
  */
 private Sigar sigar = new Sigar();;
 private CpuPerc cpuCerc;
 private Properties props = System.getProperties();
 private Mem mem;

 public String getCpuInfo() {
  try {
   /**
    * 获取cpu信息
    */
   cpuCerc = sigar.getCpuPerc();
   /**
    * 保留两位小数
    */
   DecimalFormat df = new DecimalFormat("#.00");
   /**
    * 如果cpu使用率为零时,不保留小数位
    */
   if (cpuCerc.getCombined() == 0) {
    return 0 + "%";
   } else {
    return df.format(cpuCerc.getCombined() * 100) + "%";
   }
  } catch (SigarException e) {
   e.printStackTrace();
  }
  return String.valueOf(cpuCerc.getCombined());
 }
 
 public String getRamInfo() {
  try {
   /**
    * 获取系统内存信息
    */
   mem = sigar.getMem();
  } catch (SigarException e) {
   e.printStackTrace();
  }
  /**
   * 返回系统内存使用量
   */
  return mem.getUsed() / 1024 / 1024 + "M";
 }

 public String getNetworkInfo() {
  String ifNames[]=null;
  String txbyte=null;
  try {
   ifNames = sigar.getNetInterfaceList();
  } catch (SigarException e2) {
   e2.printStackTrace();
  }
   String name = ifNames[0];
   try {
    /**
     * 获取网络流量
     */
    NetInterfaceStat ifstat = sigar.getNetInterfaceStat(name);
    /**
     * 获取发送的总字节数
     */
    txbyte=ifstat.getTxBytes()+"byte";
   } catch (SigarNotImplementedException e) {
   } catch (SigarException e) {
    System.out.println(e.getMessage());
   }
  return txbyte;
 }

 public String getSystemInfo() {
  /**
   * 获取操作系统名称
   */
  return props.getProperty("os.name");
 }

 public String getRunLoadInfo() {
  /**
   * 获取运行环境信息
   */
  String runload=props.getProperty("java.vm.name");
  return runload;
 }

 public String getVmRamInfo() {
  /**
   * 获取虚拟机剩余内存
   */
  return Runtime.getRuntime().freeMemory() / (1024 * 1024) + "M";
 }
}





其他帖子介绍:


Hyperic-Sigar是一个收集系统各项底层信息的工具集.他有如下特点:
1. 收集信息全面
收集CPU,MEM,NETWORK,PROCESS,IOSTAT等
使用Sigar,你完全可以模仿出cpuinfo,meminfo,top,free,ifconfig,ipconfig,netstat,route,df,du,ps,ls等多种unix平台和windows平台的指令.
2.跨平台,支持多数平台
支持的平台包括:windows系列(32系列,IA64系列,AMD64系列),linux系列,freeBsd系列,HPUnix系列,Sun solaris/Sparc/Sparc64系列,macOs系列,AIX系列等

3.提供的API接口全面
sigar本身由C语言开发而成,提供了丰富的API接口,包括:JAVA,.NET,PERL,PHP,PYTHON,RUBY.Sigar.jar包是通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar依赖sigar-amd64-winnt.dll或sigar-x86-winnt.dll,linux操作系统下则依赖libsigar-amd64-linux.so或libsigar-x86-linux.so……而Sigar.jar还依赖于jug-asl-2.0.0.jar、log4j-1.2.14.jar、Junit.jar,

Hyperic-hq官方网站:http://www.hyperic.com

Sigar.jar下载地址:http://sigar.hyperic.com



 

Sigar获取CPU的基本信息、使用率

分类: Sigar   366人阅读  评论(0)  收藏  举报
我们经常有这样的需求,想得到系统CPU的基本信息、使用率等等。使用Sigar可以很好的完成这一需求。 

通过Sigar我们可以获得CPU的基本信息有:vendor、model、mhz、cacheSize;CPU的统计信息有:user进程占用的百分比、sys进程占用的百分比、nice进程占用的百分比、idle进程占用的百分比、wait进程占用的百分比。

下面通过例子说明用法:

[java]  view plain copy
  1. package lab.sigar;    
  2.     
  3. import org.hyperic.sigar.Cpu;    
  4. import org.hyperic.sigar.CpuInfo;    
  5. import org.hyperic.sigar.CpuPerc;    
  6. import org.hyperic.sigar.Sigar;    
  7. import org.hyperic.sigar.SigarException;    
  8.     
  9. import com.thoughtworks.xstream.XStream;    
  10.     
  11. /**  
  12.  * Cpu数据  
  13.  *   
  14.  * 使用Sigar获得CPU的基本信息、使用百分比、使用时间  
  15.  *   
  16.  */    
  17. public class CpuData {    
  18.     private CpuInfo info;    
  19.     private CpuPerc perc;    
  20.     private Cpu timer;    
  21.     
  22.     public CpuData() {    
  23.     }    
  24.     
  25.     public void populate(Sigar sigar) throws SigarException {    
  26.         info = sigar.getCpuInfoList()[0];    
  27.         perc = sigar.getCpuPerc();    
  28.         timer = sigar.getCpu();    
  29.     }    
  30.     
  31.     public static CpuData gather(Sigar sigar) throws SigarException {    
  32.         CpuData data = new CpuData();    
  33.         data.populate(sigar);    
  34.         return data;    
  35.     }    
  36.     
  37.     public static void main(String[] args) throws Exception {    
  38.         Sigar sigar = new Sigar();    
  39.         CpuData cpuData = CpuData.gather(sigar);    
  40.         XStream xstream = new XStream();    
  41.         xstream.alias("CpuData", CpuData.class);    
  42.         System.out.println(xstream.toXML(cpuData));    
  43.     }    
  44.     
  45. }    

输出:

[html]  view plain copy
  1. <CpuData>    
  2.   <info>    
  3.     <vendor>Intel</vendor>    
  4.     <model>Pentium M</model>    
  5.     <mhz>1862</mhz>    
  6.     <cacheSize>-1</cacheSize>    
  7.   </info>    
  8.   <perc>    
  9.     <user>0.12574850299401197</user>    
  10.     <sys>0.031936127744510975</sys>    
  11.     <nice>0.0</nice>    
  12.     <idle>0.8423153692614771</idle>    
  13.     <wait>0.0</wait>    
  14.   </perc>    
  15.   <timer>    
  16.     <user>932250</user>    
  17.     <sys>520375</sys>    
  18.     <nice>0</nice>    
  19.     <idle>6366031</idle>    
  20.     <wait>0</wait>    
  21.     <total>7818656</total>    
  22.   </timer>    
  23. </CpuData>    



Sigar获取内存的信息

分类: Sigar   192人阅读  评论(0)  收藏  举报
在做系统监控的时候,为了分析系统的性能,我们不仅仅要取得CPU的使用数据,还要知道内存的占用情况。使用sigar也可以轻松的完成跨平台的内存监控数据。 

内存的主要指标有:物理内存的大小、使用数、剩余数;交换内存的大小、使用数、剩余数;RAM的大小等等。 

下面通过例子说明:


[java]  view plain copy
  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. }    

输出:

[html]  view plain copy
  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   227人阅读  评论(0)  收藏  举报
在网络应用中,从最初为用户提供文本数据,发展到现在为用户提供视频数据。网络的内容更丰富了,当然资源所占用的服务器硬盘空间也更大了。经常会出现磁盘满,无法写入数据的情况。为此我们就需要对磁盘进行监控,也就是对文件系统进行监控。

文件系统的指标有:名称、分区类型等基本信息;读写次数等统计信息。

当然了使用sigar也可以获得分件系统的这些数据。

下面通过例子说明:
[java]  view plain copy
  1. package lab.sigar;    
  2.     
  3. import java.util.ArrayList;    
  4. import java.util.List;    
  5.     
  6. import org.hyperic.sigar.FileSystem;    
  7. import org.hyperic.sigar.FileSystemUsage;    
  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.  * @author wangrui  
  19.  *   
  20.  */    
  21. public class FileSystemData {    
  22.     
  23.     private FileSystem config;    
  24.     private FileSystemUsage stat;    
  25.     
  26.     public FileSystemData() {}    
  27.     
  28.     public void populate(Sigar sigar, FileSystem fs)    
  29.         throws SigarException {    
  30.     
  31.         config = fs;    
  32.     
  33.         try {    
  34.             stat = sigar.getFileSystemUsage(fs.getDirName());    
  35.         } catch (SigarException e) {    
  36.                 
  37.         }    
  38.     }    
  39.     
  40.     public static FileSystemData gather(Sigar sigar, FileSystem fs)    
  41.         throws SigarException {    
  42.         
  43.         FileSystemData data = new FileSystemData();    
  44.         data.populate(sigar, fs);    
  45.         return data;    
  46.     }    
  47.     
  48.     public FileSystem getConfig() {    
  49.         return config;    
  50.     }    
  51.     
  52.     public FileSystemUsage getStat() {    
  53.         return stat;    
  54.     }    
  55.         
  56.     public static void main(String[] args) throws Exception {    
  57.         Sigar sigar = new Sigar();    
  58.         FileSystem[] fsArr = sigar.getFileSystemList();    
  59.         List fsList = new ArrayList();    
  60.         for ( FileSystem fs:fsArr ) {    
  61.             FileSystemData fsData = FileSystemData.gather(sigar, fs);    
  62.             fsList.add(fsData);    
  63.         }    
  64.         XStream xstream = new XStream();    
  65.         xstream.alias("FileSystemDatas", List.class);    
  66.         xstream.alias("FileSystemData", FileSystemData.class);    
  67.         System.out.println(xstream.toXML(fsList));    
  68.     }    
  69. }    
[html]  view plain copy
  1. <FileSystemDatas>  
  2.   <FileSystemData>  
  3.     <config>  
  4.       <dirName>C:\</dirName>  
  5.       <devName>C:\</devName>  
  6.       <typeName>local</typeName>  
  7.       <sysTypeName>FAT32</sysTypeName>  
  8.       <type>2</type>  
  9.       <flags>0</flags>  
  10.     </config>  
  11.     <stat>  
  12.       <total>38418048</total>  
  13.       <free>27689856</free>  
  14.       <used>10728192</used>  
  15.       <avail>27689856</avail>  
  16.       <files>-1</files>  
  17.       <freeFiles>-1</freeFiles>  
  18.       <diskReads>17762</diskReads>  
  19.       <diskWrites>50748</diskWrites>  
  20.       <diskReadBytes>317399040</diskReadBytes>  
  21.       <diskWriteBytes>1591675392</diskWriteBytes>  
  22.       <diskQueue>0</diskQueue>  
  23.       <diskServiceTime>-1.0</diskServiceTime>  
  24.       <usePercent>0.28</usePercent>  
  25.     </stat>  
  26.   </FileSystemData>  
  27.   <FileSystemData>  
  28.     <config>  
  29.       <dirName>D:\</dirName>  
  30.       <devName>D:\</devName>  
  31.       <typeName>local</typeName>  
  32.       <sysTypeName>FAT32</sysTypeName>  
  33.       <type>2</type>  
  34.       <flags>0</flags>  
  35.     </config>  
  36.     <stat>  
  37.       <total>66496576</total>  
  38.       <free>49064928</free>  
  39.       <used>17431648</used>  
  40.       <avail>49064928</avail>  
  41.       <files>-1</files>  
  42.       <freeFiles>-1</freeFiles>  
  43.       <diskReads>67354</diskReads>  
  44.       <diskWrites>19482</diskWrites>  
  45.       <diskReadBytes>817295872</diskReadBytes>  
  46.       <diskWriteBytes>230753792</diskWriteBytes>  
  47.       <diskQueue>0</diskQueue>  
  48.       <diskServiceTime>-1.0</diskServiceTime>  
  49.       <usePercent>0.27</usePercent>  
  50.     </stat>  
  51.   </FileSystemData>  
  52.   <FileSystemData>  
  53.     <config>  
  54.       <dirName>E:\</dirName>  
  55.       <devName>E:\</devName>  
  56.       <typeName>local</typeName>  
  57.       <sysTypeName>FAT32</sysTypeName>  
  58.       <type>2</type>  
  59.       <flags>0</flags>  
  60.     </config>  
  61.     <stat>  
  62.       <total>69111712</total>  
  63.       <free>49214624</free>  
  64.       <used>19897088</used>  
  65.       <avail>49214624</avail>  
  66.       <files>-1</files>  
  67.       <freeFiles>-1</freeFiles>  
  68.       <diskReads>41340</diskReads>  
  69.       <diskWrites>8119</diskWrites>  
  70.       <diskReadBytes>222592512</diskReadBytes>  
  71.       <diskWriteBytes>91557888</diskWriteBytes>  
  72.       <diskQueue>0</diskQueue>  
  73.       <diskServiceTime>-1.0</diskServiceTime>  
  74.       <usePercent>0.29</usePercent>  
  75.     </stat>  
  76.   </FileSystemData>  
  77.   <FileSystemData>  
  78.     <config>  
  79.       <dirName>F:\</dirName>  
  80.       <devName>F:\</devName>  
  81.       <typeName>local</typeName>  
  82.       <sysTypeName>FAT32</sysTypeName>  
  83.       <type>2</type>  
  84.       <flags>0</flags>  
  85.     </config>  
  86.     <stat>  
  87.       <total>70109376</total>  
  88.       <free>46776096</free>  
  89.       <used>23333280</used>  
  90.       <avail>46776096</avail>  
  91.       <files>-1</files>  
  92.       <freeFiles>-1</freeFiles>  
  93.       <diskReads>16</diskReads>  
  94.       <diskWrites>39</diskWrites>  
  95.       <diskReadBytes>151552</diskReadBytes>  
  96.       <diskWriteBytes>830976</diskWriteBytes>  
  97.       <diskQueue>0</diskQueue>  
  98.       <diskServiceTime>-1.0</diskServiceTime>  
  99.       <usePercent>0.34</usePercent>  
  100.     </stat>  
  101.   </FileSystemData>  
  102.   <FileSystemData>  
  103.     <config>  
  104.       <dirName>H:\</dirName>  
  105.       <devName>H:\</devName>  
  106.       <typeName>cdrom</typeName>  
  107.       <sysTypeName>cdrom</sysTypeName>  
  108.       <type>5</type>  
  109.       <flags>0</flags>  
  110.     </config>  
  111.   </FileSystemData>  
  112. </FileSystemDatas>  



Sigar获取网卡流量信息

分类: Sigar   339人阅读  评论(0)  收藏  举报
在网络应用中,经常要对网卡的流量进行统计分析。

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

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

下面通过例子说明:
[java]  view plain copy
  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. }    


输出:

[html]  view plain copy
  1. <NetInterfaceDatas>  
  2.   <NetInterfaceData>  
  3.     <config>  
  4.       <name>eth0</name>  
  5.       <hwaddr>00:FF:AE:0F:32:92</hwaddr>  
  6.       <type>Ethernet</type>  
  7.       <description>TAP-Win32 Adapter V9 #2 - ????ü??????ò?????</description>  
  8.       <address>0.0.0.0</address>  
  9.       <destination>0.0.0.0</destination>  
  10.       <broadcast>255.255.255.255</broadcast>  
  11.       <netmask>0.0.0.0</netmask>  
  12.       <flags>2050</flags>  
  13.       <mtu>1500</mtu>  
  14.       <metric>0</metric>  
  15.     </config>  
  16.     <stat>  
  17.       <rxBytes>0</rxBytes>  
  18.       <rxPackets>0</rxPackets>  
  19.       <rxErrors>0</rxErrors>  
  20.       <rxDropped>0</rxDropped>  
  21.       <rxOverruns>-1</rxOverruns>  
  22.       <rxFrame>-1</rxFrame>  
  23.       <txBytes>0</txBytes>  
  24.       <txPackets>0</txPackets>  
  25.       <txErrors>0</txErrors>  
  26.       <txDropped>0</txDropped>  
  27.       <txOverruns>-1</txOverruns>  
  28.       <txCollisions>-1</txCollisions>  
  29.       <txCarrier>-1</txCarrier>  
  30.       <speed>10000000</speed>  
  31.     </stat>  
  32.     <rxbps>0</rxbps>  
  33.     <txbps>0</txbps>  
  34.   </NetInterfaceData>  
  35.   <NetInterfaceData>  
  36.     <config>  
  37.       <name>eth1</name>  
  38.       <hwaddr>00:FF:C8:0A:AE:37</hwaddr>  
  39.       <type>Ethernet</type>  
  40.       <description>eetrust VAdapter - ????ü??????ò?????</description>  
  41.       <address>0.0.0.0</address>  
  42.       <destination>0.0.0.0</destination>  
  43.       <broadcast>255.255.255.255</broadcast>  
  44.       <netmask>0.0.0.0</netmask>  
  45.       <flags>2050</flags>  
  46.       <mtu>1500</mtu>  
  47.       <metric>0</metric>  
  48.     </config>  
  49.     <stat>  
  50.       <rxBytes>0</rxBytes>  
  51.       <rxPackets>0</rxPackets>  
  52.       <rxErrors>0</rxErrors>  
  53.       <rxDropped>0</rxDropped>  
  54.       <rxOverruns>-1</rxOverruns>  
  55.       <rxFrame>-1</rxFrame>  
  56.       <txBytes>0</txBytes>  
  57.       <txPackets>0</txPackets>  
  58.       <txErrors>0</txErrors>  
  59.       <txDropped>0</txDropped>  
  60.       <txOverruns>-1</txOverruns>  
  61.       <txCollisions>-1</txCollisions>  
  62.       <txCarrier>-1</txCarrier>  
  63.       <speed>10000000</speed>  
  64.     </stat>  
  65.     <rxbps>0</rxbps>  
  66.     <txbps>0</txbps>  
  67.   </NetInterfaceData>  
  68.   <NetInterfaceData>  
  69.     <config>  
  70.       <name>eth2</name>  
  71.       <hwaddr>00:22:68:5D:C8:52</hwaddr>  
  72.       <type>Ethernet</type>  
  73.       <description>Realtek PCIe GBE Family Controller - ????ü??????ò?????</description>  
  74.       <address>10.3.43.63</address>  
  75.       <destination>0.0.0.0</destination>  
  76.       <broadcast>10.3.43.255</broadcast>  
  77.       <netmask>255.255.255.0</netmask>  
  78.       <flags>2115</flags>  
  79.       <mtu>1500</mtu>  
  80.       <metric>0</metric>  
  81.     </config>  
  82.     <stat>  
  83.       <rxBytes>177337765</rxBytes>  
  84.       <rxPackets>295449</rxPackets>  
  85.       <rxErrors>0</rxErrors>  
  86.       <rxDropped>0</rxDropped>  
  87.       <rxOverruns>-1</rxOverruns>  
  88.       <rxFrame>-1</rxFrame>  
  89.       <txBytes>27724399</txBytes>  
  90.       <txPackets>203267</txPackets>  
  91.       <txErrors>0</txErrors>  
  92.       <txDropped>0</txDropped>  
  93.       <txOverruns>-1</txOverruns>  
  94.       <txCollisions>-1</txCollisions>  
  95.       <txCarrier>-1</txCarrier>  
  96.       <speed>100000000</speed>  
  97.     </stat>  
  98.     <rxbps>2000</rxbps>  
  99.     <txbps>2000</txbps>  
  100.   </NetInterfaceData>  
  101.   <NetInterfaceData>  
  102.     <config>  
  103.       <name>lo0</name>  
  104.       <hwaddr>00:00:00:00:00:00</hwaddr>  
  105.       <type>Local Loopback</type>  
  106.       <description>MS TCP Loopback interface</description>  
  107.       <address>127.0.0.1</address>  
  108.       <destination>0.0.0.0</destination>  
  109.       <broadcast>0.0.0.0</broadcast>  
  110.       <netmask>255.0.0.0</netmask>  
  111.       <flags>73</flags>  
  112.       <mtu>1520</mtu>  
  113.       <metric>0</metric>  
  114.     </config>  
  115.     <stat>  
  116.       <rxBytes>36535999</rxBytes>  
  117.       <rxPackets>350095</rxPackets>  
  118.       <rxErrors>0</rxErrors>  
  119.       <rxDropped>0</rxDropped>  
  120.       <rxOverruns>-1</rxOverruns>  
  121.       <rxFrame>-1</rxFrame>  
  122.       <txBytes>36535999</txBytes>  
  123.       <txPackets>350031</txPackets>  
  124.       <txErrors>0</txErrors>  
  125.       <txDropped>0</txDropped>  
  126.       <txOverruns>-1</txOverruns>  
  127.       <txCollisions>-1</txCollisions>  
  128.       <txCarrier>-1</txCarrier>  
  129.       <speed>10000000</speed>  
  130.     </stat>  
  131.     <rxbps>1000</rxbps>  
  132.     <txbps>1000</txbps>  
  133.   </NetInterfaceData>  
  134. </NetInterfaceDatas>  
下载地址: 见内容底部


 

Sigar获取系统信息

分类: Sigar   248人阅读  评论(0)  收藏  举报
直接看代码:
[java]  view plain copy
  1. import java.io.IOException;    
  2. import java.io.PrintWriter;    
  3.     
  4. import javax.servlet.ServletException;    
  5. import javax.servlet.http.HttpServlet;    
  6. import javax.servlet.http.HttpServletRequest;    
  7. import javax.servlet.http.HttpServletResponse;    
  8.     
  9. import org.hyperic.sigar.Cpu;    
  10. import org.hyperic.sigar.CpuPerc;    
  11. import org.hyperic.sigar.Mem;    
  12. import org.hyperic.sigar.Sigar;    
  13. import org.hyperic.sigar.Swap;    
  14.     
  15. public class SigarServlet extends HttpServlet {    
  16.     
  17.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    
  18.             
  19.         try {    
  20.             Sigar sigar = new Sigar();    
  21.             CpuPerc perc = sigar.getCpuPerc();    
  22.             Mem mem = sigar.getMem();    
  23.             Swap swap = sigar.getSwap();    
  24.                 
  25.             int cpuUsage = (int)perc.getCombined();    
  26.             int memFree = (int)(mem.getFree()/(1024l*1024l));    
  27.             int memTotal = (int)(mem.getTotal()/(1024l*1024l));    
  28.                 
  29.             int pageFileFree = (int)(swap.getPageOut()/(1024l*1024l));    
  30.             int pageFileTotal = (int)(swap.getPageIn()/(1024l*1024l));    
  31.             int swapFree = (int)(swap.getFree()/(1024l*1024l));    
  32.             int swapTotal = (int)(swap.getTotal()/(1024l*1024l));    
  33.                 
  34.                 
  35.             response.setContentType("text/html;charset=GB2312");    
  36.             PrintWriter out = response.getWriter();    
  37.     
  38.             Cpu cpu = sigar.getCpu();    
  39.                 
  40.             out.println("CPU Usage:"+perc.getCombined());    
  41.             out.println("<br/>");    
  42.             out.println("Memory Free:"+memFree);    
  43.             out.println("<br/>");    
  44.             out.println("Memory Total:"+memTotal);    
  45.             out.println("<br/>");    
  46.             out.println("Swap Free:"+swapFree);    
  47.             out.println("<br/>");    
  48.             out.println("Swap Total:"+swapTotal);    
  49.             out.println("<br/>");    
  50.             out.println("Page Free:"+pageFileFree);    
  51.             out.println("<br/>");    
  52.             out.println("Page Total:"+pageFileTotal);    
  53.     
  54.             out.close();    
  55.     
  56.         } catch (Exception e) {    
  57.                 
  58.         }    
  59.     }    
  60.     
  61. }    
配置:
[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">    
  3.     <display-name>sigar</display-name>    
  4.     <servlet>    
  5.        <servlet-name>sigarServlet</servlet-name>    
  6.        <servlet-class>sigar.SigarServlet</servlet-class>    
  7.     </servlet>    
  8.         
  9.     <servlet-mapping>    
  10.         <servlet-name>sigarServlet</servlet-name>    
  11.         <url-pattern>/sigar</url-pattern>    
  12.     </servlet-mapping>    
  13.         
  14.     <welcome-file-list>    
  15.         <welcome-file>index.html</welcome-file>    
  16.         <welcome-file>index.htm</welcome-file>    
  17.         <welcome-file>index.jsp</welcome-file>    
  18.         <welcome-file>default.html</welcome-file>    
  19.         <welcome-file>default.htm</welcome-file>    
  20.         <welcome-file>default.jsp</welcome-file>    
  21.     </welcome-file-list>    
  22. </web-app>    

需要的jar:
.sigar_shellrc
pdh.dll
sigar-1.5.0.1.jar
sigar-x86-winnt.dll
sigar-x86-winnt.lib

测试结果:

访问http://127.0.0.1:8080/sigar/sigar

CPU Usage:0.22815533980582525
Memory Free:863
Memory Total:2046
Swap Free:2048
Swap Total:4330
Page Free:0
Page Total:0 


测试系统:windows Vista


下载地址:见内容底部








  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值