大家好,我是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还可以结合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的基本信息有:vendor、model、mhz、cacheSize;CPU的统计信息有:user进程占用的百分比、sys进程占用的百分比、nice进程占用的百分比、idle进程占用的百分比、wait进程占用的百分比。
下面通过例子说明用法:
- package lab.sigar;
- 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 CpuData {
- private CpuInfo info;
- private CpuPerc perc;
- private Cpu timer;
- public CpuData() {
- }
- public void populate(Sigar sigar) throws SigarException {
- info = sigar.getCpuInfoList()[0];
- perc = sigar.getCpuPerc();
- timer = sigar.getCpu();
- }
- public static CpuData gather(Sigar sigar) throws SigarException {
- CpuData data = new CpuData();
- data.populate(sigar);
- return data;
- }
- public static void main(String[] args) throws Exception {
- Sigar sigar = new Sigar();
- CpuData cpuData = CpuData.gather(sigar);
- XStream xstream = new XStream();
- xstream.alias("CpuData", CpuData.class);
- System.out.println(xstream.toXML(cpuData));
- }
- }
输出:
- <CpuData>
- <info>
- <vendor>Intel</vendor>
- <model>Pentium M</model>
- <mhz>1862</mhz>
- <cacheSize>-1</cacheSize>
- </info>
- <perc>
- <user>0.12574850299401197</user>
- <sys>0.031936127744510975</sys>
- <nice>0.0</nice>
- <idle>0.8423153692614771</idle>
- <wait>0.0</wait>
- </perc>
- <timer>
- <user>932250</user>
- <sys>520375</sys>
- <nice>0</nice>
- <idle>6366031</idle>
- <wait>0</wait>
- <total>7818656</total>
- </timer>
- </CpuData>
内存的主要指标有:物理内存的大小、使用数、剩余数;交换内存的大小、使用数、剩余数;RAM的大小等等。
下面通过例子说明:
- package lab.sigar;
- import org.hyperic.sigar.Mem;
- import org.hyperic.sigar.Sigar;
- import org.hyperic.sigar.SigarException;
- import org.hyperic.sigar.Swap;
- import com.thoughtworks.xstream.XStream;
- /**
- * 内存数据
- *
- * 使用Sigar获得系统内存信息
- *
- */
- public class MemoryData {
- private Mem mem;
- private Swap swap;
- public MemoryData() {
- }
- public void populate(Sigar sigar) throws SigarException {
- mem = sigar.getMem();
- swap = sigar.getSwap();
- }
- public static MemoryData gather(Sigar sigar) throws SigarException {
- MemoryData data = new MemoryData();
- data.populate(sigar);
- return data;
- }
- public static void main(String[] args) throws Exception {
- Sigar sigar = new Sigar();
- MemoryData memData = MemoryData.gather(sigar);
- XStream xstream = new XStream();
- xstream.alias("MemData", MemoryData.class);
- System.out.println(xstream.toXML(memData));
- }
- }
输出:
- <MemData>
- <mem>
- <total>1073102848</total>
- <ram>1024</ram>
- <used>932274176</used>
- <free>140828672</free>
- <actualUsed>932274176</actualUsed>
- <actualFree>140828672</actualFree>
- </mem>
- <swap>
- <total>2580328448</total>
- <used>870432768</used>
- <free>1709895680</free>
- <pageIn>137691</pageIn>
- <pageOut>19392</pageOut>
- </swap>
- </MemData>
文件系统的指标有:名称、分区类型等基本信息;读写次数等统计信息。
当然了使用sigar也可以获得分件系统的这些数据。
下面通过例子说明:
- package lab.sigar;
- import java.util.ArrayList;
- import java.util.List;
- import org.hyperic.sigar.FileSystem;
- import org.hyperic.sigar.FileSystemUsage;
- import org.hyperic.sigar.Sigar;
- import org.hyperic.sigar.SigarException;
- import com.thoughtworks.xstream.XStream;
- /**
- * 文件系统数据
- *
- * 使用Sigar获得文件系统信息
- *
- * @author wangrui
- *
- */
- public class FileSystemData {
- private FileSystem config;
- private FileSystemUsage stat;
- public FileSystemData() {}
- public void populate(Sigar sigar, FileSystem fs)
- throws SigarException {
- config = fs;
- try {
- stat = sigar.getFileSystemUsage(fs.getDirName());
- } catch (SigarException e) {
- }
- }
- public static FileSystemData gather(Sigar sigar, FileSystem fs)
- throws SigarException {
- FileSystemData data = new FileSystemData();
- data.populate(sigar, fs);
- return data;
- }
- public FileSystem getConfig() {
- return config;
- }
- public FileSystemUsage getStat() {
- return stat;
- }
- public static void main(String[] args) throws Exception {
- Sigar sigar = new Sigar();
- FileSystem[] fsArr = sigar.getFileSystemList();
- List fsList = new ArrayList();
- for ( FileSystem fs:fsArr ) {
- FileSystemData fsData = FileSystemData.gather(sigar, fs);
- fsList.add(fsData);
- }
- XStream xstream = new XStream();
- xstream.alias("FileSystemDatas", List.class);
- xstream.alias("FileSystemData", FileSystemData.class);
- System.out.println(xstream.toXML(fsList));
- }
- }
- <FileSystemDatas>
- <FileSystemData>
- <config>
- <dirName>C:\</dirName>
- <devName>C:\</devName>
- <typeName>local</typeName>
- <sysTypeName>FAT32</sysTypeName>
- <type>2</type>
- <flags>0</flags>
- </config>
- <stat>
- <total>38418048</total>
- <free>27689856</free>
- <used>10728192</used>
- <avail>27689856</avail>
- <files>-1</files>
- <freeFiles>-1</freeFiles>
- <diskReads>17762</diskReads>
- <diskWrites>50748</diskWrites>
- <diskReadBytes>317399040</diskReadBytes>
- <diskWriteBytes>1591675392</diskWriteBytes>
- <diskQueue>0</diskQueue>
- <diskServiceTime>-1.0</diskServiceTime>
- <usePercent>0.28</usePercent>
- </stat>
- </FileSystemData>
- <FileSystemData>
- <config>
- <dirName>D:\</dirName>
- <devName>D:\</devName>
- <typeName>local</typeName>
- <sysTypeName>FAT32</sysTypeName>
- <type>2</type>
- <flags>0</flags>
- </config>
- <stat>
- <total>66496576</total>
- <free>49064928</free>
- <used>17431648</used>
- <avail>49064928</avail>
- <files>-1</files>
- <freeFiles>-1</freeFiles>
- <diskReads>67354</diskReads>
- <diskWrites>19482</diskWrites>
- <diskReadBytes>817295872</diskReadBytes>
- <diskWriteBytes>230753792</diskWriteBytes>
- <diskQueue>0</diskQueue>
- <diskServiceTime>-1.0</diskServiceTime>
- <usePercent>0.27</usePercent>
- </stat>
- </FileSystemData>
- <FileSystemData>
- <config>
- <dirName>E:\</dirName>
- <devName>E:\</devName>
- <typeName>local</typeName>
- <sysTypeName>FAT32</sysTypeName>
- <type>2</type>
- <flags>0</flags>
- </config>
- <stat>
- <total>69111712</total>
- <free>49214624</free>
- <used>19897088</used>
- <avail>49214624</avail>
- <files>-1</files>
- <freeFiles>-1</freeFiles>
- <diskReads>41340</diskReads>
- <diskWrites>8119</diskWrites>
- <diskReadBytes>222592512</diskReadBytes>
- <diskWriteBytes>91557888</diskWriteBytes>
- <diskQueue>0</diskQueue>
- <diskServiceTime>-1.0</diskServiceTime>
- <usePercent>0.29</usePercent>
- </stat>
- </FileSystemData>
- <FileSystemData>
- <config>
- <dirName>F:\</dirName>
- <devName>F:\</devName>
- <typeName>local</typeName>
- <sysTypeName>FAT32</sysTypeName>
- <type>2</type>
- <flags>0</flags>
- </config>
- <stat>
- <total>70109376</total>
- <free>46776096</free>
- <used>23333280</used>
- <avail>46776096</avail>
- <files>-1</files>
- <freeFiles>-1</freeFiles>
- <diskReads>16</diskReads>
- <diskWrites>39</diskWrites>
- <diskReadBytes>151552</diskReadBytes>
- <diskWriteBytes>830976</diskWriteBytes>
- <diskQueue>0</diskQueue>
- <diskServiceTime>-1.0</diskServiceTime>
- <usePercent>0.34</usePercent>
- </stat>
- </FileSystemData>
- <FileSystemData>
- <config>
- <dirName>H:\</dirName>
- <devName>H:\</devName>
- <typeName>cdrom</typeName>
- <sysTypeName>cdrom</sysTypeName>
- <type>5</type>
- <flags>0</flags>
- </config>
- </FileSystemData>
- </FileSystemDatas>
和网卡相关的统计数据主要有:网卡信息(ip地址、子网掩码、mac地址等)、网卡的吞吐量、流量等等。
当然了使用sigar也可以获得这些数据。
下面通过例子说明:
- package lab.sigar;
- import java.util.ArrayList;
- import java.util.List;
- import org.hyperic.sigar.NetInterfaceConfig;
- import org.hyperic.sigar.NetInterfaceStat;
- import org.hyperic.sigar.Sigar;
- import org.hyperic.sigar.SigarException;
- import com.thoughtworks.xstream.XStream;
- /**
- * 网卡信息、接口数据、流量
- *
- * 使用Sigar获得网卡信息
- *
- */
- public class NetInterfaceData {
- private NetInterfaceConfig config;
- private NetInterfaceStat stat;
- private long rxbps;
- private long txbps;
- public NetInterfaceData() {}
- public void populate(Sigar sigar, String name)
- throws SigarException {
- config = sigar.getNetInterfaceConfig(name);
- try {
- long start = System.currentTimeMillis();
- NetInterfaceStat statStart = sigar.getNetInterfaceStat(name);
- long rxBytesStart = statStart.getRxBytes();
- long txBytesStart = statStart.getTxBytes();
- Thread.sleep(1000);
- long end = System.currentTimeMillis();
- NetInterfaceStat statEnd = sigar.getNetInterfaceStat(name);
- long rxBytesEnd = statEnd.getRxBytes();
- long txBytesEnd = statEnd.getTxBytes();
- rxbps = (rxBytesEnd - rxBytesStart)*8/(end-start)*1000;
- txbps = (txBytesEnd - txBytesStart)*8/(end-start)*1000;
- stat = sigar.getNetInterfaceStat(name);
- } catch (SigarException e) {
- } catch (Exception e) {
- }
- }
- public static NetInterfaceData gather(Sigar sigar, String name)
- throws SigarException {
- NetInterfaceData data = new NetInterfaceData();
- data.populate(sigar, name);
- return data;
- }
- public NetInterfaceConfig getConfig() {
- return config;
- }
- public NetInterfaceStat getStat() {
- return stat;
- }
- public long getRxbps() {
- return rxbps;
- }
- public long getTxbps() {
- return txbps;
- }
- public static void main(String[] args) throws Exception {
- Sigar sigar = new Sigar();
- String[] netIfs = sigar.getNetInterfaceList();
- List netIfList = new ArrayList();
- for ( String name:netIfs ) {
- NetInterfaceData netIfData1 = NetInterfaceData.gather(sigar, name);
- netIfList.add(netIfData1);
- }
- XStream xstream = new XStream();
- xstream.alias("NetInterfaceDatas", List.class);
- xstream.alias("NetInterfaceData", NetInterfaceData.class);
- System.out.println(xstream.toXML(netIfList));
- }
- }
输出:
- <NetInterfaceDatas>
- <NetInterfaceData>
- <config>
- <name>eth0</name>
- <hwaddr>00:FF:AE:0F:32:92</hwaddr>
- <type>Ethernet</type>
- <description>TAP-Win32 Adapter V9 #2 - ????ü??????ò?????</description>
- <address>0.0.0.0</address>
- <destination>0.0.0.0</destination>
- <broadcast>255.255.255.255</broadcast>
- <netmask>0.0.0.0</netmask>
- <flags>2050</flags>
- <mtu>1500</mtu>
- <metric>0</metric>
- </config>
- <stat>
- <rxBytes>0</rxBytes>
- <rxPackets>0</rxPackets>
- <rxErrors>0</rxErrors>
- <rxDropped>0</rxDropped>
- <rxOverruns>-1</rxOverruns>
- <rxFrame>-1</rxFrame>
- <txBytes>0</txBytes>
- <txPackets>0</txPackets>
- <txErrors>0</txErrors>
- <txDropped>0</txDropped>
- <txOverruns>-1</txOverruns>
- <txCollisions>-1</txCollisions>
- <txCarrier>-1</txCarrier>
- <speed>10000000</speed>
- </stat>
- <rxbps>0</rxbps>
- <txbps>0</txbps>
- </NetInterfaceData>
- <NetInterfaceData>
- <config>
- <name>eth1</name>
- <hwaddr>00:FF:C8:0A:AE:37</hwaddr>
- <type>Ethernet</type>
- <description>eetrust VAdapter - ????ü??????ò?????</description>
- <address>0.0.0.0</address>
- <destination>0.0.0.0</destination>
- <broadcast>255.255.255.255</broadcast>
- <netmask>0.0.0.0</netmask>
- <flags>2050</flags>
- <mtu>1500</mtu>
- <metric>0</metric>
- </config>
- <stat>
- <rxBytes>0</rxBytes>
- <rxPackets>0</rxPackets>
- <rxErrors>0</rxErrors>
- <rxDropped>0</rxDropped>
- <rxOverruns>-1</rxOverruns>
- <rxFrame>-1</rxFrame>
- <txBytes>0</txBytes>
- <txPackets>0</txPackets>
- <txErrors>0</txErrors>
- <txDropped>0</txDropped>
- <txOverruns>-1</txOverruns>
- <txCollisions>-1</txCollisions>
- <txCarrier>-1</txCarrier>
- <speed>10000000</speed>
- </stat>
- <rxbps>0</rxbps>
- <txbps>0</txbps>
- </NetInterfaceData>
- <NetInterfaceData>
- <config>
- <name>eth2</name>
- <hwaddr>00:22:68:5D:C8:52</hwaddr>
- <type>Ethernet</type>
- <description>Realtek PCIe GBE Family Controller - ????ü??????ò?????</description>
- <address>10.3.43.63</address>
- <destination>0.0.0.0</destination>
- <broadcast>10.3.43.255</broadcast>
- <netmask>255.255.255.0</netmask>
- <flags>2115</flags>
- <mtu>1500</mtu>
- <metric>0</metric>
- </config>
- <stat>
- <rxBytes>177337765</rxBytes>
- <rxPackets>295449</rxPackets>
- <rxErrors>0</rxErrors>
- <rxDropped>0</rxDropped>
- <rxOverruns>-1</rxOverruns>
- <rxFrame>-1</rxFrame>
- <txBytes>27724399</txBytes>
- <txPackets>203267</txPackets>
- <txErrors>0</txErrors>
- <txDropped>0</txDropped>
- <txOverruns>-1</txOverruns>
- <txCollisions>-1</txCollisions>
- <txCarrier>-1</txCarrier>
- <speed>100000000</speed>
- </stat>
- <rxbps>2000</rxbps>
- <txbps>2000</txbps>
- </NetInterfaceData>
- <NetInterfaceData>
- <config>
- <name>lo0</name>
- <hwaddr>00:00:00:00:00:00</hwaddr>
- <type>Local Loopback</type>
- <description>MS TCP Loopback interface</description>
- <address>127.0.0.1</address>
- <destination>0.0.0.0</destination>
- <broadcast>0.0.0.0</broadcast>
- <netmask>255.0.0.0</netmask>
- <flags>73</flags>
- <mtu>1520</mtu>
- <metric>0</metric>
- </config>
- <stat>
- <rxBytes>36535999</rxBytes>
- <rxPackets>350095</rxPackets>
- <rxErrors>0</rxErrors>
- <rxDropped>0</rxDropped>
- <rxOverruns>-1</rxOverruns>
- <rxFrame>-1</rxFrame>
- <txBytes>36535999</txBytes>
- <txPackets>350031</txPackets>
- <txErrors>0</txErrors>
- <txDropped>0</txDropped>
- <txOverruns>-1</txOverruns>
- <txCollisions>-1</txCollisions>
- <txCarrier>-1</txCarrier>
- <speed>10000000</speed>
- </stat>
- <rxbps>1000</rxbps>
- <txbps>1000</txbps>
- </NetInterfaceData>
- </NetInterfaceDatas>
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.hyperic.sigar.Cpu;
- import org.hyperic.sigar.CpuPerc;
- import org.hyperic.sigar.Mem;
- import org.hyperic.sigar.Sigar;
- import org.hyperic.sigar.Swap;
- public class SigarServlet extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- try {
- Sigar sigar = new Sigar();
- CpuPerc perc = sigar.getCpuPerc();
- Mem mem = sigar.getMem();
- Swap swap = sigar.getSwap();
- int cpuUsage = (int)perc.getCombined();
- int memFree = (int)(mem.getFree()/(1024l*1024l));
- int memTotal = (int)(mem.getTotal()/(1024l*1024l));
- int pageFileFree = (int)(swap.getPageOut()/(1024l*1024l));
- int pageFileTotal = (int)(swap.getPageIn()/(1024l*1024l));
- int swapFree = (int)(swap.getFree()/(1024l*1024l));
- int swapTotal = (int)(swap.getTotal()/(1024l*1024l));
- response.setContentType("text/html;charset=GB2312");
- PrintWriter out = response.getWriter();
- Cpu cpu = sigar.getCpu();
- out.println("CPU Usage:"+perc.getCombined());
- out.println("<br/>");
- out.println("Memory Free:"+memFree);
- out.println("<br/>");
- out.println("Memory Total:"+memTotal);
- out.println("<br/>");
- out.println("Swap Free:"+swapFree);
- out.println("<br/>");
- out.println("Swap Total:"+swapTotal);
- out.println("<br/>");
- out.println("Page Free:"+pageFileFree);
- out.println("<br/>");
- out.println("Page Total:"+pageFileTotal);
- out.close();
- } catch (Exception e) {
- }
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <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">
- <display-name>sigar</display-name>
- <servlet>
- <servlet-name>sigarServlet</servlet-name>
- <servlet-class>sigar.SigarServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>sigarServlet</servlet-name>
- <url-pattern>/sigar</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html</welcome-file>
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- </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
下载地址:见内容底部