{"id":15068759,"url":"https://github.com/onblog/javamonitor","last_synced_at":"2025-04-07T21:12:47.232Z","repository":{"id":37171916,"uuid":"157534574","full_name":"onblog/JavaMonitor","owner":"onblog","description":"Java应用性能远程监控系统（使用C/S架构）适用于监控所有Java应用，具有堆内存监控、方法区监控、GC监控、类加载监控、类编译监控与线程监控，提供堆快照下载，线程快照下载（欢迎Star，🚫禁止Fork）","archived":false,"fork":false,"pushed_at":"2024-10-03T17:41:31.000Z","size":69854,"stargazers_count":516,"open_issues_count":3,"forks_count":192,"subscribers_count":29,"default_branch":"master","last_synced_at":"2025-04-07T21:12:39.739Z","etag":null,"topics":["echarts","java8"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onblog.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-14T10:51:42.000Z","updated_at":"2025-04-02T03:00:02.000Z","dependencies_parsed_at":"2024-11-13T18:01:08.999Z","dependency_job_id":"8c57e2e7-ae13-4f9b-a589-284ea9efddab","html_url":"https://github.com/onblog/JavaMonitor","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onblog%2FJavaMonitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onblog%2FJavaMonitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onblog%2FJavaMonitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onblog%2FJavaMonitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onblog","download_url":"https://codeload.github.com/onblog/JavaMonitor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247730069,"owners_count":20986404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["echarts","java8"],"created_at":"2024-09-25T01:39:08.365Z","updated_at":"2025-04-07T21:12:47.212Z","avatar_url":"https://github.com/onblog.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java应用性能远程监控系统\n\n适用于监控所有Java应用，具有堆内存监控、方法区监控、GC监控、类加载监控、类编译监控与线程监控，提供堆快照下载，线程快照下载。\n\n**若使用本项目二次开发请遵守Apache开源协议，并在项目主页做上述文字说明且附上本页Github地址**\n\n## 一、简介\n\nJavaMonitor 发布之后，受到了很多网友的好评，QQ群也有很多人加入反馈建议。但 JavaMonitor 的局限性也有很多，比如，无法进行远程监控，无法监控多个服务器，占用内存太大等等。为了解决上述问题，基于 JavaMonitor-0.0.7 开发而成的 JavaMonitoPlus 诞生了！JavaMonitoPlus 不仅解决了上述三个问题，而且增加了安全认证，优化了缓存，使页面访问更加流畅！\n\n## 二、环境\n\n要求JDK8及以上，必须有Java环境变量，且Java环境变量不冲突！\n\n## 三、使用\n\n克隆本项目，在需要监控的主机上运行 client 项目下的 main 方法即可，默认8081端口，可以追加参数`--server.port=9999`更改。\n\n然后，在作为监控中心的主机上运行 server 项目下的 main 方法，默认8888端口，到这里是不会成功的，因为运行之前还需要在该jar包目录下，新建application.properties配置文件并配置监控的主机列表，详细介绍接下来会说到。\n\n## 四、主机\n\n配置监控的主机非常简单，只需要在jar包所在目录下新建application.properties文件，配置以下字段即可。\n\n```properties\nmonitor.serve[0].name=serve-1\nmonitor.serve[0].address=http://127.0.0.1:8081\nmonitor.serve[1].name=serve-1\nmonitor.serve[1].address=http://127.0.0.1:8082\n```\n\n注意：一定要写明HTTP协议！name值若不写，默认就是主机地址。\n\n## 五、监控\n\n默认监控频率为60秒，并且只记录当天产生的监控数据。\n\n如果需要自定义监控频率与监控时长，只需要在jar包所在目录下新建application.properties文件，修改下列字段即可\n\n```\nmonitor.rate=60 #监控频率/秒\nmonitor.cron=0 0 0 * * ? #每日的0:00:00时刻清空数据\n```\n\n连续监控1个月，示例\n\n```\nmonitor.cron=0 0 0 1 * ?\n```\n\n连续监控1年，示例\n\n```\nmonitor.cron=0 0 0 1 1 ? *\n```\n\n## 六、安全\n\n默认是不开启安全认证的，若要开启请在application.properties文件中添加\n\n```properties\nmonitor.open=true\n```\n\n默认用户名/密码为admin，修改方法为\n\n```properties\nmonitor.username=admin\nmonitor.password=admin\n```\n\n## 七、MySQL\n\n内嵌H2数据库，有诸多限制，不过JMP提供MySQL数据库的支持。\n\n使用方法很简单，新建application.properties文本文件放在jar包目录下，修改下列参数即可，这样数据库就更换为了MySQL。\n\n```properties\nspring.datasource.driver-class-name=com.mysql.jdbc.Driver\nspring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true\u0026characterEncoding=utf-8\u0026useSSL=false\nspring.datasource.username=root\nspring.datasource.password=123456\nspring.jpa.hibernate.ddl-auto=update\n```\n\n## 八、监控参数\n\n- S0C：s0（from）的大小\n- S1C：s1（from）的大小\n- S0U：s0（from）已使用的空间\n- S1U：s1(from)已经使用的空间\n- EC：eden区的大小\n- EU：eden区已经使用的空间\n- OC：老年代大小\n- OU：老年代已经使用的空间\n- MC：元空间的大小（Metaspace）\n- MU：元空间已使用大小\n- CCSC：压缩类空间大小（compressed class space）\n- CCSU：压缩类空间已使用大小\n- YGC：新生代gc次数\n- YGCT：新生代gc耗时\n- FGC：Full gc次数\n- FGCT：Full gc耗时\n- GCT：gc总耗时\n- Loaded：表示载入了类的数量\n- Unloaded：表示卸载类的数量\n- Compiled：表示编译任务执行的次数\n- Failed：表示编译失败的次数\n- Total：线程总数\n- Runnable：正在运行的线程数\n- Sleeping：休眠的线程数\n- Waiting：等待的线程数\n\n**JavaMonitorPlus监控架构图**\n\n![图片加载中](./JavaMonitor/picture/20190317192605.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonblog%2Fjavamonitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonblog%2Fjavamonitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonblog%2Fjavamonitor/lists"}