您在 Java 应用程序中使用 JMX 监视什么?
What do you monitor with JMX in Java application?
这个问题与 JMX 的工作原理或 JMX 的作用无关。据我所知,除了使用 JMX,我们还可以获得 OS 级别指标和 JVM 特定指标(例如:垃圾收集时间和频率、堆利用率等)
我的问题是在 Java 应用程序(内部指标)中可以使用 JMX 监控哪些方面?
在运行时间
监控您应用的状态
Java Management Extensions (JMX) 是您在自己的应用程序中嵌入代码 的标准方式,以便在 运行 时间报告应用程序的运行状态。
这种在更大的软件中嵌入报告代理(“探测器”)的方式被称为 “instrumenting” your code。 JMX 使您能够在 运行 时间显示这些静态信息的框架,因此您无需自己发明报告系统管道。在 运行 时间,您或您的系统管理员可以使用许多标准监控应用程序中的任何一个,有时称为“控制台”或“仪表板”。
JMX 负责将更新传输到监控应用程序,您无需进行任何额外的编程。监控应用程序不需要在本地,而是可以 运行 通过网络远程。您的系统管理员选择了哪个监控应用程序,以及他们选择 运行 它的位置,对您应用程序中的代码没有影响。 JMX 是一个缓冲区,一个间接层,将您的编译时代码与这些实际的 运行 时配置问题分开。
目的是提供一个control room like this,但是对于你的软件:
这里的主要优势是使用标准协议来报告状态,而不是您发明自己的协议。
应用服务器
如果您的应用程序是 Web 应用程序,那么您的 Jakarta EE 服务器或 Web 容器(例如 Tomcat 或 Jetty)可能会使用 JMX 进行检测。所以你可以监控它的操作。例如,您可以查看当前打开的用户会话。
JVM
一些 JVM 实现本身使用 JMX 进行检测,以报告 JVM 操作各个方面的状态。正如您提到的问题,其中一些报告可能与内存使用情况、垃圾收集器 activity 等有关。您系统管理员的监控应用程序可以同时监视 JVM 和您的应用程序,每个报告状态更新流。
操作系统
您的操作系统也可能会被检测以报告其内部操作,尽管不太可能使用 JMX。为此,一个强大的动态跟踪框架是 DTrace,内置于 macOS、FreeBSD 和 Solaris 中。
所以您的系统管理员可能正在监视她的监控应用程序上的所有四组状态信息:OS、JVM、应用程序服务器和您的应用程序。
阅读 the Wikipedia page 了解基本信息。
读写
JMX 不仅提供读取权限来监视当前状态,还提供写入权限。您选择的外部监控应用程序可用于以您在编程中选择的任何方式更改应用程序内的状态。例如,您可以更改线程池或缓存的大小。
继续我们在上面看到的控制室的比喻,您可以将通过 JMX 的读取访问视为查看控制室面板上的仪表。
将写访问视为转动这些面板上的旋钮、开关和滑块。
这个问题与 JMX 的工作原理或 JMX 的作用无关。据我所知,除了使用 JMX,我们还可以获得 OS 级别指标和 JVM 特定指标(例如:垃圾收集时间和频率、堆利用率等)
我的问题是在 Java 应用程序(内部指标)中可以使用 JMX 监控哪些方面?
在运行时间
监控您应用的状态Java Management Extensions (JMX) 是您在自己的应用程序中嵌入代码 的标准方式,以便在 运行 时间报告应用程序的运行状态。
这种在更大的软件中嵌入报告代理(“探测器”)的方式被称为 “instrumenting” your code。 JMX 使您能够在 运行 时间显示这些静态信息的框架,因此您无需自己发明报告系统管道。在 运行 时间,您或您的系统管理员可以使用许多标准监控应用程序中的任何一个,有时称为“控制台”或“仪表板”。
JMX 负责将更新传输到监控应用程序,您无需进行任何额外的编程。监控应用程序不需要在本地,而是可以 运行 通过网络远程。您的系统管理员选择了哪个监控应用程序,以及他们选择 运行 它的位置,对您应用程序中的代码没有影响。 JMX 是一个缓冲区,一个间接层,将您的编译时代码与这些实际的 运行 时配置问题分开。
目的是提供一个control room like this,但是对于你的软件:
这里的主要优势是使用标准协议来报告状态,而不是您发明自己的协议。
应用服务器
如果您的应用程序是 Web 应用程序,那么您的 Jakarta EE 服务器或 Web 容器(例如 Tomcat 或 Jetty)可能会使用 JMX 进行检测。所以你可以监控它的操作。例如,您可以查看当前打开的用户会话。
JVM
一些 JVM 实现本身使用 JMX 进行检测,以报告 JVM 操作各个方面的状态。正如您提到的问题,其中一些报告可能与内存使用情况、垃圾收集器 activity 等有关。您系统管理员的监控应用程序可以同时监视 JVM 和您的应用程序,每个报告状态更新流。
操作系统
您的操作系统也可能会被检测以报告其内部操作,尽管不太可能使用 JMX。为此,一个强大的动态跟踪框架是 DTrace,内置于 macOS、FreeBSD 和 Solaris 中。
所以您的系统管理员可能正在监视她的监控应用程序上的所有四组状态信息:OS、JVM、应用程序服务器和您的应用程序。
阅读 the Wikipedia page 了解基本信息。
读写
JMX 不仅提供读取权限来监视当前状态,还提供写入权限。您选择的外部监控应用程序可用于以您在编程中选择的任何方式更改应用程序内的状态。例如,您可以更改线程池或缓存的大小。
继续我们在上面看到的控制室的比喻,您可以将通过 JMX 的读取访问视为查看控制室面板上的仪表。
将写访问视为转动这些面板上的旋钮、开关和滑块。