昨天要做监控模块,所以学习了如何用Sigar获取系统信息

本文介绍了如何在Java中利用Sigar库来获取系统信息,包括CPU、内存、硬盘和网络状态。首先从官网下载Sigar包,解压并引入到工程中,然后通过示例代码展示获取各种系统数据的方法。
摘要由CSDN通过智能技术生成

先说怎么使用Sigar,

1.在官网下载Sigar文件包

2.解压出来,进入到sigar-bin/lib文件夹里面

3.把lib里面东西全加到工程lib包里面

4.把lib文件夹里面的Sigar.jar添加到工程里面

5.可以使用了


下面是代码,需要的各种基本数据都获取到了,CPU,内存,硬盘,网络方面

package sigar;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.DecimalFormat;

import org.hyperic.sigar.CpuInfo;
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.NetInterfaceStat;
import org.hyperic.sigar.OperatingSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.SigarNotImplementedException;
import org.hyperic.sigar.Swap;

public class SystemInfo {
	
	public static void main(String[] args) throws Exception{
		SystemInfo s = new SystemInfo();
		System.out.println("CPU个数: " + s.getCpuCount());
		s.getCpuTotal();
		s.getPhyssicalMemory();
		s.getplatformName();
		s.getDefaultIpAddress();
		s.getEthernetInfo();
		s.getFQDN();
		s.getMAC();
		s.testWho();
		s.testFileSystemInfo();
		s.testGetOSInfo();
		s.testNetIfList();
		s.testCpuPerc();
	}
	
	/**
	 * 1.CPU资源信息
	 * @return
	 */
	//CPU个数(单位:个)
	public int getCpuCount() throws SigarException{
		Sigar sigar = new Sigar();
		try{
			System.out.println("CPU个数: ");
			return sigar.getCpuInfoList().length;       //返回CPU的个数
		}finally{
			sigar.close();
		}
	}
	
	/**
	 * CPU的总量(单位:MHz)以及CPU的相关信息
	 * @throws SigarException
	 */
	public void getCpuTotal(){
		Sigar sigar = new Sigar();
		CpuInfo[] infos;
		try{
			infos =sigar.getCpuInfoList();
			for(int i = 0; i < infos.length; i++){// 不管是单块CPU还是多CPU都适用
				CpuInfo cpuInfo = infos[i];
				int cpuMhz = cpuInfo.getMhz(); //CPU的总量MHz
				String cpuVendor =  cpuInfo.getVendor(); // CPU的生产厂家,如:Intel
				String cpuModel = cpuInfo.getVendor();//CPU的类别如:celeron
				long cpuCacheSize = cpuInfo.getCacheSize();  //缓冲存储器数量
				
				System.out.println("CPU的总量:" + cpuMhz);  
				System.out.println("CPU生产厂家:" + cpuVendor);  
				System.out.println("CPU的类别:" + cpuModel);   
				System.out.println("缓冲存储器的数量:" + cpuCacheSize);  
				System.out.println("================================");
			}
		}catch(SigarException e){
			e.printStackTrace();
		}
	}
	
	
	/**
	 * CPU的用户使用量、系统使用剩余量、总的剩余量、总的使用占用量等(单位:100%)
	 */
	public void testCpuPerc(){
		Sigar sigar = new Sigar();
		//单CPU或者多CPU都适用
		CpuPerc cpuList[] = null;
		try {
			cpuList = sigar.getCpuPercList();
		} catch (SigarException e) {
			e.printStackTrace();
			return;
		}
		for(int i = 0; i< cpuList.length; i++){
			printCpuPerc(cpuList[i]); //用于打印cpu的使用情况
		}
	}
	
	//打印cpu的使用率
	private void printCpuPerc(CpuPerc cpuPerc) {
		String cpuPercUser = CpuPerc.format(cpuPerc.getUser());// 用户使用率
		String cpuPercSys = CpuP
介绍利用java程序检查服务器或主机的运行时信息,包括操作系统CPU使用情况、内存使用情况、硬盘使用情况以及网卡、网络信息。主要的办法有两 种:第一种,使用jdk1.6以上自动的功能,实现数据的获取,但是该方法局限性较大,而且获得的数据也比较少,尤其是内存信息不够准确。所以,在此不讨 论该方法。第二种,使用第三方的jar包进行获取,通过直接调用操作系统的api来获取系统相关数据。本文则主要介绍一种通过Hyperic-hq产品的基础包sigar.jar来实现服务器状态数据的获取Sigar.jar包是通过本地方法来调用操作系统API来获取系统相关数据。作用实时监测服务器主机的物理信息,如CPU使用信息、内存使用信息、硬盘使用信息以及网卡和网络的使用情况。源码说明com.system.runtime     |-common     |   |-SystemRuntime.java     |       操作实体类     |-pojo     |   |-systemStatusPojo.java     |       存储系统实时状态的po     |-service     |   |-systemStatusService.java     |   |   RMI服务接口     |   |-systemStatusServiceImpl.java     |       服务的实现      |-main.java         主函数入口 demo     |-sigar.java         官方示例 test     |-Client.java         客户端测试 jar 生成的可以用jar包 lib 官方jar包以及底层支撑文件问题解答1、mac下eclipse中配置java.library.pathMac下,eclipse中的配置方法:项目右键->属性->java build path->选择Libraries中的sigar.jar->在展开的Native library location中选择底层文件所在目录即可2、网络传输速率jar包中不提供网络传输速率的方法,需要采集两次,自行计算出传输速率3、局域网中无法连接在网络传输中,当有多个网卡进行切换时,rmi会出现无法连接的错误。建议更换IP地址访问。如:服务器处于两个局域网 192.168.191.* 和 172.29.131.* ,客户端处于 192.168.191.* 之中。当客户端连接192.168.191.* 时可用连接,但是响应超时。但是连接 172.29.131.* 时则可以正常使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值