导航:首页 > 编程语言 > java监控工具

java监控工具

发布时间:2025-07-23 02:34:24

A. 使用 JMX 监控和管理 java 程序

主题 JMX

本文讲解Java JMX技术的相关概念和实际应用。

本文章属于Java性能分析优化系列文章,点击话题可查看所有文章。

1. JMX是什么?

Java Management Extensions(JMX)是Java SE平台的标准功能,提供了一种简单且标准化的资源监控和管理方式。它定义了资源的结构和模式,主要用于监控和管理Java应用程序运行状态、设备和资源信息以及Java虚拟机运行情况。JMX的动态性使其能够在资源创建、安装、实现时进行动态监控和管理。JDK自带的jconsole就是基于JMX技术的监控工具。

在使用JMX技术时,通过定义一个MBean(或MXBean)的Java对象来表示要管理的资源,并将其注册到MBean Server,对外提供服务。MBean Server作为代理,负责对外提供服务和对内管理MBean资源,实现了资源管理和MBean Server的完全独立控制。

JMX不仅适用于本地管理,还通过JMX Remote API扩展了远程功能,使其能够通过网络远程监视和管理应用程序。

2. 为何使用JMX技术?

JMX技术为Java开发者提供了一种简单、灵活且标准化的资源监控方式,得益于其相对独立的架构设计,JMX能轻松集成到各种监控系统中。

JMX的具体优点包括:

3. JMX的技术架构

JMX架构由资源管理(MBean/MXBean)、资源代理(MBean Server)和远程管理(Remote API)组成。下图展示了三个模块之间的关系。

3.1. 资源管理MBean

资源管理是架构中的资源探测层(Probe Level),在JMX中,使用MBean或MXBean表示资源,访问和管理资源都通过MBean,MBean包含资源的属性和操作方法。

JMX已经为JVM提供了多维度资源检测,可以轻松启动JMX代理访问内置的JVM资源检测,从而实现远程监控和管理JVM。

以下是JMX对JVM资源检测类的示例代码。

运行后得到结果如下:

3.2. 资源代理MBean Server

MBean Server是MBean资源的代理,通过MBean Server可以实现MBean资源的远程管理。MBean资源和MBean Server通常在同一JVM中,但不是强制要求。

为了使MBean Server管理MBean资源,需要将资源注册到MBean Server。任何符合JMX规范的MBean资源都可以进行注册,MBean Server会暴露远程通信接口对外提供服务。

3.3. JMX远程管理

可以通过HTTP协议、SNMP协议、RMI远程调用协议等网络协议访问JMX API,JMX技术默认实现了RMI远程调用协议。

由于资源管理MBean的充分解耦,可以轻松将资源管理功能扩展到其他协议,如通过HTTP在网页端进行管理。

4. JMX的具体使用

在资源管理MBean部分已经展示了使用JMX获取JVM运行信息,那么如何自定义资源MBean呢?

下面通过一个例子,模拟一个内存资源MBean,最后实现远程管理。

4.1. 编写资源管理MBean

MBean的编写遵循JMX设计规范,MBean类似于特殊的Java Bean,需要接口和实现类。MBean资源接口以MBean或MXBean结尾,实现类以接口去掉MBean或MXBean后的名字命名。

编写一个内存资源管理MBean接口如下:

然后实现这个接口:

这样就完成了线程数量资源MBean的创建,其中total和used是资源属性,doMemoryInfo是资源操作方法。

4.2. 注册资源到MBean Server

通过上述JMX架构图,我们知道MBean资源需要注册到MBean Server进行代理才能暴露给外部调用。为了通过远程管理自定义的MyMemory资源,需要先进行资源代理。

启动后可以看到控制台每三秒打印我们自定义的内存信息。

不加任何JVM参数启动Java程序,JMX只能在当前机器访问,若要通过网络实现真正的远程访问,需要指定当前机器IP和开放端口。

4.3. 远程管理jconsole

jconsole是Java自带的基于JMX技术的监控管理工具,若已配置JDK环境变量,可通过控制台运行jconsole命令启动。

启动jconsole后列出当前机器上的Java进程,选择要监控的Java进程进行监控,连接后提示不安全的协议,原因是Java程序默认启动不配置HTTPS协议。

连接后可以看到多维度的JVM监控信息,这些信息通过读取JVM资源MBean信息获得。

在下面的页面展示了线程信息,注意最下面的线程信息,可以看到RMI TCP线程,这证明了JMX默认通过RMI协议进行远程管理。

在MBean页面可以浏览所有可管理的MBean信息,也可以看到我们自定义的com.wdbyte.jmx中的内存信息,甚至可以直接修改其中的used变量。

修改后控制台日志立即发生变化,已修改成功。

在操作中可以调用doMemoryInfo方法,调用后可以看到返回值中使用内存已从启动时的20MB更新为30MB。

以上代码示例存放在github.com/niumoo/JavaN...

当前系列:

---- E ND ----

分享一波面试资料,请点击链接加入群聊【马士兵官方java编程学】:

B. 必须要会的JVM性能监测工具(JVisualVM)

JVisualVM是Java开发者必须要掌握的JVM性能监测工具,其主要特点和功能如下:

综上所述,JVisualVM以其强大的功能和易用性,成为Java开发者在进行JVM性能监控和问题诊断时必不可少的工具。

C. Java开发者最有用的监控工具

Java 开发者最有用的监控工具如下:

Datadog

Datadog 是 SaaS 监测工具,针对 DevOps 团队,从 app 或者其他各种工具获取数据并提供数据可视化功能。它把从基础设备和软件采集的数据统一处理并存储。允许创建仪表盘和搜索访问提供的数据。

Ruxit

它由 Dynatrace 开发,Ruxit 是一个应用性能监控工具,它作用于 SaaS 模型。它通过 SaaS 提供不同的 APM 体验,并工作在高扩展性环境中。

Takipi

Takipi 告 知生产环境下的代码在什么时候、因什么原因而终止执行。它对所有错误进行检测,同时会给出出现错误时代码的位置和变量的状态。Takipi 是以 Java 代理的身份运行的,与任何日志文件无关,这样就会减少小于 %3 的 CPU 和 IO 运行花费。

阅读全文

与java监控工具相关的资料

热点内容
楚留香为什么没有服务器 浏览:733
服务器怎么用手机搭建 浏览:430
存储服务器如何挂载到服务器 浏览:376
编译安装pythondev 浏览:110
农信卡app密码忘记了怎么办 浏览:845
文明史pdf 浏览:587
妻友app苹果怎么下载 浏览:141
win10系统如何远程桌面连接到服务器 浏览:279
编译原理张晶是哪的人 浏览:271
资深程序员怎么做 浏览:401
程序员那么可爱三年前发生了什么 浏览:243
跑腿app源码上传 浏览:268
html5简单小游戏源码 浏览:22
在转转app怎么领福利 浏览:358
app的双重认证怎么解除 浏览:224
加密货币价格动荡的6个原因 浏览:183
站内搜索引擎源码 浏览:410
sqlite常用命令 浏览:106
算法导论第三版pdf中文 浏览:970
服务器如何分成多台的软件 浏览:778