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 监控系统相关推荐

  1. Java 应用性能监控系统 JavaMonitor

    Java应用性能监控系统 1.简介 WY(Java应用监控系统)是基于Java8制作而成的一款在线监控系统. WY适用于监控所有Java应用,具有堆内存监控.方法区监控.GC监控.类加载监控.类编译监 ...

  2. 基于Java的远程监控系统

    基于Java的远程监控系统 功能点: 1.监控桌面 2.文件上传,下载 3.鼠标.键盘等功能 4.命令行控制 1.桌面 2.文件上传下载 3.鼠标.键盘等功能 略 4.命令行控制 输入命令行 cont ...

  3. java 网络摄像头 监控系统_摄像头(WebCam)

    作者:北南南北 来自:LinuxSir.Org 摘要:本文主要内容是在Linux中驱动摄像头(WebCam),用Spcaserv 服务器架设网络监控系统,客户端通过浏览器进行时时监控. 1.网络监控服 ...

  4. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java校园舆情监控系统tgv13

    马上就要做毕业设计啦,计算机专业的小伙伴们终于开始紧张啦~ 这个问题主要看自己有没有时间,有的话建议还是自己做不要去买.无非就是多花点时间. 但是Java相关的毕业设计,真的太难啦,都不知道做什么选题 ...

  5. java 远程视频监控系统_基于android的远程视频监控系统 附完整源码

    [实例简介]原理:客户端将采集到的每一帧图像数据发送至服务器,服务器接收 [实例截图] [核心代码] /* * @version 1.2 2012-06-29 * @author wanghai */ ...

  6. java 应用监控系统_GitHub - jiangbin216/JavaMonitor: 一款适用于Java应用的在线性能监控系统(JM)...

    Java应用性能监控系统(JM) 1.简介 JM(Java应用监控系统)是基于Java8制作而成的一款在线监控系统. JM适用于监控所有Java应用,具有堆内存监控.方法区监控.GC监控.类加载监控. ...

  7. MongoDB学习笔记(四)使用Java进行实时监控与数据收集(空间使用量、连接数)

    目录: MongoDB学习笔记(一)环境搭建与常用操作 MongoDB学习笔记(二)使用Java操作MongoDB MongoDB学习笔记(三)使用Spring Data操作MongoDB Mongo ...

  8. 计算机毕业设计之java+ssm校园视频监控系统

    项目介绍 本毕业设计的内容是设计并且实现一个基于java技术的校园视频监控系统.它是在Windows下,以MYSQL为数据库开发平台,java技术和Tomcat网络信息服务作为应用服务器.校园视频监控 ...

  9. java计算机毕业设计ssm校园舆情监控系统tgv13(附源码、数据库)

    java计算机毕业设计ssm校园舆情监控系统tgv13(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...

  10. (附源码)SSM校园舆情监控系统JAVA计算机毕业设计项目

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

最新文章

  1. Failed building wheel for netifaces
  2. 关于阅读java编程思想和effective java的一些看法
  3. Fastjson批量检查及一键利用工具
  4. 大数据场景中语言虚拟机的应用和挑战
  5. 高德地图定位5.0以下
  6. opencv4 c++ 提取图片中的白色区域_OpenCV4.5.0 更快的SIFT,更强的数字识别,以及色彩校正、深度融合...
  7. 大学计算机基础发送邮件,东南大学《大学计算机基础》实验16邮件合并.pdf
  8. 【MINI2440】linux系统下载全流程
  9. 招商银行笔试题之爱吃喵粮的小招喵
  10. 本地分支与线上代码发生冲突,导致不能应用最新储藏问题
  11. Win10微软帐户切换不回Administrator本地帐户的解决方法
  12. 手机问题点整理和总结
  13. 什么是实人认证?需要用到哪些api接口
  14. 国内数字藏品的乱象与未来
  15. serverlet快速入门
  16. python词频统计(word ——> excel,含去重)
  17. 公钥密码学中的公钥和私钥
  18. vue3使用vite+setup+ts写一个初级前端项目
  19. RedisDesktopManager 2021.8 Windows版本
  20. 参考Box2d算法实现的一个平衡球游戏

热门文章

  1. 佳能g2810打印机扫描怎么用_canon g2810驱动下载
  2. STL源码剖析之迭代器
  3. mysql 游标移动_MySQL游标的简单实践
  4. 写代码会用到哪些常用的软件
  5. 【软考软件评测师】2018综合知识历年真题
  6. Python接口自动化之使用requests库发送http请求
  7. java怎么反编译_Java入门教程-Java的反编译
  8. RK3288出现tts下载不了
  9. 阿里这份Java程序性能优化指南,让你的程序快上200%
  10. java网上订餐系统怎么做_基于Java的网上订餐系统