服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

MC4J远程监测Tomcat集群-JMX助Tomcat1(图)


发布日期:2020年11月05日
 
MC4J远程监测Tomcat集群-JMX助Tomcat1(图)

摘要

最新版本的Tomcat()采用Java管理扩展(JMX)管理beans(managed beans)技术实现了对servlet容器的管理其中包括监测所有的集群(cluster)元素和session复制情况本文探讨了Tomcat对集群和session复制的支持作者Srini Penchikala介绍了所有能用MBeans API监测的Tomcat集群组件他还通过一个运行在集群上的Web应用示例展示了如何监测集群的细节和session复制以及用JMX控制台显示服务器的统计数据(原文日发表)

JSE在监测和管理方面的支持很全面拥有对Java平台及运行于其上的应用进行远程监测能力JSE 中包含了Java管理扩展(JMX)远程监测技术这是对JVM监控能力的一个新的补充Java规范第号需求是JMX远程监测规范它是关于远程访问机制的为基于JMX的代理制定了一套远程客户端API

Tomcat 在设计上借助了JSE 内建的JMX技术版(由Tomcat 发展而来)实现了最新的Servlet () 规范和JavaServer Pages ()规范并对Tomcat服务器架构在很大程度上做了重新设计和组合它运行更加稳定与Tomcat x相比性能伸缩性可靠性JMX监测集成的session集群和应用部署等方面都有了提高

有了最新版的Tomcat和JSE 的JMX技术我们就可以通过JMX来使用servlet容器的属性和方法同时减少与JMX相关的复杂编码我在本文中将介绍如何在启动Tomcat servlet容器时启用远程JMX监测以及一个运行在有session复制功能的Tomcat集群上的Web应用示例最后我们用JMX客户端查看集群元素和HTTP session的细节不过在我们深入探讨远程JMX监测之前还是先看一下构成Tomcat集群的组件类

集群元素

一个Tomcat集群由六个主要的组件构成cluster(集群)membership(成员)sender(发送者)receiver(接收者)replication valve(复制阀)和deployer(部署者)

说明了Tomcat中的每个组件是如何完成集群和session复制工作的

Tomcat集群元素

有关集群元素的详细说明参见Tomcat 的集群文档

Tomcat 在集群session复制服务器监测和管理方面相对以前的版本(Tomcat )做了一些改进在Tomcat 中几个服务器组件(如hostengine和service)可用MBeans来监测而在Tomcat 中Yoav ShapiraFilip Hanik和其他的Tomcat开发者为监测集群元素编写了JMX实现

既然我们已经了解了每个Tomcat集群元素的功能接下来让我们看看各种连接Tomcat服务器集群和监测集群情况的JMX客户端工具

JMX客户端

JMX客户端是一个用来连接JMX代理(运行在本地或远程)的图形化用户界面(客户机/服务器或瘦客户端)理想的JMX客户端具备以下特点能够有效地监测应用服务器而不为其带来额外的负担

对系统和网络资源的低占用

能保持系统的稳定和性能

少量的或无需特别设置(即使需要设置也是简单明了而不是编程方式的)

可提供良好的报告

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

除了这两个工具还有几个第三方开源JMX客户端应用程序(本文的资源部分有与之相关的链接)

XMOJO

jManage

MXJ

Spring JMX

JMXHTML适配器

MCJ JMX控制台

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

用MCJ实现JMX远程监测与管理

MCJ控制台提供了以下功能

以树状方式显示MBeans的属性操作和通知

设置MBeans属性值

执行MBeans操作

连接多个JEE应用服务器

图形化显示MBeans属性

我在本文的示例中用的是MCJ Beta 安装MCJ可从SourceForge下载可执行文件(MCJbWindowsexe)然后双击该文件进行安装安装过程中会提示选择JDK宿主目录和MCJ安装目录(本文是安装在c:\dev\tools目录下)

为JMX设置系统属性

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

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

设置密码文件非常重要特别是在多用户的环境下我按以下步骤在JAVA_HOME/lib/management目录下建立密码文件

用密码模板文件(文件名jmxremotepasswordtemplate)拷贝出一个名为jmxremotepassword的新文件

将密码文件的文件权限设置为只有你能读写

为角色设置密码如monitorRole 和controlRole

当启动JVM时系统属性已经设置成表的样子

Tomcat集群的配置

我采用Tomcat 组建Tomcat集群本文使用的服务器集群由两个Tomcat实例组成它们共享session状态通过负载均衡在集群节点间分配处理请求我的集群配置用到了SimpleTcpCluster 和 DeltaManager选项(使用默认值)在我的系列文章Tomcat的集群与负载均衡年)中对集群的组建有更详细的阐述

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

set JAVA_OPTS=%JAVA_OPTS% Dcomsunmanagementjmxremoteport=

注意你在对第二个Tomcat实例的jmxremote端口设置时必须指定不同的端口(

给出了集群的拓扑细节

Tomcat集群架构示意图

列出了组建Tomcat集群所需的各项配置参数

集群配置详细说明

上一篇:tomcat 禁止列出目录

下一篇:实例讲解配置之——TOMCAT集群配置