searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

如何用JMX管理监控JAVA应用

2023-04-27 07:37:03
48
0

简述

JMX (Java Management Extensions)是一个Java平台的管理和监控 API。JMX可以帮助开发者构建管理应用程序、系统和网络服务的工具。JMX通常与Java EE一起使用,但也可以用于Java SE应用程序。

主要用途如下:

1. 监控应用程序的运行状态和相关统计信息。
2. 修改应用程序的配置(无需重启)。
3. 状态变化或出错时通知处理。

 

JMX的基础架构

 

Instrumentation

一系列的接口定义和描述如何开发MBean的规范。在JMX中MBean代表一个被管理的资源实例,通过MBean中暴露的方法和属性,外界可以获取被管理的资源的状态和操纵MBean的行为。

 

Agent

管理相应的资源,并且为远端用户提供访问的接口。该层的核心是MBeanServer,所有的MBean都要向它注册,才能被管理。注册在MBeanServer上的MBean并不直接和远程应用程序进行通信,他们通过协议适配器(Adapter)和连接器(Connector)进行通信。

 

Distributed

定义了一系列用来访问Agent的接口和组件,包括Adapter和Connector的描述。注意,Adapter 和Connector的区别在于:Adapter是使用某种Internet协议来与 Agent获得联系,Agent端会有一个对象 (Adapter)来处理有关协议的细节。比如SNMP Adapter和HTTP Adapter。而Connector则是使用类似RPC的方式来访问Agent,在Agent端和客户端都必须有这样一个对象来处理相应的请求与应答。比如RMI Connector。

 

入门

在这篇教程中,我们将学习如何使用 JMX 管理和监控Java应用程序。我们将使用Java MBeans来实现我们的演示。我们将使用VisualVM进行演示,这是Oracle提供的一个免费的Java应用程序监控和调试工具。

 

1. 下载和安装VisualVM

要使用VisualVM,您需要在 http://visualvm.github.io/ 上下载VisualVM。下载后,将它解压缩到您的程序目录下。然后,启动VisualVM:在bin子目录下找到VisualVM可执行文件,双击打开即可。VisualVM可以连接到远程系统或本地运行的Java应用程序。

2. 编写 JMX MBeans

JMX MBeans 是 Java Management Extensions 的核心内容。MBeans 是一种 Java 类,可以通过 JMX 接口注册到MBeanServer中。在这里,我们将编写一个简单的 MBeans,用于演示如何使用 JMX 管理应用程序。

我们将编写一个名为 SimpleService 的 MBeans。它将有两个操作:setMessage和getMessage。setMessage将新消息存储在 SimpleService 中,getMessage将返回已存储的消息。

下面是 SimpleService MBeans 的代码:

import javax.management.*;

public class SimpleService implements SimpleServiceMBean {
	private String message;

	public SimpleService() {
		this.message = "Hello, world!";
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public String getMessage() {
		return this.message;
	}

	public static void main(String[] args) throws Exception {
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        ObjectName name = new ObjectName("com.example:type=SimpleService");
        SimpleService mbean = new SimpleService();
        mbs.registerMBean(mbean, name);
        System.out.println("Waiting forever...");
        Thread.sleep(Long.MAX_VALUE);
    }
}

 

上面的代码创建了一个名为 SimpleService 的 MBeans,并将其注册到 JMX MBeanServer 中。在这里,我们使用 ManagementFactory.getPlatformMBeanServer() 方法获取 JMX MBeanServer 实例。我们还将我们的 MBeans 绑定到一个对象名称 "com.example:type=SimpleService",这个名称有一些特殊的格式要求,默认情况下,我们使用当前类名和类加载器来构造对象名称。

最后,我们在主方法中添加了一个无限循环,以便我们的 MBeans 可以一直运行。

以上代码需要一个名为 SimpleServiceMBean 的接口。这个接口是 MBeans 的标准命名规则。该接口应包含在 SimpleService.java 文件中。下面是 SimpleServiceMBean 接口:

public interface SimpleServiceMBean {
	public void setMessage(String message);
	public String getMessage();
}

 

3. 启动 MBeans 服务器

启动 SimpleService MBeans只需要运行 SimpleService.java 中的主方法。注意,当启动 MBeans 后,该应用程序将一直运行,因为我们已经添加了一个无限循环。在VisualVM中连接到已经运行的 SimpleService MBeans 一栏,你会看到名为 SimpleService 的MBeans。

 

4. 监控 MBeans

现在,我们已经创建了一个管理器,并将其注册到 MBeans 服务器中,现在我们要学习如何使用 JMX 监控我们的应用程序。

打开 VisualVM,可以看到运行的Java应用程序。在这里,我们将看到我们之前创建 SimpleService 的应用程序。

接下来,单击 SimpleService 应用程序,显示 SimpleService 的详细信息。您应该会看到“MBean”选项卡。单击它,我们会看到我们之前创建的 SimpleService MBean。

 

5. 修改 MBeans

现在我们有了一个 MBeans,并且已经学会如何对其进行监控。下面我们将演示如何修改 MBeans 值。

右键单击 SimpleService MBeans 并选择“Operations”选项。这里有两个操作:getMessage和setMessage。

单击 setMessage 操作。我们会看到 setMessage 操作的详细信息,包括从 MBeans 中传入的参数。在“Value”文本框中,输入一条新消息。

然后,单击“Invoke”按钮,修改消息。现在,如果单击 getMessage 操作,我们将看到新消息。消息已经被修改了。

 

6. 总结

在本教程中,我们介绍了 Java Management Extensions(JMX)。JMX 提供了 Java 应用程序管理和监控功能。我们了解了如何编写和使用 MBeans,以及如何使用 VisualVM 监控和修改 MBeans。

 

其他

如何使用VisualVm

打开Java VisualVm,从本地中,选择想要监控或者管理的JVM应用

打开Mbeans,即可管理注册到Mbeans服务器中的程序了

 

 

0条评论
作者已关闭评论
z****m
2文章数
0粉丝数
z****m
2 文章 | 0 粉丝
z****m
2文章数
0粉丝数
z****m
2 文章 | 0 粉丝
原创

如何用JMX管理监控JAVA应用

2023-04-27 07:37:03
48
0

简述

JMX (Java Management Extensions)是一个Java平台的管理和监控 API。JMX可以帮助开发者构建管理应用程序、系统和网络服务的工具。JMX通常与Java EE一起使用,但也可以用于Java SE应用程序。

主要用途如下:

1. 监控应用程序的运行状态和相关统计信息。
2. 修改应用程序的配置(无需重启)。
3. 状态变化或出错时通知处理。

 

JMX的基础架构

 

Instrumentation

一系列的接口定义和描述如何开发MBean的规范。在JMX中MBean代表一个被管理的资源实例,通过MBean中暴露的方法和属性,外界可以获取被管理的资源的状态和操纵MBean的行为。

 

Agent

管理相应的资源,并且为远端用户提供访问的接口。该层的核心是MBeanServer,所有的MBean都要向它注册,才能被管理。注册在MBeanServer上的MBean并不直接和远程应用程序进行通信,他们通过协议适配器(Adapter)和连接器(Connector)进行通信。

 

Distributed

定义了一系列用来访问Agent的接口和组件,包括Adapter和Connector的描述。注意,Adapter 和Connector的区别在于:Adapter是使用某种Internet协议来与 Agent获得联系,Agent端会有一个对象 (Adapter)来处理有关协议的细节。比如SNMP Adapter和HTTP Adapter。而Connector则是使用类似RPC的方式来访问Agent,在Agent端和客户端都必须有这样一个对象来处理相应的请求与应答。比如RMI Connector。

 

入门

在这篇教程中,我们将学习如何使用 JMX 管理和监控Java应用程序。我们将使用Java MBeans来实现我们的演示。我们将使用VisualVM进行演示,这是Oracle提供的一个免费的Java应用程序监控和调试工具。

 

1. 下载和安装VisualVM

要使用VisualVM,您需要在 http://visualvm.github.io/ 上下载VisualVM。下载后,将它解压缩到您的程序目录下。然后,启动VisualVM:在bin子目录下找到VisualVM可执行文件,双击打开即可。VisualVM可以连接到远程系统或本地运行的Java应用程序。

2. 编写 JMX MBeans

JMX MBeans 是 Java Management Extensions 的核心内容。MBeans 是一种 Java 类,可以通过 JMX 接口注册到MBeanServer中。在这里,我们将编写一个简单的 MBeans,用于演示如何使用 JMX 管理应用程序。

我们将编写一个名为 SimpleService 的 MBeans。它将有两个操作:setMessage和getMessage。setMessage将新消息存储在 SimpleService 中,getMessage将返回已存储的消息。

下面是 SimpleService MBeans 的代码:

import javax.management.*;

public class SimpleService implements SimpleServiceMBean {
	private String message;

	public SimpleService() {
		this.message = "Hello, world!";
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public String getMessage() {
		return this.message;
	}

	public static void main(String[] args) throws Exception {
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        ObjectName name = new ObjectName("com.example:type=SimpleService");
        SimpleService mbean = new SimpleService();
        mbs.registerMBean(mbean, name);
        System.out.println("Waiting forever...");
        Thread.sleep(Long.MAX_VALUE);
    }
}

 

上面的代码创建了一个名为 SimpleService 的 MBeans,并将其注册到 JMX MBeanServer 中。在这里,我们使用 ManagementFactory.getPlatformMBeanServer() 方法获取 JMX MBeanServer 实例。我们还将我们的 MBeans 绑定到一个对象名称 "com.example:type=SimpleService",这个名称有一些特殊的格式要求,默认情况下,我们使用当前类名和类加载器来构造对象名称。

最后,我们在主方法中添加了一个无限循环,以便我们的 MBeans 可以一直运行。

以上代码需要一个名为 SimpleServiceMBean 的接口。这个接口是 MBeans 的标准命名规则。该接口应包含在 SimpleService.java 文件中。下面是 SimpleServiceMBean 接口:

public interface SimpleServiceMBean {
	public void setMessage(String message);
	public String getMessage();
}

 

3. 启动 MBeans 服务器

启动 SimpleService MBeans只需要运行 SimpleService.java 中的主方法。注意,当启动 MBeans 后,该应用程序将一直运行,因为我们已经添加了一个无限循环。在VisualVM中连接到已经运行的 SimpleService MBeans 一栏,你会看到名为 SimpleService 的MBeans。

 

4. 监控 MBeans

现在,我们已经创建了一个管理器,并将其注册到 MBeans 服务器中,现在我们要学习如何使用 JMX 监控我们的应用程序。

打开 VisualVM,可以看到运行的Java应用程序。在这里,我们将看到我们之前创建 SimpleService 的应用程序。

接下来,单击 SimpleService 应用程序,显示 SimpleService 的详细信息。您应该会看到“MBean”选项卡。单击它,我们会看到我们之前创建的 SimpleService MBean。

 

5. 修改 MBeans

现在我们有了一个 MBeans,并且已经学会如何对其进行监控。下面我们将演示如何修改 MBeans 值。

右键单击 SimpleService MBeans 并选择“Operations”选项。这里有两个操作:getMessage和setMessage。

单击 setMessage 操作。我们会看到 setMessage 操作的详细信息,包括从 MBeans 中传入的参数。在“Value”文本框中,输入一条新消息。

然后,单击“Invoke”按钮,修改消息。现在,如果单击 getMessage 操作,我们将看到新消息。消息已经被修改了。

 

6. 总结

在本教程中,我们介绍了 Java Management Extensions(JMX)。JMX 提供了 Java 应用程序管理和监控功能。我们了解了如何编写和使用 MBeans,以及如何使用 VisualVM 监控和修改 MBeans。

 

其他

如何使用VisualVm

打开Java VisualVm,从本地中,选择想要监控或者管理的JVM应用

打开Mbeans,即可管理注册到Mbeans服务器中的程序了

 

 

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0