Java应用性能远程监控系统(C/S架构)

Java应用性能远程监控系统(使用C/S架构)

适用于监控所有Java应用,具有堆内存监控、方法区监控、GC监控、类加载监控、类编译监控与线程监控,提供堆快照下载,线程快照下载。体验网址:http://116.85.23.6:8888/

一、简介

JavaMonitor 发布之后,受到了很多网友的好评,QQ群也有很多人加入反馈建议。但 JavaMonitor 的局限性也有很多,比如,无法进行远程监控,无法监控多个服务器,占用内存太大等等。为了解决上述问题,基于 JavaMonitor-0.0.7 开发而成的 JavaMonitoPlus 诞生了!JavaMonitoPlus 不仅解决了上述三个问题,而且增加了安全认证,优化了缓存,使页面访问更加流畅!

二、环境

要求JDK8及以上,必须有Java环境变量,且Java环境变量不冲突!

三、使用

首先,在releases下载发行版压缩包,解压。

在需要监控的主机上运行 client.jar 包即可,默认8081端口,可以追加参数--server.port=9999更改。

然后,在作为监控中心的主机上运行 server.jar 包,默认8888端口,到这里是不会成功的,因为还需要在该jar包目录下,新建配置文件并配置监控的主机列表,详细介绍接下来会说到。

四、主机

配置监控的主机非常简单,只需要在jar包所在目录下新建application.properties文件,配置以下字段即可。

monitor.serve[0].name=serve-1
monitor.serve[0].address=http://127.0.0.1:8081
monitor.serve[1].name=serve-1
monitor.serve[1].address=http://127.0.0.1:8082

注意:一定要写明HTTP协议!name值若不写,默认就是主机地址。

五、监控

默认监控频率为60秒,并且只记录当天产生的监控数据。

如果需要自定义监控频率与监控时长,只需要在jar包所在目录下新建application.properties文件,修改下列字段即可

monitor.rate=60 #监控频率/秒
monitor.cron=0 0 0 * * ? #每日的0:00:00时刻清空数据

连续监控1个月,示例

monitor.cron=0 0 0 1 * ?

连续监控1年,示例

monitor.cron=0 0 0 1 1 ? *

六、安全

JMP 默认是不开启安全认证的,若要开启请在application.properties文件中添加

monitor.open=true

默认用户名/密码为admin,修改方法为

monitor.username=admin
monitor.password=admin

七、MySQL

JMP内嵌H2数据库,有诸多限制,不过JMP提供MySQL数据库的支持。

使用方法很简单,新建application.properties文本文件放在jar包目录下,修改下列参数即可,这样数据库就更换为了MySQL。

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update

八、监控参数

  • S0C:s0(from)的大小
  • S1C:s1(from)的大小
  • S0U:s0(from)已使用的空间
  • S1U:s1(from)已经使用的空间
  • EC:eden区的大小
  • EU:eden区已经使用的空间
  • OC:老年代大小
  • OU:老年代已经使用的空间
  • MC:元空间的大小(Metaspace)
  • MU:元空间已使用大小
  • CCSC:压缩类空间大小(compressed class space)
  • CCSU:压缩类空间已使用大小
  • YGC:新生代gc次数
  • YGCT:新生代gc耗时
  • FGC:Full gc次数
  • FGCT:Full gc耗时
  • GCT:gc总耗时
  • Loaded:表示载入了类的数量
  • Unloaded:表示卸载类的数量
  • Compiled:表示编译任务执行的次数
  • Failed:表示编译失败的次数
  • Total:线程总数
  • Runnable:正在运行的线程数
  • Sleeping:休眠的线程数
  • Waiting:等待的线程数

九、关于作者

博客:https://www.yueshutong.cn/

Github:https://github.com/yueshutong/JavaMonitor

Gitee:https://gitee.com/zyzpp/JavaMonitor

开源中国:https://www.oschina.net/p/javamonitor

邮箱:yster@foxmail.com

QQ群:781927207

1136672-20190317192734301-1133930769.png

JM项目遇到的小坑

Thymeleaf

在HTML页面取值时不要使用getter方法,直接.value即可。

反例:map.getValue()

正例:map.value

FastJson

将json字符串转为 Map<String, MyObject> 类型的对象

正例:JSON.parseObject(json, Map.class)

将json字符串转为 List<MyObject> 类型的对象

正例:JSON.parseArray(json, MyObject.class)

注意!MyObject.class 一定有无参构造方法!

转载于:https://www.cnblogs.com/yueshutong/p/9960045.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现本地电脑监控服务器端电脑监控功能 public class Client { // 入口 public static void main(String[] args) { try { int choice = JOptionPane.showConfirmDialog(null, "请求控制对方电脑", "远程控制系统-Charles", JOptionPane.YES_NO_OPTION); if (choice == JOptionPane.NO_OPTION) { return; } String input = JOptionPane.showInputDialog("请输入要连接电脑的ip(包括端口号)", "127.0.0.1:10000"); // 获取服务器的主机 String host = input.substring(0, input.indexOf(":")); // 获取服务器的端口号 String post = input.substring(input.indexOf(":") + 1); System.out.println("服务器的主机:" + host + " " + "端口号:" + post); Socket client = new Socket(host,Integer.parseInt(post)); DataInputStream dis = new DataInputStream(client.getInputStream()); JFrame jframe = new JFrame("本地监控系统 - Charles"); jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭进程 jframe.setSize(1024, 768);// 设置窗体大小 double height = dis.readDouble(); double width = dis.readDouble(); Dimension ds = new Dimension((int)width, (int)height); //设置 jframe.setSize(ds); //将服务器图片作为背景 JLabel backImage = new JLabel(); JPanel panel = new JPanel(); //设置滚动条 JScrollPane scrollPane = new JScrollPane(panel); panel.setLayout(new FlowLayout()); panel.add(backImage); jframe.add(scrollPane); jframe.setAlwaysOnTop(true); jframe.setVisible(true); while(true){ int len = dis.readInt(); byte[] imageData = new byte[len]; dis.readFully(imageData); ImageIcon image = new ImageIcon(imageData); backImage.setIcon(image); jframe.repaint(); } } catch (Exception e) { e.printStackTrace(); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值