【问题标题】:What do you monitor with JMX in Java application?您在 Java 应用程序中使用 JMX 监控什么?
【发布时间】:2018-12-28 18:41:49
【问题描述】:

这个问题与 JMX 的工作原理或 JMX 的作用无关。据我所知,除了使用 JMX 之外,我们还可以获得操作系统级别的指标和 JVM 特定的指标(例如:垃圾收集时间和频率、堆利用率等)

我的问题是在 Java 应用程序中使用 JMX 可以监控哪些方面(内部指标)?

【问题讨论】:

  • 我很困惑; 这个问题与 JMX 的工作原理或 JMX 的作用无关,因此,如果您在询问 您使用 JMX 监控什么时不是在询问它的作用,那么是什么?你问? “你”是我个人吗?
  • 这个问题的答案似乎非常广泛 - 我已经很久没有做过任何 JMX,但我记得你可以监控任何你想要的东西 - 制定一个指标并公开它。

标签: java performance monitoring jmx


【解决方案1】:

在运行时监控应用的状态

Java Management Extensions (JMX) 是您在自己的应用中嵌入代码的标准方式,以便在运行时报告应用的操作状态。

将报告代理(“探针”)嵌入到更大的软件中称为“instrumenting” your code。 JMX 使您能够使用一个框架来在运行时显示这些静态信息,因此您无需自己发明该报告系统管道。在运行时,您或您的系统管理员可以使用许多标准监控应用程序中的任何一种,这些应用程序有时称为“控制台”或“仪表板”。

JMX 处理将更新传输到监控应用程序,而无需您进行任何额外的编程。监控应用程序不必是本地的,而是可以通过网络远程运行。您的系统管理员选择了哪个监控应用程序,以及他们选择在何处运行它,对您应用程序中的代码没有影响。 JMX 是一个缓冲区,一个间接层,将您的编译时代码与这些实际的运行时配置问题分开。

目的是提供control room之类的this,但是对于你的软件:

这里的主要优势是使用标准协议来报告状态,而不是您发明自己的协议。

应用服务器

如果您的应用是 Web 应用,那么您的 Jakarta EE 服务器或 Web 容器(例如 Tomcat 或 Jetty)可能会使用 JMX 进行检测。所以你可以监控它的操作。例如,您可以查看当前打开的用户会话。

JVM

一些JVM 实现本身使用 JMX 进行检测,以报告 JVM 操作的各个方面的状态。正如您的问题所提到的,其中一些报告可能是关于内存使用情况、垃圾收集器活动等的。您的系统管理员的监控应用程序可以同时监视 JVM 和您的应用程序,每个都报告状态更新流。

操作系统

您的操作系统也可能被检测为报告其内部操作,尽管不太可能使用 JMX。用于此目的的一个强大的动态跟踪框架是DTrace,它内置在 macOS、FreeBSD 和 Solaris 中。

因此,您的系统管理员可能正在监视她的监控应用程序的所有四组状态信息:操作系统、JVM、应用程序服务器和您的应用程序。

阅读the Wikipedia page了解基本信息。

读写

JMX 不仅提供读取访问以监控当前状态,还提供写入。您选择的外部监控应用程序可用于以您在编程中选择的任何方式更改应用程序中的状态。例如,您可以更改线程池或缓存的大小。

继续我们对上面看到的控制室的比喻,您可以将通过 JMX 进行的读取访问视为观看控制室面板上的仪表。

将写入访问视为转动这些面板上的旋钮、开关和滑块。

【讨论】:

  • 谢谢先生!真的很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 2011-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多