Java Sigar Windows 监控系统
Java Sigar 监控系统
- 1. 简介
- 2. 导报
- 3. 系统信息
- 4. 存储信息
- 5. 内存信息
- 6. CPU 信息
- 7. 用户信息
- 8. 网络信息
- 9. 以太网信息
1. 简介
Sigar 是 Hyperic-hq 产品的基础包, 是 Hyperic HQ 主要的数据收集组件. 它用来从许多平台收集系统和处理信息.
这些平台包括:Linux, Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX.
Sigar 有 C,C#,Java 和 Perl API,Java 版的 API 为 sigar.jar sigar.jar 的底层是用 C 语言编写的, 它通过本地方法来调用操作系统 API 来获取系统相关数据. Windows 操作系统下 Sigar.jar 依赖 sigar-amd64-winnt.dll 或 sigar-x86-winnt.dll, linux 操作系统下则依赖libsigar-amd64-linux.so 或 libsigar-x86-linux.so.
https://api.256file.com/
在这个链接下载下载相应的版本即可所有即可.Windows 64 位下载
sigar-amd64-winnt.dll
放在C:\Windows\System32
目录下.
Linux 64 位下载libsigar-amd64-linux.so
放在/usr/lib64
等目录下.
https://download.csdn.net/download/YKenan/13718926
2. 导报
<dependency><groupId>org.hyperic.sigar</groupId><artifactId>com.springsource.org.hyperic.sigar</artifactId><version>1.6.3</version></dependency>
3. 系统信息
这个并没有用到这个包.
@Testvoid system() 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();System.out.println("用户名: " + map.get("USERNAME"));System.out.println("计算机名: " + map.get("COMPUTERNAME"));System.out.println("计算机域名: " + map.get("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("操作系统的名称: " + 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"));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"));OperatingSystem OS = OperatingSystem.getInstance();// 操作系统内核类型如: 386, 486, 586 等x86System.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());System.out.println("操作系统类型: " + 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());}
结果
4. 存储信息
代码
@Testvoid getStorageInformation() throws SigarException {Sigar sigar = new Sigar();FileSystem[] fileSystemList = sigar.getFileSystemList();for (FileSystem fs : fileSystemList) {System.out.println(fs.toString());// 分区的盘符名称System.out.println("盘符名称: " + fs.getDevName());// 分区的盘符名称System.out.println("盘符路径: " + fs.getDirName());System.out.println("盘符标志: " + fs.getFlags());//// 文件系统类型,比如 FAT32、NTFSSystem.out.println("盘符类型: " + fs.getSysTypeName());// 文件系统类型名,比如本地硬盘、光驱、网络文件系统等System.out.println("盘符类型名: " + fs.getTypeName());// 文件系统类型System.out.println("盘符文件系统类型: " + fs.getType());FileSystemUsage usage = null;usage = sigar.getFileSystemUsage(fs.getDirName());/* ** 0 TYPE_UNKNOWN: 未知* 1 TYPE_NONE* 2 YPE_LOCAL_DISK: 本地硬盘* 3 TYPE_NETWORK: 网络* 4. TYPE_RAM_DISK: 闪存* 5. TYPE_SWAP: 页面交换*/switch (fs.getType()) {case 0:case 1:case 3:case 4:case 5:case 6:break;case 2:// 文件系统总大小System.out.println(fs.getDevName() + "总大小: " + usage.getTotal() + "KB");// 文件系统剩余大小System.out.println(fs.getDevName() + "剩余大小: " + usage.getFree() + "KB");// 文件系统可用大小System.out.println(fs.getDevName() + "可用大小: " + usage.getAvail() + "KB");// 文件系统已经使用量System.out.println(fs.getDevName() + "已经使用量: " + usage.getUsed() + "KB");double usePercent = usage.getUsePercent() * 100D;// 文件系统资源的利用率System.out.println(fs.getDevName() + "资源的利用率: " + usePercent + "%");break;}System.out.println(fs.getDevName() + "读出: " + usage.getDiskReads());System.out.println(fs.getDevName() + "写入: " + usage.getDiskWrites());}}
结果
5. 内存信息
代码
@Testvoid getMemory() throws SigarException {Sigar sigar = new Sigar();// 得到物理内存信息Mem mem = sigar.getMem();System.out.println("物理总内存: " + mem.getTotal() * 1.0 / 1024 / 1024 / 1024 + " G");System.out.println("当前剩余内存: " + mem.getFree() * 1.0 / 1024 / 1024 / 1024 + " G");System.out.println("物理内存剩余率: " + mem.getFreePercent());System.out.println("当前使用内存: " + mem.getUsed() * 1.0 / 1024 / 1024 / 1024 + " G");System.out.println("物理内存利用率: " + mem.getUsedPercent());System.out.println("实际剩余内存: " + mem.getActualFree() * 1.0 / 1024 / 1024 / 1024 + " G");System.out.println("实际使用内存: " + mem.getActualUsed() * 1.0 / 1024 / 1024 / 1024 + " G");// 交换区信息Swap swap = sigar.getSwap();System.out.println("交换区总量: " + swap.getTotal() * 1.0 / 1024 / 1024 / 1024 + " G");System.out.println("当前交换区剩余量: " + swap.getFree() * 1.0 / 1024 / 1024 / 1024 + " G");System.out.println("当前交换区使用量: " + swap.getUsed() * 1.0 / 1024 / 1024 / 1024 + " G");}
结果
6. CPU 信息
代码
@Testvoid cpu() throws SigarException {Sigar sigar = new Sigar();CpuInfo[] infos = sigar.getCpuInfoList();CpuPerc[] cpuList = sigar.getCpuPercList();// 不管是单块 CPU 还是多 CPU 都适用for (int i = 0; i < infos.length; i++) {CpuInfo info = infos[i];System.out.println("第 " + (i + 1) + " 块 CPU 信息:");System.out.println("CPU 的总量MHz: " + info.getMhz());System.out.println("CPU 生产商: " + info.getVendor());System.out.println("CPU 类别: " + info.getModel());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()));}
结果
7. 用户信息
代码
@Testvoid userInfo() throws SigarException {Sigar sigar = new Sigar();Who[] who = sigar.getWhoList();if (who != null && who.length > 0) {for (Who _who : who) {System.out.println("当前系统进程表中的用户名: " + _who.getUser());System.out.println("用户控制台: " + _who.getDevice());System.out.println("用户 HOST: " + _who.getHost());System.out.println("getTime(): " + _who.getTime());System.out.println("------------------------------------------");}}}
结果
8. 网络信息
代码
@Testvoid net() throws SigarException {Sigar sigar = new Sigar();String[] ifNames = sigar.getNetInterfaceList();for (String ifName : ifNames) {NetInterfaceConfig ifConfig = sigar.getNetInterfaceConfig(ifName);System.out.println("网络设备名: " + ifName);System.out.println("IP 地址: " + ifConfig.getAddress());System.out.println("子网掩码: " + ifConfig.getNetmask());if ((ifConfig.getFlags() & 1L) <= 0L) {System.out.println("!IFF_UP...skipping getNetInterfaceStat");continue;}NetInterfaceStat ifstat = sigar.getNetInterfaceStat(ifName);System.out.println(ifName + "接收的总包裹数: " + ifstat.getRxPackets());System.out.println(ifName + "发送的总包裹数: " + ifstat.getTxPackets());System.out.println(ifName + "接收到的总字节数: " + ifstat.getRxBytes());System.out.println(ifName + "发送的总字节数: " + ifstat.getTxBytes());System.out.println(ifName + "接收到的错误包数: " + ifstat.getRxErrors());System.out.println(ifName + "发送数据包时的错误数: " + ifstat.getTxErrors());System.out.println(ifName + "接收时丢弃的包数: " + ifstat.getRxDropped());System.out.println(ifName + "发送时丢弃的包数: " + ifstat.getTxDropped());}}
结果
9. 以太网信息
代码
@Testvoid ethernet() throws SigarException {Sigar sigar = new Sigar();String[] ifaces = sigar.getNetInterfaceList();for (String iface : ifaces) {NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(iface);if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress())|| (cfg.getFlags() & NetFlags.IFF_LOOPBACK) != 0|| NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {continue;}System.out.println(cfg.getName() + "IP 地址: " + cfg.getAddress());System.out.println(cfg.getName() + "网关广播地址: " + cfg.getBroadcast());System.out.println(cfg.getName() + "网卡 MAC 地址: " + cfg.getHwaddr());System.out.println(cfg.getName() + "子网掩码: " + cfg.getNetmask());System.out.println(cfg.getName() + "网卡描述信息: " + cfg.getDescription());System.out.println(cfg.getName() + "网卡类型: " + cfg.getType());System.out.println("----------------------------------------------------");}}
结果
Java Sigar Windows 监控系统相关推荐
- Java 应用性能监控系统 JavaMonitor
Java应用性能监控系统 1.简介 WY(Java应用监控系统)是基于Java8制作而成的一款在线监控系统. WY适用于监控所有Java应用,具有堆内存监控.方法区监控.GC监控.类加载监控.类编译监 ...
- 基于Java的远程监控系统
基于Java的远程监控系统 功能点: 1.监控桌面 2.文件上传,下载 3.鼠标.键盘等功能 4.命令行控制 1.桌面 2.文件上传下载 3.鼠标.键盘等功能 略 4.命令行控制 输入命令行 cont ...
- java 网络摄像头 监控系统_摄像头(WebCam)
作者:北南南北 来自:LinuxSir.Org 摘要:本文主要内容是在Linux中驱动摄像头(WebCam),用Spcaserv 服务器架设网络监控系统,客户端通过浏览器进行时时监控. 1.网络监控服 ...
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java校园舆情监控系统tgv13
马上就要做毕业设计啦,计算机专业的小伙伴们终于开始紧张啦~ 这个问题主要看自己有没有时间,有的话建议还是自己做不要去买.无非就是多花点时间. 但是Java相关的毕业设计,真的太难啦,都不知道做什么选题 ...
- java 远程视频监控系统_基于android的远程视频监控系统 附完整源码
[实例简介]原理:客户端将采集到的每一帧图像数据发送至服务器,服务器接收 [实例截图] [核心代码] /* * @version 1.2 2012-06-29 * @author wanghai */ ...
- java 应用监控系统_GitHub - jiangbin216/JavaMonitor: 一款适用于Java应用的在线性能监控系统(JM)...
Java应用性能监控系统(JM) 1.简介 JM(Java应用监控系统)是基于Java8制作而成的一款在线监控系统. JM适用于监控所有Java应用,具有堆内存监控.方法区监控.GC监控.类加载监控. ...
- MongoDB学习笔记(四)使用Java进行实时监控与数据收集(空间使用量、连接数)
目录: MongoDB学习笔记(一)环境搭建与常用操作 MongoDB学习笔记(二)使用Java操作MongoDB MongoDB学习笔记(三)使用Spring Data操作MongoDB Mongo ...
- 计算机毕业设计之java+ssm校园视频监控系统
项目介绍 本毕业设计的内容是设计并且实现一个基于java技术的校园视频监控系统.它是在Windows下,以MYSQL为数据库开发平台,java技术和Tomcat网络信息服务作为应用服务器.校园视频监控 ...
- java计算机毕业设计ssm校园舆情监控系统tgv13(附源码、数据库)
java计算机毕业设计ssm校园舆情监控系统tgv13(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...
- (附源码)SSM校园舆情监控系统JAVA计算机毕业设计项目
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
最新文章
- Failed building wheel for netifaces
- 关于阅读java编程思想和effective java的一些看法
- Fastjson批量检查及一键利用工具
- 大数据场景中语言虚拟机的应用和挑战
- 高德地图定位5.0以下
- opencv4 c++ 提取图片中的白色区域_OpenCV4.5.0 更快的SIFT,更强的数字识别,以及色彩校正、深度融合...
- 大学计算机基础发送邮件,东南大学《大学计算机基础》实验16邮件合并.pdf
- 【MINI2440】linux系统下载全流程
- 招商银行笔试题之爱吃喵粮的小招喵
- 本地分支与线上代码发生冲突,导致不能应用最新储藏问题
- Win10微软帐户切换不回Administrator本地帐户的解决方法
- 手机问题点整理和总结
- 什么是实人认证?需要用到哪些api接口
- 国内数字藏品的乱象与未来
- serverlet快速入门
- python词频统计(word ——> excel,含去重)
- 公钥密码学中的公钥和私钥
- vue3使用vite+setup+ts写一个初级前端项目
- RedisDesktopManager 2021.8 Windows版本
- 参考Box2d算法实现的一个平衡球游戏