一、基础监控与管理方法
systemctl命令管理Tomcat服务(启动/停止/重启/状态),例如sudo systemctl start tomcat、sudo systemctl status tomcat;通过ps -ef | grep tomcat查看Tomcat进程是否存在。top/htop(需安装,sudo apt install htop)实时查看Tomcat进程的CPU、内存占用;vmstat 1 5监控系统整体资源(CPU、内存、磁盘I/O);netstat -tulnp | grep 8080(或ss -tulnp | grep 8080)查看Tomcat端口(默认8080)的连接数及状态。/opt/tomcat/logs/(若自定义路径需调整),使用tail -f catalina.out实时查看实时日志;grep "ERROR" catalina.out过滤错误日志;less catalina.out查看历史日志。http://服务器IP:8080/manager/html,需提前配置tomcat-users.xml(位于/opt/tomcat/conf/)添加管理员角色和用户,例如:<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="StrongP@ssw0rd!" roles="manager-gui,admin-gui"/>
</tomcat-users>
登录后可查看应用状态、线程池、内存使用、部署的应用列表等。/opt/tomcat/bin/catalina.sh(或/etc/default/tomcat9),添加JMX配置:CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
重启Tomcat后,用jconsole(Java自带)或VisualVM连接localhost:9090,实时监控内存(堆/非堆)、线程、类加载、GC情况。http://localhost:8080/prometheus),然后在Grafana中导入Tomcat仪表盘(如ID: 6756),展示CPU、内存、线程池、请求响应时间等指标。javamelody.war到Tomcat的webapps/目录,访问http://服务器IP:8080/javamelody,无需额外配置即可监控应用的性能(如请求次数、响应时间、内存泄漏、SQL执行情况),支持导出报表。probe.war放入webapps/目录,访问http://服务器IP:8080/probe,提供轻量级的监控界面,包括线程池、内存、连接器状态、应用部署情况,适合快速排查问题。二、安全管理
tomcat),修改/opt/tomcat/conf/tomcat-users.xml分配最小必要权限(如manager-gui仅允许通过Web管理,admin-gui允许管理操作);设置Tomcat目录权限:sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
sudo chgrp -R tomcat /opt/tomcat
sudo chmod -R 755 /opt/tomcat/conf
sudo chown -R tomcat:tomcat /opt/tomcat/webapps/ /opt/tomcat/work/ /opt/tomcat/temp/ /opt/tomcat/logs/
server.xml中的默认端口(如将8080改为8443),避免扫描攻击;设置强密码(包含大小写字母、数字、特殊字符),禁用默认账户(如tomcat)。/opt/tomcat/webapps/ROOT/WEB-INF/web.xml,添加:<security-constraint>
<web-resource-collection>
<web-resource-name>Hide Version</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
防止通过HTTP头泄露Tomcat版本。三、性能优化与维护
CATALINA_OPTS参数,优化内存分配和垃圾回收,例如:CATALINA_OPTS="-Xms1024M -Xmx2048M -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
其中-Xms为初始堆大小,-Xmx为最大堆大小,-XX:+UseG1GC使用G1垃圾回收器(适合大内存应用)。server.xml中的<Connector>标签,调整线程池参数:<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="200" minSpareThreads="50" acceptCount="100"
compression="on" compressableMimeType="text/html,text/xml,text/css,text/javascript"/>
maxThreads为最大线程数(处理并发请求),minSpareThreads为最小空闲线程数(保持备用),acceptCount为等待队列长度(超过则拒绝请求)。Connector中添加compression="on"和compressableMimeType,减少网络传输量,提升页面加载速度。/opt/tomcat/conf/logging.properties,配置按天分割日志:handlers = 1catalina.org.apache.juli.FileHandler
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.suffix = .log
1catalina.org.apache.juli.FileHandler.rotatable = true
1catalina.org.apache.juli.FileHandler.maxDays = 7
自动删除7天前的日志,避免日志文件过大。四、自动化监控与告警
monitor_tomcat.sh,检查Tomcat进程是否运行,若未运行则重启:#!/bin/bash
if ! pgrep -f "tomcat" > /dev/null; then
echo "$(date): Tomcat is not running. Restarting..." >> /var/log/tomcat_monitor.log
sudo systemctl restart tomcat
fi
添加定时任务(crontab -e),每5分钟运行一次:*/5 * * * * /opt/tomcat/scripts/monitor_tomcat.sh