一、JMX介绍
1、简介
JMX的全称为Java Management Extensions,是管理Java的一种扩展。这种机制可以方便的管理正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。
2、架构图
Instrumentation层:
该层定义了如何实现JMX管理资源的规范。一个JMX管理资源可以是一个Java应用、一个服务或一个设备,它们可以用Java开发,或者至少能用Java进行包装,并且能被置入JMX框架中,从而成为JMX的一个管理构件(Managed Bean),简称MBean。管理构件可以是标准的,也可以是动态的,标准的管理构件遵从JavaBeans构件的设计模式;动态的管理构件遵从特定的接口,提供了更大的灵活性。
Standard MBean是最简单的MBean,它管理的资源必须定义在接口中,然后MBean必须实现这个接口。
二、创建一个简单的MBean
1、创建JmxHelloWorldBean
package com.ssm.TaskManagementServer.domain.model.JMXBean;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedResource;
import org.springframework.stereotype.Component;
/**
* @author wang_meng
* 简单JMX样例
*/
@Component
@ManagedResource(
objectName = "com.xxx.jmx:type=JmxHelloWorldBean",
description = "简单JMX样例"
)
public class JmxHelloWorldBean {
private long count;
public JmxHelloWorldBean() {
this.count = 0;
}
public void add() {
this.count++;
}
/**
* 暴露属性
*/
@ManagedAttribute(description = "count")
public long getCount() {
return count;
}
}
2、写一个测试函数
@Autowired
private JmxHelloWorldBean jmxHelloWorldBean;
@RequestMapping(value = "/testAddJmxHelloWorldBeam",method = RequestMethod.POST)
public void testAddJmxHelloWorldBeam(){
this.jmxHelloWorldBean.add();
}
三、检测效果
1、打开JConsole
使用Win+R,打开运行,执行cmd命令,打开cmd命令窗口,输入JConsole。打开如下窗口。
选择刚在本地启动的进程,执行连接。(若安全连接失败可使用非安全连接)
连接成功后如下图
点击MBean栏目,在左侧展开中选择com.xxx.jmx(前文中设置的),即可看到该Bean的属性值。
2、使用Postman调用该接口,并刷新JConsole。
到此,以实现了监控计数的功能。
四、后续
实现了JMX监控之后,可使用jmx-exporter来获取JMX监控数据。
再通过jmx-exporter+Prometheus+Grafana来实现面板监控。得到下图所示效果。
可参考该文章
https://blog.csdn.net/qq_36109069/article/details/104746297