`

监控管理sigar

阅读更多
package com.djjs;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Map;
import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;

import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.OperatingSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.Swap;
import org.hyperic.sigar.Who;

/**
 * 使用sigar来监控,简单方便!
 * 使用说明:以下代码需要配合sigar的dll文件来用,需要将dll文件放到JDK下的bin文件夹下,供sigar程序调用,还需要sigarjar包。
 * @author nxd
 */
public class RuntimeTest {
	public static void main(String[] args) {
		try {
			Timer timer = new Timer();// 定时器
			TimerTask task = new TimerTask() {
				public void run() {
					try {
						memory();
						property();
						cpu();
						os();
						who();
						System.out.println("====================================================");
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			};
			try {
				timer.schedule(task, 0, 3000);// 每3秒取一次
			} catch (Exception ex) {
				ex.printStackTrace();
			}
			// System信息,从jvm获取
			// property();//根据自己的需求,都可以放到定时器中定时获取
			// cpu信息
			// cpu();
			// 内存信息
			// memory();
			// 操作系统信息
			// os();
			// 用户信息
			// who();

		} catch (Exception e1) {
			e1.printStackTrace();
		}
	}

	private static void property() throws UnknownHostException {
		Runtime r = Runtime.getRuntime();
		Properties props = System.getProperties();
		InetAddress addr;
		addr = InetAddress.getLocalHost();
		String ip = addr.getHostAddress();
		Map<String, String> map = System.getenv();
		String userName = map.get("USERNAME");// 获取用户名
		String computerName = map.get("COMPUTERNAME");// 获取计算机名
		String userDomain = map.get("USERDOMAIN");// 获取计算机域名
		System.out.println("用户名:    " + userName);
		System.out.println("计算机名:   " + computerName);
		System.out.println("计算机域名:  " + userDomain);
		System.out.println("本地ip地址: " + ip);
		System.out.println("本地主机名:  " + addr.getHostName());
		System.out.println("JVM可以使用的总内存:    " + r.totalMemory());
		System.out.println("JVM可以使用的剩余内存:   " + r.freeMemory());
		System.out.println("JVM可以使用的处理器个数:  " + r.availableProcessors());
		System.out.println("Java的运行环境版本:    " + props.getProperty("java.version"));
		System.out.println("Java的运行环境供应商:   " + props.getProperty("java.vendor"));
		System.out.println("Java供应商的URL:    " + props.getProperty("java.vendor.url"));
		System.out.println("Java的安装路径:  " + props.getProperty("java.home"));
		System.out.println("Java的虚拟机规范版本:   " + props.getProperty("java.vm.specification.version"));
		System.out.println("Java的虚拟机规范供应商:  " + props.getProperty("java.vm.specification.vendor"));
		System.out.println("Java的虚拟机规范名称:   " + props.getProperty("java.vm.specification.name"));
		System.out.println("Java的虚拟机实现版本:   " + props.getProperty("java.vm.version"));
		System.out.println("Java的虚拟机实现供应商:  " + props.getProperty("java.vm.vendor"));
		System.out.println("Java的虚拟机实现名称:   " + props.getProperty("java.vm.name"));
		System.out.println("Java运行时环境规范版本:  " + props.getProperty("java.specification.version"));
		System.out.println("Java运行时环境规范供应商: " + props.getProperty("java.specification.vender"));
		System.out.println("Java运行时环境规范名称:  " + props.getProperty("java.specification.name"));
		System.out.println("Java的类格式版本号:    " + props.getProperty("java.class.version"));
		System.out.println("Java的类路径:   " + props.getProperty("java.class.path"));
		System.out.println("加载库时搜索的路径列表:    " + props.getProperty("java.library.path"));
		System.out.println("默认的临时文件路径:  " + props.getProperty("java.io.tmpdir"));
		System.out.println("一个或多个扩展目录的路径:   " + props.getProperty("java.ext.dirs"));
		System.out.println("操作系统的名称:    " + props.getProperty("os.name"));
		System.out.println("操作系统的构架:    " + props.getProperty("os.arch"));
		System.out.println("操作系统的版本:    " + props.getProperty("os.version"));
		System.out.println("文件分隔符:  " + props.getProperty("file.separator"));
		System.out.println("路径分隔符:  " + props.getProperty("path.separator"));
		System.out.println("行分隔符:   " + props.getProperty("line.separator"));
		System.out.println("用户的账户名称:    " + props.getProperty("user.name"));
		System.out.println("用户的主目录: " + props.getProperty("user.home"));
		System.out.println("用户的当前工作目录:  " + props.getProperty("user.dir"));
	}

	private static void memory() throws SigarException {
		Sigar sigar = new Sigar();
		Mem mem = sigar.getMem();
		float total = mem.getTotal();
		float used = mem.getUsed();
		// 内存总量
		System.out.println("内存总量:   " + mem.getTotal() / 1024L / 1024L + "M av");
		// 当前内存使用量
		System.out.println("当前内存使用量:    " + mem.getUsed() / 1024L / 1024L + "M used");
		// 当前内存剩余量
		System.out.println("当前内存剩余量:    " + mem.getFree() / 1024L / 1024L + "M free");
		// 当前内存使用率
		System.out.println("内存使用率:    " + used / total * 100 + "%");
		Swap swap = sigar.getSwap();
		// 交换区总量
		System.out.println("交换区总量:  " + swap.getTotal() / 1024L / 1024L + "M av");
		// 当前交换区使用量
		System.out.println("当前交换区使用量:   " + swap.getUsed() / 1024L / 1024L + "M used");
		// 当前交换区剩余量
		System.out.println("当前交换区剩余量:   " + swap.getFree() / 1024L / 1024L + "M free");
	}

	private static void cpu() throws SigarException {
		Sigar sigar = new Sigar();
		CpuInfo infos[] = sigar.getCpuInfoList();
		CpuPerc cpuList[] = null;
		cpuList = sigar.getCpuPercList();
		for (int i = 0; i < infos.length; i++) {// 不管是单块CPU还是多CPU都适用
			CpuInfo info = infos[i];
			System.out.println("第" + (i + 1) + "块CPU信息");
			System.out.println("CPU的总量MHz:  " + info.getMhz());// CPU的总量MHz
			System.out.println("CPU生产商: " + info.getVendor());// 获得CPU的卖主,如:Intel
			System.out.println("CPU类别:  " + info.getModel());// 获得CPU的类别,如:Celeron
			System.out.println("CPU缓存数量:    " + info.getCacheSize());// 缓冲存储器数量
			printCpuPerc(cpuList[i]);
		}
	}

	private static void printCpuPerc(CpuPerc cpu) {
		System.out.println("CPU用户使用率:   " + CpuPerc.format(cpu.getUser()));// 用户使用率
		System.out.println("CPU系统使用率:   " + CpuPerc.format(cpu.getSys()));// 系统使用率
		System.out.println("CPU当前等待率:   " + CpuPerc.format(cpu.getWait()));// 当前等待率
		System.out.println("CPU当前错误率:   " + CpuPerc.format(cpu.getNice()));//
		System.out.println("CPU当前空闲率:   " + CpuPerc.format(cpu.getIdle()));// 当前空闲率
		System.out.println("CPU总的使用率:   " + CpuPerc.format(cpu.getCombined()));// 总的使用率
	}

	private static void os() {
		OperatingSystem OS = OperatingSystem.getInstance();
		// 操作系统内核类型如: 386、486、586等x86
		System.out.println("操作系统:   " + OS.getArch());
		System.out.println("操作系统CpuEndian():    " + OS.getCpuEndian());//
		System.out.println("操作系统DataModel():    " + OS.getDataModel());//
		// 系统描述
		System.out.println("操作系统的描述:    " + OS.getDescription());
		// 操作系统类型
		// System.out.println("OS.getName(): " + OS.getName());
		// System.out.println("OS.getPatchLevel(): " + OS.getPatchLevel());//
		// 操作系统的卖主
		System.out.println("操作系统的卖主:    " + OS.getVendor());
		// 卖主名称
		System.out.println("操作系统的卖主名:   " + OS.getVendorCodeName());
		// 操作系统名称
		System.out.println("操作系统名称: " + OS.getVendorName());
		// 操作系统卖主类型
		System.out.println("操作系统卖主类型:   " + OS.getVendorVersion());
		// 操作系统的版本号
		System.out.println("操作系统的版本号:   " + OS.getVersion());
	}

	private static void who() throws SigarException {
		Sigar sigar = new Sigar();
		Who who[] = sigar.getWhoList();
		if (who != null && who.length > 0) {
			for (int i = 0; i < who.length; i++) {
				// System.out.println("当前系统进程表中的用户名" + String.valueOf(i));
				Who _who = who[i];
				System.out.println("用户控制台:  " + _who.getDevice());
				System.out.println("用户host: " + _who.getHost());
				// System.out.println("getTime(): " + _who.getTime());
				// 当前系统进程表中的用户名
				System.out.println("当前系统进程表中的用户名:   " + _who.getUser());
			}
		}
	}

}

分享到:
评论

相关推荐

    export.sugar百度大屏sugar模版下载.zip

    总的来说,这个压缩包提供了一套针对百度大屏的SUGAR模板,主要用于公共安全管理,特别是老年人监护和疫情防控的数据可视化。用户可以通过导入和定制这些模板,高效地展现相关领域的关键数据指标。

    SugarCRM

    《SugarCRM:实施指南》是Packt出版社出版的一本实用指南,旨在帮助中小型企业了解并实施SugarCRM这一领先的开源客户关系管理(CRM)应用。本书由Michael J. R. Whitehead撰写,他是一位在软件架构、设计与开发以及...

    Sugar 6.5.X 汉化包

    糖crm(SugarCRM)是一款广泛使用的客户关系管理(CRM)软件,主要帮助企业管理和优化与客户的交互,提升销售、市场营销和服务效率。"Sugar 6.5.X 汉化包"是针对这款软件的一个中文语言包,它使得中国用户能够更方便...

    开源客户关系管理系统SugarCRM的使用教程.docx

    糖衣CRM(SugarCRM)是一款开源的客户关系管理系统,它为企业提供了一套全面的解决方案,以管理和优化与客户的互动。以下是对 SugarCRM 使用教程中提到的一些关键知识点的详细解释: 1. **用户管理与权限设置**: ...

    基于PHP的SugarCRM客户关系管理系统 php版.zip

    7. **报表与仪表板**:SugarCRM内置强大的报表和仪表板工具,通过拖拽式界面生成各类统计报告,实时监控业务状态。学习如何设计和分享报表,有助于企业决策者获取关键业务洞察。 8. **安全性与权限管理**:理解...

    SugarCRM4.5b_CN.zip

    通过调整这些参数,管理员可以控制哪些操作被记录,从而更好地监控系统状态。 `log_file_restricted.html`可能是一个错误页面,当用户试图访问受限制的日志文件时会被显示,保护了系统的安全性和数据隐私。 `...

    SugarCRM UserGuide 5.5

    SugarCRM是一款免费且开放源代码的客户关系管理(CRM)软件,以其直观活泼的界面和易于学习的操作特性而受到欢迎。它的商业策略独特,通过提供免费的开源版软件吸引用户,同时推广收费的企业版和专业版,以实现盈利...

    sugarcrm5.5

    4. 合同管理:管理和监控合同的签订、执行和续签过程,确保合规性和商业效益。 5. 报表与分析:强大的报表工具,允许用户自定义报告,获取实时业务洞察,支持决策制定。 二、SugarCRM 5.5 版本的特点 1. 用户界面...

    商业源码-编程源码-SugarCRM v4.0 英文版.zip

    【SugarCRM v4.0 英文版】是一款知名的开源客户关系管理(CRM)系统,专为商业环境设计。此版本是英文语言的,适用于全球范围内的企业使用。作为一个全面的CRM解决方案,它集成了销售、市场营销和服务支持等多个业务...

    商业源码-编程源码-SugarCRM v3.5.1c 简体中文版.zip

    4. 合同管理:协助企业管理和监控合同生命周期,包括合同起草、审批、执行和续约。 5. 报告与分析:强大的报表工具可以帮助企业收集和分析数据,为决策者提供实时洞察,以便优化业务流程。 6. 定制化与扩展性:...

    sugar_refinery-main-源码.rar

    糖厂管理系统可能是一个专为管理糖业生产流程而设计的应用程序,涵盖了原料采购、生产监控、库存管理、销售跟踪等多个环节。下面我们将深入探讨可能涉及的IT知识点。 1. **项目结构**: 项目通常包含多个文件夹和...

    商业源码-编程源码-SugarCRM v3.5.0c 简体中文版(权限版).zip

    SugarCRM是一款知名的开源客户关系管理(CRM)系统,它的v3.5.0c版本针对中文用户提供了简体中文版,特别强调了“权限版”,这意味着该版本可能包含更精细的权限控制机制,以满足不同规模企业对于数据访问和操作安全...

    TheDefinitiveGuidetoSugarCRM-英文原版.zip

    此外,还会涉及数据导入导出、报告和仪表盘的创建,以帮助管理层更好地监控业务指标。 对于希望实现与其他系统集成的企业,本书会介绍SugarCRM的API接口和开发工具,如Web服务API、Studio和Logic Hooks,让开发者...

    Open Source Project Management Tools.ppt

    这个工具同样具有灵活性,适应项目管理中的问题追踪和状态监控。 在项目管理过程中,小问题的跟进是最大的挑战之一。开源工具可以帮助项目经理有效管理多个同时进行或交叉的项目,确保每个小问题都能得到妥善处理。...

    ibm_connections:IBM Connections for Sugar!

    【IBM Connections for Sugar】是将IBM的企业协作平台与SugarCRM集成的一个解决方案,旨在提升团队协作效率,优化客户关系管理。IBM Connections提供了丰富的社交协作工具,包括博客、微论坛、文件共享、活动日历等...

    sugar_server

    综上所述,"sugar_server" 是一个利用 JavaScript 开发的健康管理工具,专注于血糖监控和营养建议。它结合用户输入的血糖和营养数据,通过智能化分析,为用户提供个性化的健康管理方案,有助于糖尿病患者或健康人群...

    2010集成项目经理考试测试题(易,中,难)

    1. **项目管理基础**:涵盖项目生命周期的各个阶段,包括启动、规划、执行、监控和收尾。了解项目管理过程组和知识领域,如范围、进度、成本、质量、资源、沟通、风险、采购和利益相关者管理。 2. **项目整合管理**...

Global site tag (gtag.js) - Google Analytics