[原创]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

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 一定有无参构造方法!
[原创]Java应用性能远程监控系统(C/S架构)的更多相关文章
- 基于邮件系统的远程实时监控系统的实现 Python版
人生苦短,我用Python~ 界内的Python宣传标语,对Python而言,这是种标榜,实际上,Python确实是当下最好用的开发语言之一. 在相继学习了C++/C#/Java之后,接触Python ...
- 远程监控 – 应用程序运行状况测量 CSF 博客
在远程监控基础知识和故障排除中,我们探讨了 Windows Azure 平台提供的基础指标.信息源.工具和脚本,介绍了有关监控和应用程序运行状况的基本原则.我们演示了如何利用这些基本原则对在 Wind ...
- 开源监控系统Prometheus介绍
前言 Prometheus是CNCF的一个开源项目,Google BorgMon监控系统的开源版本,是一个系统和服务的监控系统.周期性采集metrics指标,匹配规则和展示结果,以及触发某些条件的告警 ...
- c# 远程监控(1) 大纲
此篇文章主要讲了如何使用C# Winform程序模拟一个远程监控系统,并使用RTP实时传输协议传输数据. 应用场景:远程监控.局域网视频会议.客户端流式缓冲播放 这方面的资料还是有一些,但是都需要整合 ...
- 基于 HTML5 WebGL 的 3D 棉花加工监控系统
前言 现在的棉花加工行业还停留在传统的反应式维护模式当中,当棉花加下厂的设备突然出现故障时,控制程序需要更换.这种情况下,首先需要客户向设备生产厂家请求派出技术人员进行维护,然后生产厂家才能根据情况再 ...
- 如何借助Monit搭建服务器监控系统?(1)
许多Linux管理员依赖一种集中式远程监控系统(比如Nagios或Cacti),检查网络基础设施的健康状况.虽然集中式监控系统为管理员在处理许多主机和设备时简化了工作,但专用的监控设备显然成了单一故障 ...
- 打造云原生大型分布式监控系统系列文章-腾讯工程师roc
附上本系列文章链接 打造云原生大型分布式监控系统(一): 大规模场景下 Prometheus 的优化手段 打造云原生大型分布式监控系统(二): Thanos 架构详解 打造云原生大型分布式监控系统(二 ...
- [原创]Java性能优化权威指南读书思维导图
[原创]Java性能优化权威指南读书思维导图 书名:Java性能优化权威指南 原书名:Java performance 作者: (美)Charlie Hunt Binu John 译者: 柳飞 ...
- 干货 | 云智慧透视宝Java代码性能监控实现原理
这篇图文并茂,高端大气上档次,思维缜密的文章,一看就和我平时的风格不同.对了.这不是我写的,是我家高大英俊,写一手好代码,做一手好菜的男神老公的大作,曾发表于技术公号,经本人授权转载~~ 一.Java ...
随机推荐
- 使用 connect http proxy 绕过 ssh 防火墙限制
1.安装 connect brew install connect 2.配置 ~/.ssh/config Host * ProxyCommand connect -H your.proxy.serve ...
- 微信小程序小结
前几日抽空看了下小程序,发现挺好玩的,mvvm的结构,语法比vue要简单,内置了一系列的组件,很方便.然后开发者工具直接上传代码,提交审核,然后发布,感觉挺好.虽然不打算做个工具类的,但是做个介绍类小 ...
- cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动
在DOS窗口.gitbush以及一些可以使用的命令行工具的界面上,输入:net stop mysql.net start mysql时,总是提示:服务名无效. 出现提示如下: 原因是:因为net st ...
- 用ASP.NET Core 2.1 建立规范的 REST API -- 翻页/排序/过滤等
本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblogs.com/cgzl/p/9019314 ...
- SQL Server常用函数使用方法(学习)
1.转载至 https://www.cnblogs.com/Brambling/p/6779434.html Substring()函数,用于截取字符串方法,三个参数 参数1:用于指定要操作的字符串 ...
- Postman Mock Server
为了不影响前端开发的进度,一般后端都是先定数据结构,然后写个假接口让前端调用,这样前端就不必等着后端接口开发完成以后再开始了.届时,前后端以及UI和测试就可以并行,待双方都把各自的逻辑写好了,便可以联 ...
- .NET Core微服务之基于Ocelot+IdentityServer实现统一验证与授权
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.案例结构总览 这里,假设我们有两个客户端(一个Web网站,一个移动App),他们要使用系统,需要通过API网关(这里API网关始终作为 ...
- NewBuiltBottomSheetDialog【新建底部对话框】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 演示在底部选项卡上方弹出底部对话框效果. 效果图 代码分析 NewBuiltBottomSheetDialog继承BottomShe ...
- SDK测试实践
最近开始接SDK的测试项目,因为之前没有接触过,还是很新奇的,记录一下测试方法. 大家都知道SDK其实就是一个基础工具包,我的理解,对于安卓和IOS来说,SDK就是一个应用程序的基础包,在SDK的基础 ...
- python使用魔法函数创建可切片类型
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 可切片的对象 """ import nu ...