现在的位置: 首页 > 综合 > 正文

Hyperic-Sigar学习 Sigar获取CPU的基本信息、使用率Sigar获取内存的信息Sigar获取磁盘信息Sigar获取网卡流量信息Sigar获取系统信息

2013年03月06日 ⁄ 综合 ⁄ 共 5523字 ⁄ 字号 评论关闭

大家好,我是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>    
【上篇】
【下篇】

抱歉!评论已关闭.