基于JMX,用MC4j远程监控Tomcat

最新版本的Tomcat 5.5.9以上采用Java管理扩展(JMX)管理beans(managed beans)技术实现了对servlet容器的管理,其中包括监测所有的集群(cluster)元素和session复制情况。
      而J2SE5.0在监测和管理方面的支持很全面,拥有对Java平台及运行于其上的应用进行远程监测能力。J2SE 5.0中包含了Java管理扩展(JMX)远程监测技术,这是对JVM监控能力的一个新的补充。
      有了最新版的Tomcat和J2SE 5.0的JMX技术,我们就可以通过JMX来使用servlet容器的属性和方法,同时减少与JMX相关的复杂编码。我在本文中将简单介绍如何在启动Tomcat servlet容器时启用远程JMX监测。

一、JMX 客户端

       JMX客户端是一个用来连接JMX代理(运行在本地或远程)的图形化用户界面(客户机/服务器或瘦客户端)。理想的JMX客户端具备以下特点,能够有效地监测应用服务器而不为其带来额外的负担:
---对系统和网络资源的低占用
---能保持系统的稳定和性能
---少量的或无需特别设置(即使需要设置,也是简单明了而不是编程方式的)
---可提供良好的报告

       J2SE 5.0附带了一个称为Jconsole的JMX客户端工具,可用来查看JVM运行时的详细情况。Tomcat的安装中包含了一个叫做JMXProxyServlet的JMX servlet,可用来查看、更新Tomcat MBeans的属性。它是一个能查看、操作运行于Tomcat容器中的MBeans的轻量级代理,通过与命令行脚本共同作用来监测和改变Tomcat的内部运行。

除了这两个工具,还有几个第三方开源JMX客户端应用程序:
---XMOJO
---jManage
---MX4J
---Spring JMX
---JMX-HTML适配器
---MC4J JMX控制台

在本文中我将介绍如何安装和配置MC4J,远程连接到Tomcat Servlet容器,以及监测服务器集群所有的MBeans组件。

二、配置 J2SE 5.0 JMX 环境:

        为JMX设置系统属性
        只有对一些系统属性进行设置后才能使用JMX远程监测,这些属性由一个在JAVA_HOME/lib/management目录下名为management.properties的属性文件设定。表2给出了启用JXM监测所必须设定的属性。

表2 启用JMX监测所需的系统属性

属性名
com.sun.management.jmxremote.port 9393
com.sun.management.jmxremote.ssl false
com.sun.management.jmxremote.authenticate true
com.sun.management.jmxremote.password.file JAVA_HOME/jre/lib/management/jmxremote.password
com.sun.management.jmxremote.access.file JAVA_HOME/jre/lib/management/jmxremote.access


        设置密码文件非常重要,特别是在多用户的环境下。我按以下步骤在JAVA_HOME/lib/management目录下建立密码文件:
---用密码模板文件(文件名jmxremote.password.template)拷贝出一个名为jmxremote.password的新文件
---将密码文件的文件权限设置为只有你能读写
---为角色设置密码,如monitorRole 和controlRole
---当启动JVM时系统属性已经设置成表2的样子

三、设置 Tomcat 启动参数:

        为了能够在启动Tomcat服务器时启用远程JMX监测,要对位于CATALINA_HOME/bin目录下的 Tomcat启动脚本(catalina.bat 或catalina.sh)做如下修改:

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=9393

四、用MC4J实现JMX远程监测与管理   

MC4J控制台提供了以下功能:
---以树状方式显示MBeans的属性、操作和通知
---设置MBeans属性值
---执行MBeans操作
---连接多个J2EE应用服务器
---图形化显示MBeans属性

         我在本文的示例中用的是MC4J 1.2 Beta 9。安装MC4J可从SourceForge下载可执行文件(MC4J-12b9-Windows.exe),然后双击该文件进行安装,安装过程中会提示选择JDK宿主目录(请选择J2SE 5.0的安装路径,J2SE才全面支持JMX)和MC4J安装目录(本文是安装在c:\dev\tools目录下)。

       双击可执行文件(C:\dev\tools\mc4j\MC4J Console 1.2b9.exe)启动MC4J。

       控制台启动后,创建一个新的连接绑定到JMX服务器上。用Management菜单的Create Server Connection选项新建一个连接,命名为Tomcat-5.5.9-instance1,该连接的设置如表4所示:
表4 MC4J的Tomcat连接设置:

属性名
Name tomcat5.5
Initial Context Factory com.sun.jndi.rmi.registry.RegistryContextFactory
Servet URL service:jmx:rmi:///jndi/rmi://localhost:9393/jmxrmi
Principle monitorRole
Credentials QED

注意:你需要在classPathEntries参数中指定catalina.jar、catalina-cluster.jar和 catalina-optional.jar文件(位于%CATALINA_HOME%\server\lib\目录下)。

当Tomcat服务器群启用了远程JMX,再配置的MC4J,那么MC4J就可以连接到Tomcat的JMX 了。

五、小结

      在本文中你看到了如何运用JMX MBeans技术以及在JMX控制台(MC4J)的帮助下从远程监测Tomcat服务器),你会发现用J2SE 5.0提供的JMX技术监测J2EE应用服务器(或者servlet容器)是多么的方便和强大。

        有了远程JMX技术,开发者可以监测他们在服务器上的应用程序,发现J2EE应用中需要调整和优化的瓶颈,从而改善应用的性能和伸缩性。网管可以看到服务器的统计数字,如CPU使用率、线程数、内存使用率,以评估当前和未来的负载量需求。运营部门可以通过远程JMX监测来检查服务器状态和阀值溢出警报,提前发现任何与服务器有关的问题。

        在使用JMX监测应用服务器时安全是另一个要考虑的重要因素,特别是在产品环境下。比如必须通过安全可控的方式(使用用户名、密码)访问JMX控制台,只允许经过授权的用户访问、查看和修改MBeans的属性和操作。系统管理员应当在服务器监测控制台上对MBeans属性和操作级别的访问进行细粒度的控制,还要将所有的基于JMX访问用户的活动记录到日志文件中供以后的报告和审计之用。

        JMX客户端为远程绑定到各种应用服务器、监测服务器状态以及运行于这些服务器之上的应用提供了一个集中的监测控制台。在企业对其所有的服务器和应用进行生命期管理方面,远程JMX监测是个相当不错的解决方案。

你可能感兴趣的:(tomcat,应用服务器,J2SE,网络应用,企业应用)