java web 监控cpu、内存等。hyperic-sigar
用到一个插件hyperic-sigar
1:下载hyperic-sigar后解压,把sigar-amd64-winnt.dll(64位机器,32位用sigar-x86-winnt.dll)放到你本机的jdk\bin、jdk\jre\bin、jre\bin目录下。
2:maven引入hyperic-sigar依赖,这样就可以用了。
1 <dependency> 2 <groupId>org.fusesource</groupId> 3 <artifactId>sigar</artifactId> 4 <version>1.6.4</version> 5 </dependency>
3:hyperic-sigar解压后到hyperic-sigar-1.6.4\bindings\java\examples目录下这里面有很多官方提供的例子,可以直接复制到你的工程下运行测试。
我用的是websocket+java-timer做的。
1 public class KeepRunTime extends TimerTask { 2 3 private static Sigar sigar = new Sigar(); 4 5 @Override 6 public void run() { 7 RunTime rt = new RunTime(); 8 rt.setMem(mem()); 9 rt.setCpus(cpu()); 10 11 DataPushService.pushData(JSONObject.toJSONString(new WebMessage(rt, WebMessage.RUNTIME))); 12 } 13 14 // CPU使用率 15 public static TreeSet<Cpu> cpu() { 16 try { 17 TreeSet<Cpu> cpus = new TreeSet<Cpu>(); 18 CpuPerc[] list = sigar.getCpuPercList(); 19 for (int i=1; i<list.length+1; i++) { 20 Cpu cpu = new Cpu(); 21 cpu.setNo(i); 22 cpu.setCpuName("CPU-"+i); 23 cpu.setCpuCombined(CpuPerc.format(list[i-1].getCombined())); 24 cpus.add(cpu); 25 } 26 return cpus; 27 } catch (SigarException e) { 28 System.err.println("获取CPU使用率异常"); 29 e.printStackTrace(); 30 return null; 31 } 32 } 33 34 // MEM使用率 35 public static String mem() { 36 try { 37 Mem mem = sigar.getMem(); 38 // 内存总量 39 Long memTotal = mem.getTotal() / 1024L; 40 // 当前内存使用量 41 Long memUsed = mem.getUsed() / 1024L; 42 // 使用率 43 Double usePercent = ((memUsed*1.0)/memTotal)*100; 44 // 四舍五入 45 return String.format("%.2f", usePercent); 46 } catch (SigarException e) { 47 System.err.println("获取MEM使用率异常"); 48 e.printStackTrace(); 49 return null; 50 } 51 } 52 53 }
View Code
1 public class RunTime { 2 3 // 内存使用率 4 private String mem; 5 // CPU使用率 6 private TreeSet<Cpu> cpus; 7 8 public String getMem() { 9 return mem; 10 } 11 public void setMem(String mem) { 12 this.mem = mem; 13 } 14 public TreeSet<Cpu> getCpus() { 15 return cpus; 16 } 17 public void setCpus(TreeSet<Cpu> cpus) { 18 this.cpus = cpus; 19 } 20 21 @Override 22 public String toString() { 23 return "RunTime [mem=" + mem + ", cpus=" + cpus + "]"; 24 } 25 26 }
View Code
1 public class Cpu implements Comparable<Cpu>{ 2 3 private int no; 4 5 private String cpuName; 6 7 private String cpuCombined; 8 9 public int getNo() { 10 return no; 11 } 12 13 public void setNo(int no) { 14 this.no = no; 15 } 16 17 public String getCpuName() { 18 return cpuName; 19 } 20 21 public void setCpuName(String cpuName) { 22 this.cpuName = cpuName; 23 } 24 25 public String getCpuCombined() { 26 return cpuCombined; 27 } 28 29 public void setCpuCombined(String cpuCombined) { 30 this.cpuCombined = cpuCombined; 31 } 32 33 // 正序 34 @Override 35 public int compareTo(Cpu o) { 36 return (this.no - o.no); 37 } 38 39 @Override 40 public String toString() { 41 return "Cpu [no=" + no + ", cpuName=" + cpuName + ", cpuCombined=" 42 + cpuCombined + "]"; 43 } 44 45 }
View Code
js:
1 var runtime = function(data) { 2 $("#mem").html(data.obj.mem + '%'); 3 4 var cpus = data.obj.cpus; 5 var html = "<p>"; 6 for (var i = 1; i < cpus.length + 1; i++) { 7 html += "<b>" + cpus[i-1].cpuName + ":</b>" + 8 "<span class='runtime' id='span-cpu'>"+ cpus[i-1].cpuCombined + "</span>"; 9 if (i % 2 == 0) { 10 html += "</p><p>"; 11 } 12 } 13 $("#cpu").html(html); 14 };
View Code
效果:
这里面用了websocket,没提出来具体的代码。
下次我写一个基于netty、websocket.io、springmvc、mybatis、h2database、httpclient、fastjson、https的整合,我现在就在写这样一个项目,等写好了做一个简化版的发上来。
转载于:https://www.cnblogs.com/zhengbn/p/6585609.html
java web 监控cpu、内存等。hyperic-sigar相关推荐
- java cpu监控,java系统监控CPU 磁盘
java系统监控CPU 磁盘 import java.io.*; /** * linux 下cpu 内存 磁盘 jvm的使用监控 * @author avery_leo * */ public cla ...
- java 监控系统cpu,java系统监控CPU 磁盘
java系统监控CPU 磁盘 import java.io.*; /** * linux 下cpu 内存 磁盘 jvm的使用监控 * @author avery_leo * */ public cla ...
- 安装Java Visualvm监控堆内存和参数说明
安装Java Visualvm监控堆内存和参数说明 1.概述 这篇文章介绍使用Java Visualvm工具监控堆内存VisualGC插件的安装以及监控堆内存参数说明. 摘要 VisualGC插件安装 ...
- 性能入门工具jmeter监控cpu内存插件的安装与使用
引子 无论是大侠还是大虾,只要谈到性能最基本的性能指标(影响时间,吞吐量,cpu,内存等)是离不开的,这里就是最简单的入门级的操作.不用命令,直接在压测工具jmeter里查看调试. 上图看一下执行后的 ...
- Linux CentOs7 监控CPU 内存 硬盘IO读写,网络负载,CPU温度等
一般我们都知道TOP命令可以加载服务器的负载详情,但界面不太友好.因此用到htop 我们开发的软件服务需要在服务器上运行,所以服务器性能代表了软件的性能上限,因此服务器性能调优是个十分重要的环节,然而 ...
- java如何监控cpu耗时_超级干货:3个性能监控和优化命令讲解
原标题:超级干货:3个性能监控和优化命令讲解 小编为大家整理出了三个有关性能监控和优化命令详细讲解,别看只有三个,但不影响他噎啊,本篇文章很长,涉及top命令.free命令和 vmstat命令,真的是 ...
- Java线上CPU内存冲高问题排查步骤
1 引言 作为一名从事Java开发快一年的程序员,在线上经常碰到某个模块的Pod发出CPU与内存告警的问题,而这些问题会导致系统响应缓慢甚至是服务不可用.一般情况下可以通过重启或者调高Pod的资源量或 ...
- TrafficMonitorr网速流量监控/CPU内存率查看工具
简介: Traffic Monitor (网络流量监控器) 是一款 Windows 平台上开源免费的实时网速监控软件.它体积小巧而且是绿色软件,能以类似 360 助手的「桌面悬浮窗」的形式,保持在桌面 ...
- mysql监控内存cpu使用率_监控 cpu 内存 网卡的使用情况的一个命令 比较实用
sar -r -u -n DEV 1 1000 >/data/200.sql 2>&1 & 监控结果: 02:51:11 PM kbmemfree kbmemused ...
最新文章
- Error creating bean with name 'messageSource' defi
- hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫
- 数据库高可用和分区解决方案-MySQL 篇
- python 网关配置界面代码_Linux下使用python自动修改本机网关代码分享
- 将图卷积神经网络用于解码分子生成
- 7/100. Move Zeroes
- 在.NET中调用存储过程
- 1.1 BeautifulSoup使用方法
- Flutter进阶—实现动画效果(七)
- Android的logger机制分析
- android 模拟器 锁屏,如何在模拟器中测试Android锁屏小部件?
- 【PHP】百度贴吧自动/云签到脚本(PC 端)
- 计算机访问网络延迟越低越好吗,内存延迟参数是否越低越好
- 从零开始学《离散数学》-电子科技大学
- 【Beta】 第七次Daily Scrum Meeting
- Unity SteamVR锁定头盔位置旋转
- 如何用java代码给Word文档添加水印?
- python Ran out of input 异常解决
- MyBatisPlus 学习笔记_MP的AR模式
- 无责任猜想#冰桶挑战#大佬们相爱相杀众生相
热门文章
- mysql数据库插入图片_向MySql数据库插入与读取图片文件
- webloigc12服务启动不了_一键启动知多少!
- php生成静态页面并预览
- 每天一个linux命令(15):tail 命令
- 【深度学习】图像数据集处理常用方法合集(部分基于pytorch)
- 机器学习中训练集、验证集和测试集的区别
- mooc浙大数据结构PTA习题之一元多项式的乘法与加法运算
- linux技术工程师,LINUX系统工程师技术(Engineer)-------第四天
- php pdo 打印sql语句,php – 使用PDO准备SQL语句
- 实现根据条件删除_Vue源码解析,keep-alive是如何实现缓存的?