用到一个插件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依赖,这样就可以用了。

         <dependency>
<groupId>org.fusesource</groupId>
<artifactId>sigar</artifactId>
<version>1.6.4</version>
</dependency>

3:hyperic-sigar解压后到hyperic-sigar-1.6.4\bindings\java\examples目录下这里面有很多官方提供的例子,可以直接复制到你的工程下运行测试。


我用的是websocket+java-timer做的。

 public class KeepRunTime extends TimerTask {

     private static Sigar sigar = new Sigar();  

     @Override
public void run() {
RunTime rt = new RunTime();
rt.setMem(mem());
rt.setCpus(cpu()); DataPushService.pushData(JSONObject.toJSONString(new WebMessage(rt, WebMessage.RUNTIME)));
} // CPU使用率
public static TreeSet<Cpu> cpu() {
try {
TreeSet<Cpu> cpus = new TreeSet<Cpu>();
CpuPerc[] list = sigar.getCpuPercList();
for (int i=1; i<list.length+1; i++) {
Cpu cpu = new Cpu();
cpu.setNo(i);
cpu.setCpuName("CPU-"+i);
cpu.setCpuCombined(CpuPerc.format(list[i-1].getCombined()));
cpus.add(cpu);
}
return cpus;
} catch (SigarException e) {
System.err.println("获取CPU使用率异常");
e.printStackTrace();
return null;
}
} // MEM使用率
public static String mem() {
try {
Mem mem = sigar.getMem();
// 内存总量
Long memTotal = mem.getTotal() / 1024L;
// 当前内存使用量
Long memUsed = mem.getUsed() / 1024L;
// 使用率
Double usePercent = ((memUsed*1.0)/memTotal)*100;
// 四舍五入
return String.format("%.2f", usePercent);
} catch (SigarException e) {
System.err.println("获取MEM使用率异常");
e.printStackTrace();
return null;
}
} }
 public class RunTime {

     // 内存使用率
private String mem;
// CPU使用率
private TreeSet<Cpu> cpus; public String getMem() {
return mem;
}
public void setMem(String mem) {
this.mem = mem;
}
public TreeSet<Cpu> getCpus() {
return cpus;
}
public void setCpus(TreeSet<Cpu> cpus) {
this.cpus = cpus;
} @Override
public String toString() {
return "RunTime [mem=" + mem + ", cpus=" + cpus + "]";
} }
 public class Cpu implements Comparable<Cpu>{

     private int no;

     private String cpuName;

     private String cpuCombined;

     public int getNo() {
return no;
} public void setNo(int no) {
this.no = no;
} public String getCpuName() {
return cpuName;
} public void setCpuName(String cpuName) {
this.cpuName = cpuName;
} public String getCpuCombined() {
return cpuCombined;
} public void setCpuCombined(String cpuCombined) {
this.cpuCombined = cpuCombined;
} // 正序
@Override
public int compareTo(Cpu o) {
return (this.no - o.no);
} @Override
public String toString() {
return "Cpu [no=" + no + ", cpuName=" + cpuName + ", cpuCombined="
+ cpuCombined + "]";
} }

js:

 var runtime = function(data) {
$("#mem").html(data.obj.mem + '%'); var cpus = data.obj.cpus;
var html = "<p>";
for (var i = 1; i < cpus.length + 1; i++) {
html += "<b>" + cpus[i-1].cpuName + ":</b>" +
"<span class='runtime' id='span-cpu'>"+ cpus[i-1].cpuCombined + "</span>";
if (i % 2 == 0) {
html += "</p><p>";
}
}
$("#cpu").html(html);
};

效果:

这里面用了websocket,没提出来具体的代码。

下次我写一个基于netty、websocket.io、springmvc、mybatis、h2database、httpclient、fastjson、https的整合,我现在就在写这样一个项目,等写好了做一个简化版的发上来。

java web 监控cpu、内存等。hyperic-sigar的更多相关文章

  1. centos8平台使用pidstat监控cpu/内存/io

    一,安装pidstat: 1,安装 [root@localhost yum.repos.d]# yum install sysstat 2,查看版本: [root@localhost ~]# pids ...

  2. shell脚本监控cpu/内存使用率 转

    该脚本检测cpu和内存的使用情况,只需要调整memorySetting.cpuSetting.userEmail要发邮件报警的email地址即可 如果没有配置发邮件参数的哥们,已配置了的,直接飞到代码 ...

  3. python监控CPU/内存/磁盘,超过指定百分比,发送邮件

    #!/usr/bin/python #coding:utf-8 #导入psutil模块 import psutil import yagmail def mail(subject,contents): ...

  4. python监控cpu 内存实现邮件微信报警

    # qianxiao996精心制作 #博客地址:https://blog.csdn.net/qq_36374896 import psutil, time,smtplib,socket import ...

  5. linux 监控CPU 内存情况

    htop

  6. Java系统监控(淘汰sigar)

    Sigar是Hyperic-hq产品的基础包,是Hyperic HQ主要的数据收集组件.它用来从许多平台收集系统和处理信息. 这些平台包括:Linux, Windows, Solaris, AIX, ...

  7. java使用siger 获取服务器硬件信息(CPU 内存 网络 io等)

    通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...

  8. java sigar获取本地信息以及org.hyperic.sigar.SigarException: The device is not ready报错解决

    window下,使用java sigar 获取磁盘使用率,cpu使用率以及内存使用情况等信息时. 一:首先需要下载jar包和相关文件 sigar-1.6.4.zip 如果想了解更多可以去 sigar官 ...

  9. Java虚拟机二:使用jvisualvm工具远程监控tomcat内存

    jdk中自带了很多工具可以用于性能分析,位于jdk的bin目录下,jvisualvm工具可以以图形化的方式更加直观的监控本地以及远程的java进程的内存占用,线程状态等信息. 一.配置tomcat 在 ...

随机推荐

  1. Python - Django - 封装分页成通用的模块

    新建 utils 文件夹,并创建 page.py page.py: class ShowPage(object): def __init__(self, page_num, total_count, ...

  2. Nginx限制ip访问

    首先建立下面的配置文件放在nginx的conf目录下面,命名为blocksip.conf: 加入以下代码: #屏蔽soso蜘蛛IP deny 113.108.12.154; #此为搜搜蜘蛛IP den ...

  3. LINUX 安装 VMware-Tools(附常见问题)

    mkdir /cdrom #创建光驱挂载目录 mount /dev/cdrom /cdrom # 加载光驱 tar -zxvf /cdro/VMwareTools**********.tar.gz ~ ...

  4. [ kvm ] 学习笔记 4:KVM 高级功能详解

    1. 半虚拟化驱动 1.1 virtio 概述 KVM 是必须使用硬件虚拟化辅助技术(如 Intel VT-x .AMD-V)的 Hypervisor,在CPU 运行效率方面有硬件支持,其效率是比较高 ...

  5. LODOP中设置设置图片平铺水印,超文本透明

    之前的博文:LODOP中平铺图片 文本项Repeat. 该博文中是平铺的图片,上面是文本.如果是图片add_print_image和add_print_text纯文本,这两个打印项设计的,可以直接通过 ...

  6. HTML布局排版2 div的和图片平铺方便管理

    在HTML里,由于浏览器显示器等差异,浏览器的宽度也会有变化,为了适应不同的宽度,需要用到平铺.例如页面前面的固定的条等,如果是纯色,可以用背景色,如果不是纯色,是渐变等,可以用条状图平铺.常见的布局 ...

  7. Tools - 在线编译环境和工具汇总

    菜鸟教程 https://www.runoob.com/ 支持语言种类丰富,无需注册,包含教程.笔记.手册等内容. 菜鸟在线工具:https://c.runoob.com/ 菜鸟在线编译器:https ...

  8. 【转】mysql 存储过程的示例

    原文地址:https://blog.csdn.net/lishaojun0115/article/details/50183661 begin #定义变量 declare local_sender v ...

  9. Haproxy+keepalived高可用集群实战

    1.1  Haproxy+keepalived高可用集群实战 随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡 ...

  10. java的ReentrantLock类详解

    ReentrantLock 能用于更精细化的加锁的Java类, 通过它能更清楚了解Java的锁机制 ReentrantLock 类的集成关系有点复杂, 既有内部类, 还有多重继承关系 类的定义 pub ...