【问题标题】:How should I monitor a web application on tomcat using JMX?我应该如何使用 JMX 监控 tomcat 上的 Web 应用程序?
【发布时间】:2009-08-17 12:23:03
【问题描述】:

我想使用 JMX 监控在 tomcat 下运行的 Web 应用程序。

我不想只使用 Tomcat 的内置 JMX 实现,我想为实际的 Web 应用程序实现一个 mbean,以便获取有关应用程序特定设置的信息并对其进行监控。

Web 应用程序和在线监控的问题在于,Web 应用程序并不总是处于活动状态,而是“唤醒”以处理服务器的请求,因此监控它们不仅仅是插入 JMX,就像我对正常运行的进程所做的那样。

如何让 Tomcat 在后台运行应用程序(像单例一样),以便我可以随时连接到它?

有没有一种常见但我不知道的方法?

谢谢!

【问题讨论】:

    标签: tomcat jmx


    【解决方案1】:

    在您的应用程序中,您需要在部署应用程序时向 MBean 服务器注册 MBean。在部署 Web 应用程序时,MBean 将被公开。我在 Tomcat 中使用了 Spring Framework JMX support 来执行此操作 - 但有一些方法可以在没有 Spring 的情况下执行此操作。

    【讨论】:

      【解决方案2】:

      您可以创建一个实现ServletContextListener 的类,然后在您的 web.xml 中加载该侦听器。

      班级:

      public class ServerListener implements ServletContextListener {
      
          public void contextDestroyed(ServletContextEvent pSce) {
          }
      
          public void contextInitialized(ServletContextEvent pSce) {
              // TODO Register MBean here.
          }
      }
      

      web.xml:

      <listener>
        <listener-class>com.example.ServerListener</listener-class>
      </listener>
      

      【讨论】:

      【解决方案3】:

      如果您熟悉 Nagios 并且您的公司正在使用它,那可能是更好的选择

      这些插件看起来很有帮助 https://exchange.nagios.org/directory/Plugins/Java-Applications-and-Servers/Apache-Tomcat

      正如@teabot 所说,使用 Spring JMX 支持。让它变得非常容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        • 2014-02-11
        • 1970-01-01
        • 1970-01-01
        • 2015-02-01
        相关资源
        最近更新 更多