JMX监控Manager的Tomcat进程

举报
小霸王 发表于 2022/10/12 15:17:35 2022/10/12
【摘要】 FusionInsight Manager的WEB UI运行在Tomcat上,Manager作为MRS的集群管理界面,其重要性不言而喻,一旦Tomcat出现故障,管理界面将不可用。因此监控Tomcat的JVM进程是有必要的,当再次出现类似的Tomcat异常情况时可以提前预知。Manager作为MRS集群的监控,自身的进程并没有可视化的监控界面。本文介绍一种通过JMX方式监控Tomcat进程。

FusionInsight ManagerWEB UI运行在Tomcat上,Manager作为MRS的集群管理界面,其重要性不言而喻,一旦Tomcat出现故障,管理界面将不可用。虽然Manager自身有恢复机制,当Tomcat进程异常挂掉后,OMS会尝试将其再次拉起;当尝试多次后,若Tomcat仍处于异常状态则会触发OMS主备倒换,备OMS升为主,此时将启动备OMS节点上的Tomcat进程。

Manager自身的恢复机制可以确保Tomcat异常后快速恢复,但在实际现网使用过程中遇到过调用Manager REST API过多使Tomcat进程一直处于异常状态。该问题根本原因在于调用REST API时未使用Cookie,每个REST请求都会创建一个新的Session,最终导致Tomcat堆内存中存在大量Session对象不能及时释放,堆内存溢出。此场景中,虽然Manager能够重新拉起Tomcat进程,但很快大量的REST请求又再次将Tomcat堆内存占满,导致Manager管理界面长时间不可用。该问题解决方法是调整Manager REST API的调用方法及频次,同时将Tomcat堆内存增大。

因此,监控TomcatJVM进程是有必要的,当再次出现类似的Tomcat异常情况时可以提前预知。Manager作为MRS集群的监控,自身的进程并没有可视化的监控界面。下面介绍一种通过JMX方式监控Tomcat进程的方法。

 

一、登录主OMS节点,修改ManagerTomcat启动脚本,添加JMX参数。

su - omm
cd $OM_TOMCAT_HOME/bin
vim catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=xx.xx.x.xx -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=$OM_TOMCAT_HOME/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=$OM_TOMCAT_HOME/conf/jmxremote.access"

-Djava.rmi.server.hostname:监控Tomcat所在服务器的IP地址(即该脚本所在节点的管理平面IP地址)

-Dcom.sun.management.jmxremote.port:要开启的JMX监控端口号(选择一个未被占用且JMX监控应用可通的端口)

-Dcom.sun.management.jmxremote.ssl:是否要开启ssl连接

-Dcom.sun.management.jmxremote.authenticate:是否开启用户密码认证

-Dcom.sun.management.jmxremote.password.file:权限文件路径(jmxremote.authenticatefalse时不需要配置该参数)

-Dcom.sun.management.jmxremote.access.file:密码文件路径(jmxremote.authenticatefalse时不需要配置该参数)

二、拷贝Java目录下的access文件及jmxremote.password.template文件至Tomcatconf目录, jmxremote.password.template重命名为jmxremote.password,修改文件权限为600

cd $JAVA_HOME/jre/lib/management
cp jmxremote.access jmxremote.password.template $OM_TOMCAT_HOME/conf
cd $OM_TOMCAT_HOME/conf
chmod 600 jmxremote.access
chmod 600 jmxremote.password.template
mv jmxremote.password.template jmxremote.password

三、编辑jmxremote.access文件、jmxremote.password文件。

vim jmxremote.access

jmxremote.access文件内容如下, monitorRole为只读角色,controllRole为高级角色,具有读写权限。

vim jmxremote. password

jmxremote.password文件内容如下,monitorRole的密码设置为Admin12!

四、重启Tomcat进程。

cd $OM_TOMCAT_HOME/bin
./shutdown.sh
./startup.sh

查看Tomcat进程已重新启动,且JMX参数已添加。

ps -ef | grep tomcat

五、登录备OMS节点,重复步骤一到三。

六、使用JMX监控工具监控TomcatJVM进程,如JDK自带的jconsole工具(在JAVA_HOMEbin目录下)。

建立远程JMX连接,输入Tomcat进程的IP地址及配置的JMX端口,输入用户名及密码。

创建JMX连接成功,可以监控到Tomcat的JVM进程了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。