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依赖,这样就可以用了。
<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的更多相关文章
- centos8平台使用pidstat监控cpu/内存/io
一,安装pidstat: 1,安装 [root@localhost yum.repos.d]# yum install sysstat 2,查看版本: [root@localhost ~]# pids ...
- shell脚本监控cpu/内存使用率 转
该脚本检测cpu和内存的使用情况,只需要调整memorySetting.cpuSetting.userEmail要发邮件报警的email地址即可 如果没有配置发邮件参数的哥们,已配置了的,直接飞到代码 ...
- python监控CPU/内存/磁盘,超过指定百分比,发送邮件
#!/usr/bin/python #coding:utf-8 #导入psutil模块 import psutil import yagmail def mail(subject,contents): ...
- python监控cpu 内存实现邮件微信报警
# qianxiao996精心制作 #博客地址:https://blog.csdn.net/qq_36374896 import psutil, time,smtplib,socket import ...
- linux 监控CPU 内存情况
htop
- Java系统监控(淘汰sigar)
Sigar是Hyperic-hq产品的基础包,是Hyperic HQ主要的数据收集组件.它用来从许多平台收集系统和处理信息. 这些平台包括:Linux, Windows, Solaris, AIX, ...
- java使用siger 获取服务器硬件信息(CPU 内存 网络 io等)
通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...
- java sigar获取本地信息以及org.hyperic.sigar.SigarException: The device is not ready报错解决
window下,使用java sigar 获取磁盘使用率,cpu使用率以及内存使用情况等信息时. 一:首先需要下载jar包和相关文件 sigar-1.6.4.zip 如果想了解更多可以去 sigar官 ...
- Java虚拟机二:使用jvisualvm工具远程监控tomcat内存
jdk中自带了很多工具可以用于性能分析,位于jdk的bin目录下,jvisualvm工具可以以图形化的方式更加直观的监控本地以及远程的java进程的内存占用,线程状态等信息. 一.配置tomcat 在 ...
随机推荐
- jsoup爬取某网站安全数据
jsoup爬取某网站安全数据 package com.vfsd.net; import java.io.IOException; import java.sql.SQLException; impor ...
- C# 子线程与主线程通讯方法一
最近在项目中要用到子线程运行结束向主线程通知的需求,利用线程上下文来实现线程之间的同步. 子线程结束后调用同步函数,向主线程发送时间字符串,改变主窗体的label标签 label标签改变事件触发处理函 ...
- 高级UI-沉浸式设计
关于沉浸式设计,在国内指的是Toolbar和系统状态栏相统一,而谷歌官方给出的沉浸式则是指整个界面为UI所用,而这里所说的沉浸式则是指的前者,涉及4.4和5.0及以上,4.4以下的Android做不出 ...
- Appium移动自动化测试-----(六)4.运行第一个Appium脚本
新建maven空白工程 前置条件:安装eclipse或IntelliJ IDEA,及其maven插件,请自行百度 新建的工程如下: 新建目录apps,并将下载的安装包,拷贝到该目录下 打开POM增加依 ...
- 虚拟机中使用Samba实现文件共享
首先我们给虚拟机安装samba服务(如果搭的是别的仓库记得开仓库) 输入命令:yum install samba samba服务的配置文件在,我们来看一下/etc/samba/smb.conf 输入命 ...
- Java多线程概念及优缺点,多线程的地位|乐字节
大家好,乐字节小乐有来咯,上次说完了Java网络编程探究|乐字节,这次我们来看看线程相关的吧. Java线程主要讲述的内容有: 1.线程概念 多线程,说白了就是多条执行路径,原来是一条路径,就主路径( ...
- Deepin升级Linux5.0内核(目前最新5.3-rc7)
copy from:https://bbs.deepin.org/forum.php?mod=viewthread&tid=175411&extra=&mobile=no 以下 ...
- 转:如何正确彻底删除webpack 全局或是局部?
原文链接:如何正确彻底删除webpack 全局或是局部? 就需要卸载cli 配置webpack ,提示需要安装 webpack-cli,选择yes 后安装webpack-cli , 可是问题不断,所以 ...
- C++ 配置文件解析类 ParseConfig
依赖项: 依赖于 ProcessString 类,可从该篇博客获取「字符串处理类 ProcessString (包含常用字符串处理函数)」 ParseConfig.h //Linux & C+ ...
- PHP中的PDO数据对象
PDO: PHP Data Object:php的数据对象.pdo是数据库操作工具类!1,它能操作很多种数据库,比如mysql,oracle,sybase....2,它具有操作数据库的更多的功能,比如 ...