接入JMX中的Mbean监控
什么是jmx
JMX(Java Management Extensions)是一个为Java应用程序植入管理功能的框架。它允许开发者通过动态地把管理的属性和操作分配给Java对象,从而把他们的应用程序和存在的网络管理软件集成在一起。JMX为Java开发者定义了一个方法,使得开发者能够将独立的Java管理模块集成到存在的管理系统中。这种集成使得Java应用程序能够被有效地监控和管理,从而提高了系统的可管理性和可维护性。
Mbean
是被jmx管理的资源,分为四类–
类型 | 描述 |
---|---|
standard MBean | 简单标准化资源管理,只可管理接口中定义的属性。并且类名后缀必须是Mbean |
dynamic MBean | 实现DynamicMBean接口,允许在运行时动态地确定其属性和操作 |
open MBean | 属性和操作参数的类型和返回值是使用预定义的 Java 类的小集合构建的 |
model MBean | 实现了ModelMBean接口,拥有dynamic MBean的特性并且有额外特性 |
样例
package com.grant.jmx;
import lombok.extern.slf4j.Slf4j;
import org.springframework.jmx.export.annotation.ManagedResource;
import org.springframework.stereotype.Service;
/**
* Created with IntelliJ IDEA.
*
* @Author:Grant
* @Description:
* @Date: 2024/07/17/10:45
*/
@ManagedResource(objectName = "com.grant.jmx:type=JmxService", description = "My Service MBean")
@Service
@Slf4j
public class JmxService {
public void doSomething() {
log.info("get jmx remoting");
}
public String getStatus() {
// 返回状态信息
return "Service is running";
}
}
package com.grant.jmx;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jmx.export.MBeanExporter;
import java.util.HashMap;
import java.util.Map;
/**
* Created with IntelliJ IDEA.
*
* @Author:Grant
* @Description:
* @Date: 2024/07/17/10:50
*/
@Configuration
public class jmxConfig {
@Bean
public MBeanExporter mbeanExporter() {
MBeanExporter exporter = new MBeanExporter();
Map<String, Object> beans = new HashMap<>();
beans.put("com.grant.jmx:type=MyService", myService());
exporter.setBeans(beans);
return exporter;
}
@Bean
public JmxService myService() {
return new JmxService();
}
}