`

Sigar-硬件操纵&监控

 
阅读更多

1:Sigar用作windows/linux的硬件资源监控,可嵌入到Java程序中.

 

2: 下载地址: http://sourceforge.net/projects/sigar/files/sigar/1.6/

 

3: 下载后解压,将sigar.jar 及连接文件:

sigar-amd64-winnt.dll,sigar-x86-winnt.dll,libsigar-amd64-linux.so,libsigar-x86-linux.so

放到webapp\lib目录下

 

4:查看代码:

hyperic-sigar-1.6.4\bindings\java\examples\java

 

5:将代码复制到eclipse中执行即可.

 

示例代码:

Controller:

import java.text.DecimalFormat;
import java.util.Map;

import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.NetFlags;
import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.OperatingSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.Swap;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

import com.google.common.collect.Maps;

@Controller 
@RequestMapping("hardware")
public class HardwareController {
	 

	@RequestMapping("monitor")
	public String monitor(ModelMap modelMap) {
		try {
			Map<String, Map<String, String>> allData = Maps.newLinkedHashMap();
			modelMap.put("allData", allData);
			// 总信息
			Sigar sigar = new Sigar();
			double divider2 = 1024 * 1024;
			double divider3 = 1024 * 1024 * 1024;
			DecimalFormat df = new DecimalFormat("#0.00");
			
			// 系统信息
			OperatingSystem os = OperatingSystem.getInstance();
			Map<String, String> sysData = Maps.newLinkedHashMap();
			
			sysData.put("系统名称:", os.getName());
			sysData.put("系统位数:", os.getDataModel());
			sysData.put("系统架构:", os.getArch());
			
			allData.put("系统信息:", sysData);
			// CPU信息
			CpuPerc[] cpus = sigar.getCpuPercList();
			Map<String, String> cpuData = Maps.newLinkedHashMap();
			for(int i=0;i<cpus.length;i++) {
				cpuData.put("CPU" + i, CpuPerc.format(cpus[i].getCombined()));
			}
			allData.put("CPU信息:", cpuData);
			
			// 内存信息
			Mem mem = sigar.getMem();
			Map<String, String> memData = Maps.newLinkedHashMap();
			double memTotal = ((double)mem.getTotal() / divider3);
			double memUsed = ((double)mem.getUsed() / divider3);
			double memFree = ((double)mem.getFree() / divider3);
			memData.put("内存总数", df.format(memTotal) + "G");
			memData.put("内存使用量", df.format(memUsed) + "G");
			memData.put("内存剩余量", df.format(memFree) + "G");
			
			allData.put("内存信息:", memData);
			
			// 交换区信息
			Swap swap = sigar.getSwap();
			Map<String, String> swapData = Maps.newLinkedHashMap();
			
			double swapTotal = ((double)swap.getTotal() / divider3);
			double swapUsed = ((double)swap.getUsed() / divider3);
			double swapFree = ((double)swap.getFree() / divider3);
			swapData.put("交换区总数",   df.format(swapTotal) + "G");
			swapData.put("交换区使用量", df.format(swapFree) + "G");
			swapData.put("交换区剩余量", df.format(swapUsed) + "G");
			
			allData.put("交换区信息:", swapData);
			
			// 硬盘信息:
			FileSystem fileSystems[] = sigar.getFileSystemList();
			Map<String, String> fileSystemData = Maps.newLinkedHashMap();
			
			for(FileSystem fileSystem : fileSystems) {
				if(!"cdrom".equals(fileSystem.getTypeName())) {
					fileSystemData.put("<br/>硬盘[" + fileSystem.getDirName() + "]信息", " ");
					FileSystemUsage fileSystemUsage = sigar.getFileSystemUsage(fileSystem.getDirName());
					fileSystemData.put("硬盘[" + fileSystem.getDirName() + "]总量", df.format((double)fileSystemUsage.getTotal()/divider2) + "G");     
					fileSystemData.put("硬盘[" + fileSystem.getDirName() + "]使用量", df.format((double)fileSystemUsage.getUsed()/divider2) + "G");
					fileSystemData.put("硬盘[" + fileSystem.getDirName() + "]可用量", df.format((double)fileSystemUsage.getAvail()/divider2) + "G");
				}
			}
			allData.put("硬盘信息:", fileSystemData);
			
			String[] netinterfaces = sigar.getNetInterfaceList();
			Map<String, String> netinterfaceData = Maps.newLinkedHashMap();
			
			for (int i = 0; i < netinterfaces.length; i++) {
				NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(netinterfaces[i]);
				if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress()) || (cfg.getFlags() & NetFlags.IFF_LOOPBACK) != 0 || NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {continue;}
				netinterfaceData.put("<br/>网卡[" + cfg.getName() + "]信息", " ");
				netinterfaceData.put("名称" + cfg.getName(), cfg.getName());
				netinterfaceData.put("IP地址" + cfg.getName(), cfg.getAddress());
				netinterfaceData.put("网关广播地址" + cfg.getName(), cfg.getBroadcast());
				netinterfaceData.put("网卡Mac地址" + cfg.getName(), cfg.getHwaddr());
				netinterfaceData.put("子网掩码" + cfg.getName(), cfg.getNetmask());
			}
			allData.put("网络信息:", netinterfaceData);
			
			return "system/hardware/monitor";
		} catch (Exception e) {
			return "error";
		}
	}

}

 Jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/tags.jsp"%>
<table style="width: 100%; margin: 17px; padding: 11px;">
	<c:forEach var="d" items="${allData}">
		<tr>
			<td>
				<b>${d.key}</b>
			</td>
			<td>
				<c:forEach var="k" items="${d.value}" varStatus="vs">
					${k.key} : ${k.value} <c:if test="${vs.index!=(fn:length(d.value)-1)}"> --------- </c:if>
				</c:forEach>
			</td>
		</tr>
		<tr><td colspan="2">&nbsp;</td></tr>
	</c:forEach>
</table>

 

分享到:
评论

相关推荐

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

    这些动态链接库是Java程序调用Sigar功能的关键,因为Java本身不直接支持底层硬件信息的访问,需要依赖这样的本地库。 使用Sigar.jar进行系统监控时,首先需要将其添加到项目的类路径中。在Java代码中,可以借助...

    sigar-amd64-winnt.dllt实现windows操作系统CPU、内存等系统资源监控

    6. **系统信息报告**:除了实时监控,`sigar`还可以提供详细的系统报告,包括系统版本、硬件配置、网络配置等,为系统分析提供全面的信息。 7. **跨平台兼容性**:`sigar`的一大优势在于其跨平台性,同一段代码可以...

    hyperic-sigar-1.6.4jar包.zip

    《深入理解Hyperic Sigar与性能监控》 Hyperic Sigar(System Information Gatherer and Reporter)是一款跨平台的系统信息收集工具,它提供了一种统一的方式来获取多种操作系统平台上的系统状态信息,包括CPU使用...

    sigar-amd64-winnt.dll

    SIGAR库可能被用作一个解决方案,因为它可以提供关于系统资源的详细信息,帮助诊断和解决与内存管理、多线程、硬件资源利用相关的崩溃问题。 "jdk11崩溃"可能是由于以下原因: 1. **兼容性问题**:JDK 11可能与特定...

    sigar-x86-winnt.dll

    标题中的"sigar-x86-winnt.dll"是一个动态链接库文件,主要用于系统信息收集和监控。这个文件是Sigar库的一部分,Sigar(System Information Gatherer and Reporter)是由Hypertable组织开发的一个跨平台的系统度量...

    hyperic-sigar-1.6.4

    Hyperic-Sigar是一个收集系统各项底层信息的工具集.他有如下特点: 1. 收集信息全面 收集CPU,MEM,NETWORK,PROCESS,IOSTAT等 使用Sigar,你完全可以模仿出cpuinfo,meminfo,top,free,ifconfig,ipconfig,netstat,route,df...

    sigar-amd64-winnt.dll sigar-x86-winnt.dll sigar-x86-winnt.lib 获取本机信息

    1. **内存信息**:通过Sigar库,您可以轻松获取本机的物理内存、虚拟内存、交换内存等统计信息,包括总容量、已用空间、空闲空间等,这对于监控系统性能和资源管理非常有用。 2. **处理器信息**:可以获取CPU的总数...

    sigar-1.6.4.jar

    Sigar库适用于各种场景,如系统管理员监控服务器性能,开发者调试应用程序的资源消耗,或者在自动化运维工具中集成系统监控功能。 综上,"sigar-1.6.4.jar"是一个强大而灵活的工具,它使得Java开发者能够轻松地...

    sigar-amd64-winnt-1.6.4.zip

    适用于sigar1.6.4 官方其他支持参考:https://repo1.maven.org/maven2/org/fusesource/sigar/1.6.4/ 适用于修复报错信息: # # A fatal error has been detected by the Java Runtime Environment: # # ...

    sigar-amd64-winnt.rar

    SIGAR是一个跨平台的工具集,它允许应用程序获取系统级别的信息,如操作系统、硬件、网络、进程和内存状态。这个RAR文件可能是为了解决在Java环境中运行SIGAR时遇到的问题,特别是“no sigar-amd64-winnt.dll in ...

    sigar-amd64-winnt.dll,修复jvm崩溃版本

    此为修复版本,下载后直接使用即可 版本号:1.6.4,大家去下载jar的时候别搞错了!

    sigar-sigar-1.6.4.tar.gz

    几乎所有的硬件信息 网络情况都可以得到 1 CPU信息 包括基本信息(vendor model mhz cacheSize)和统计信息(user sys idle nice wait) 2 文件系统信息 包括Filesystem Size Used Avail Use% Type 3 事件信息 类似...

    sigar-amd64-winnt

    4. **examples**:可能包含示例代码,演示如何在Windows平台上使用Sigar库进行系统监控。 5. **licenses**:许可证文件,规定了库的使用条款和条件。 ** 使用 Sigar 的场景 ** 开发者通常会使用Sigar库来进行以下...

    sigar-1.6.4配置合集.zip

    sigar1.6.4所有的jar合集,包含sigar-1.6.4.jar,libsigar-amd64-linux.so,libsigar-x86-linux.so,sigar-amd64-winnt.dll,sigar-x86-winnt.dll,sigar-x86-winnt.lib

    sigar-1.6.4 包+Sigar_1.6.4.CHM

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统监控工具,由Hypertable组织开发并维护。它的核心库提供了丰富的API,允许开发者在多种操作系统上收集系统级别的信息,如进程状态、内存...

    hyperic-sigar-1.6.4资源包下载

    java 获取服务器内存使用情况、cpu运行情况、使用效率等等硬件指标,所需的jar包、dll文件工具

    hyperic-sigar-1.6.4.zip

    在描述中提到,SIGAR库是用于获取服务器的硬件指标,如内存使用情况、CPU运行状态以及效率等。这表明SIGAR能够提供详尽的系统资源监控功能,对于系统管理员来说,这是一个非常实用的工具,可以帮助他们及时了解...

    sigar-amd64-winnt.dll.zip

    总结而言,"sigar-amd64-winnt.dll"是Windows 10系统监控的重要组件,它提供了丰富的系统信息收集功能,帮助开发者和系统管理员深入理解系统运行状况,从而进行更有效的管理和优化。正确配置和使用这个库,将有助于...

Global site tag (gtag.js) - Google Analytics