【问题标题】:Monitoring a Java web application - is JMX the right choice?监控 Java Web 应用程序 - JMX 是正确的选择吗?
【发布时间】:2011-01-02 16:30:03
【问题描述】:

我们有一个 Java Web 应用程序,我们想设置一些基本的监控,以期在未来扩展这种监控。我们的计划如下:

(1) 收集有关运行应用程序的 Web 容器的虚拟机的通用信息(例如内存和线程)。

(2) 监控应用程序的“状态”。这是相当模糊的,但至少我们想看看 Web 应用程序是否还活着并且可以响应请求。

(3) 未来我们希望收集更多特定于我们应用程序的信息。同样,这相当模糊,但您可以假设我们可能希望将应用程序内部收集的某些统计信息提供给支持人员。

通常,Web 应用程序将部署在 Tomcat 5.5 或 6 环境中。在网上快速搜索一下,可以看到可以为 Tomcat 启用 JMX,然后可以使用 JConsole 连接到服务器。这为我们提供了许多解决第 (1) 点的基本信息。此外,“Catalina”的 MBeans 部分中提供了一些信息,对此我至少可以深入了解,例如,查看特定 servlet 收到了多少请求。这不是我们想要的第 (2) 点,但至少给了我们一些信息。那里似乎有很多信息,但使用 JConsole 很难解释。也许有更好的工具来解释 Tomcat 公开的 MBean。

对于第 (3) 点,乍一看似乎我们可以编写自己的 MBean,然后将它们提供给 JConsole 之类的东西。就个人而言,这将涉及我学习 JMX,我很乐意这样做,但我有一个顾虑。环顾四周后,我注意到大多数关于该主题的教科书已经好几年没有更新了,而且开源工具似乎在没有最近更新的情况下逐渐衰弱。所以我的主要问题是一个简单的问题。您对 JMX 有什么看法?它有未来还是/已经被其他东西取代了?鉴于我们已经有了 Web 应用程序,但我们是从头开始管理控制台,我们应该选择 JMX 还是有更合适的、未来更美好的东西?

我问这个问题没有任何个人意见,我只是想听听您的意见和经验。我确信没有一个正确的答案,但我认为知情的讨论会很有用。

提前致谢,

亚当。

【问题讨论】:

    标签: java web-applications tomcat monitoring jmx


    【解决方案1】:

    如果适用于您的情况(Java 6 更新 10 JDK 或更高版本,以及在同一台机器上),那么请考虑使用 jvisualvm,因为它可以比 JConsole 挖掘得更深。

    您可能会发现,最简单的方法是让 jvisualvm 了解您的应用程序的插件

    【讨论】:

    • JVisualVM 听起来是个好主意。我认为 JDK 6 的要求仅在运行 JVisualVM 的本地机器上,不适用于 Web 应用程序容器的 JVM。鉴于我的观点(2),您是否知道 JVisualVM 的插件可以更轻松地阅读 Tomcat 提供的基本 MBean 信息?
    • 如果您可以在与容器相同的主机上运行 visualvm,您的生活将会轻松得多,因为这允许访问未准备好的 JVM。但是,您可以在启动时使用适当的咒语对 JVM 进行远程访问。 Java 6 效果最好。关于 JMX,使用 Tools->Plugins 添加 VisualVM-MBeans 插件(我最近没有测试过,但它工作了一段时间)。
    • 谢谢。我已经尝试过 VisualVM-MBeans 插件,它似乎给出了与 JConsole 给出的 MBean 基本相同的视图(当然,这总比没有好)。有人知道 Tomcat 特有的插件吗?
    • @ThorbjørnRavnAndersen “如果您可以在与容器相同的主机上运行 visualvm,您的生活将会轻松得多,因为这允许访问未准备好的 JVM。”它实际上不会减慢速度吗?我认为远程分析非常有用,因为分析器本身可能需要大量时间,这会增加总时间。您所说的“未准备好的 JVM”和“对 JVM 的咒语”到底是什么意思?
    • @Geek 大多数调试和分析 Java 技术都需要以特定方式启动 JVM。您不能(还)在已启动的 JVM 上启用调试。 JVisualVM 可以附加到 running 程序并对其进行分析 - 非常有帮助。
    【解决方案2】:

    JMX 在这里无疑是一个很好的解决方案。我不会担心它会萎靡不振。我工作过的大多数企业最近都使用(或计划使用)JMX,在选择 Java 世界中的其他东西之前,我必须听到一个非常有说服力的论点。为它编写客户端(监控解决方案)很容易,并且您确实可以非常轻松地返回复杂的数据。大多数第 3 方组件也支持通过 JMX 进行监控。

    请注意,您可能还需要考虑与任何现有管理解决方案(例如 Nagios、BNC Patrol、HP Openview 等)集成。他们可能不太了解 Java,但更喜欢使用简单的 HTTP 连接等测试来测试网站是否已启动(使用 Nagios 很容易),或者使用 SNMP 进行集成(Openview 原生支持)。

    【讨论】:

    • 谢谢。很高兴听到您对 JMX 未来的积极看法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    相关资源
    最近更新 更多