首页 > 其他分享 >无意间做了个 web 版的 JVM 监控端前后端分离 React+Spring Boot

无意间做了个 web 版的 JVM 监控端前后端分离 React+Spring Boot

时间:2023-06-30 19:44:21浏览次数:36  
标签:web JVM Spring ManagementFactory 获取 线程 内存 MBean

本来就是为了更多的了解 JMX,第一步就想把所有的 MBean 和属性都展示出来,开始在控制台输出,但是效果不好,内容太多太长,不够直观,然后就加了个 web 端的树形结构。然后做着做着突然发现,再稍微改改就能当个 web 版的简易监控端用了。

此工具只在 hotspot JVM 8 环境下测试过。可支持查看本地 JVM 和 远程 JVM 实时监控。

前端采用 React 16 + Antd + Yarn ,后端 Spring Boot + Java 1.8。具体使用方式可以到 github 仓库 README 页面查看。并且提供了一个在线预览版本,文末有源码地址和在线版本的使用方式。

 

支持本地 JVM 和远程 JVM 链接。

 

所有 MBean 的树形展示以及属性、操作的展示。

 

JVM 运行情况实时展示

实现的功能有如下几个方面:

1.所有 MBean 的展示;

2.系统信息的展示,包括内存使用、CPU 使用率等等;

3.JVM 参数,包括命令行参数和 systemProperties;

4.CPU 、Heap、Metaspace、类加载、线程的实时折线图;

5.垃圾收集器的种类和回收次数;

下面结合这几部分,说一下 JMX 的使用方式。

MBean 的获取

正如各种工具里的 MBean 的树形展示方式一样, MBean 本身就是以这种层级关系存在的。

MBean 包含在 Domain 里,Domain 相当于是一套独立的空间,这个空间里可以定义各种 type,各种 name 的 ObjectName。比如前一篇 JMX 文章里自定义的那个。

通过 ObjectName 可以获取到 MBean 的各种信息,包括属性、操作、通知。

有些属性是简单数据类型,比如 int、long、double、String 类型,另外有些是比较复杂的,比方说 com.sun.management:type=HotSpotDiagnostic 的属性 DiagnosticOptions 就是
javax.management.openmbean.CompositeData 类型。还有的属性的数据类型是 javax.management.openmbean.TabularData。这些都要单独处理。

 

常用的 MBean

有些指标是监控会用到的,比如内存、CPU、堆空间、线程、类加载情况相关的 MBean。

JDK 提供了一个 ManagementFactory,帮助我们方便的获取常用的 MBean。可以到 java.lang.management 包下找到这个类看一下注释和代码。

OperatingSystemMXBean

可以获取操作系统相关的信息,机器名称、内存使用、CPU使用等信息。

可通过
ManagementFactory.getOperatingSystemMXBean() 方式获取。

RuntimeMXBean

可以获取当前 JVM 的信息,包括 JVM 参数和 JVM 相关的系统参数。

可以通过
ManagementFactory.getRuntimeMXBean()方式获取。

MemoryMXBean

可以获取当前 JVM 的内存使用,包括堆内存和非堆内存。

可以通过
ManagementFactory.getMemoryMXBean()获取

ThreadMXBean

获取 JVM 线程使用情况,包括活动线程、守护线程、线程峰值等。

可以通过
ManagementFactory.getThreadMXBean() 获取。

ClassLoadingMXBean

获取 JVM 类加载情况,包括已加载类、未加载类等。

可以通过
ManagementFactory.getClassLoadingMXBean() 获取。

GarbageCollectorMXBean

获取 JVM 垃圾收集器的情况,包括使用的哪种垃圾收集器以及回收次数等等。

可以通过
ManagementFactory.getGarbageCollectorMXBeans() 获取,注意,这里获取到的是一个集合,因为垃圾收集器分为老年代和新生代两个。

除了以上几个常用的 MBean ,还有很多其他的。有些在 ManagementFactory 类里已提供了,另外还有很多需要自己通过 ObjectName 获取。

标签:web,JVM,Spring,ManagementFactory,获取,线程,内存,MBean
From: https://www.cnblogs.com/fcjedorfjoeij/p/17517687.html

相关文章

  • springboot整合dubbo
    导航了解dubbo引入依赖编写服务提供模块编写服务消费模块dubbo-admin安装源码github上参考了解dubbo后面被捐赠给了apache基金会,已经毕业了好像…官网:https://dubbo.apache.org/zh/docs/introduction/官网介绍的很详细了,具体见官网上面的信息.引入依赖可以参考官方文档:ht......
  • 一文让你轻松拿捏 Spring MVC
    博主介绍:✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌Java知识图谱点击链接:体系化学习Java(Java面试专题)......
  • 【面试必问】Spring核心之控制反转(IOC)
    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。......
  • 【面试必问】Spring核心之面向切面编程(AOP)
    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。......
  • springboot操作redis
    添加依赖<!--springboot操作redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 在ap......
  • IBM WebSphere MQ8.0 安装与队列创建
    最近接触的项目中使用了IBMWebsphereMQ8.x,由于要为其编写监控插件,所以在网上找了很久的资料,发现8.x实在是太老了,很多资源和教程都没有,遂决定在此统一整理和记录一下.安装下载安装包IBM官方已不再提供下载,这里贴一下网盘的链接链接:https://pan.baidu.com/s/1f2U0XqEe0hi......
  • SpringBoot elasticsearch 简单使用
    ElasticSearch是一个基于Lucene的搜索服务器,其实就是对Lucene进行封装,提供了RESTAPI的操作接口。ElasticSearch作为一个高度可拓展的开源全文搜索和分析引擎,可用于快速地对大数据进行存储,搜索和分析。ElasticSearch主要特点:分布式、高可用、异步写入、多API、面向文档。Elastic......
  • web自动化测试入门篇05——元素定位的配置管理
      ......
  • 【SpringBoot】RedisTemplate自动注入失败原因及解决方案
    报错:packagecom.example.springdataredisdemo;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.data.redis.co......
  • JS逆向实战19——通杀webpack逆向
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!网站aHR0cHM6Ly9mb2dhbmctbS5pdG91Y2h0di5jbi9tZWRpYURldGFpbC8zODc1Nw==aHR0cHM6Ly93d3cuZ205OS5jb20......