在Linux系统(如CentOS、Ubuntu)中,监控Tomcat状态可通过命令行工具、脚本自动化、图形化工具或专业监控方案实现,覆盖从基础状态检查到深度性能分析的需求。以下是具体方法:
① 检查Tomcat进程状态
使用ps命令结合grep过滤Tomcat进程,确认Tomcat是否在运行:
ps -ef | grep tomcat | grep -v 'grep'
若输出包含Tomcat进程ID(PID)及启动命令,则表示进程正在运行。
② 检查Tomcat监听端口
Tomcat默认监听8080端口(可通过server.xml修改),使用netstat或ss命令验证端口是否处于监听状态:
sudo netstat -tulnp | grep 8080 # 或使用 ss -tulnp | grep 8080
若输出中包含LISTEN状态及Tomcat进程ID,则端口正常。
③ 测试Tomcat服务响应
通过curl命令发送HTTP请求,检查Tomcat是否返回正常响应(状态码200表示成功):
curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/
若返回200,则说明Tomcat服务正常;若返回404或500,需检查应用部署或配置。
④ 实时监控资源使用
使用top或htop命令实时查看Tomcat进程的CPU、内存占用情况:
top -p $(pgrep -f tomcat) # 或 htop -p $(pgrep -f tomcat)
重点关注%CPU、%MEM列,判断资源消耗是否异常。
Tomcat的日志文件(默认位于logs/catalina.out)记录了运行时的详细信息(如启动错误、请求处理异常)。使用tail命令实时查看最新日志:
tail -f /path/to/tomcat/logs/catalina.out
通过日志可快速定位故障原因(如端口冲突、应用部署失败)。
JMX(Java Management Extensions)是Java标准管理API,可监控Tomcat的JVM内存、线程池、连接池等深度指标。
① 启用JMX
编辑Tomcat启动脚本catalina.sh(位于bin目录),添加以下JVM参数:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
注意:生产环境建议开启ssl和authenticate(需配置用户名/密码)。
② 使用JConsole/VisualVM连接
jconsole命令,在“远程进程”中输入localhost:9090,点击“连接”即可查看JVM内存、线程、类加载等指标。apt install visualvm(Ubuntu)或yum install visualvm(CentOS)安装,添加远程主机后连接,支持性能分析、抽样器等功能。通过Shell脚本定期检查Tomcat状态,若异常则自动重启,并记录日志。
示例脚本monitor.sh:
#!/bin/bash
TOMCAT_PID=$(ps -ef | grep tomcat | grep -w 'tomcat' | grep -v 'grep' | awk '{print $2}')
TOMCAT_START="/path/to/tomcat/bin/startup.sh"
TOMCAT_CACHE="/path/to/tomcat/work"
WEB_URL="http://localhost:8080"
if [ -z "$TOMCAT_PID" ]; then
echo "$(date): Tomcat进程不存在,启动Tomcat..." >> /tmp/tomcat_monitor.log
rm -rf $TOMCAT_CACHE # 清理缓存
$TOMCAT_START
else
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -m 10 --connect-timeout 10 $WEB_URL)
if [ "$HTTP_CODE" -ne 200 ]; then
echo "$(date): Tomcat页面访问异常(状态码:$HTTP_CODE),重启Tomcat..." >> /tmp/tomcat_monitor.log
kill -9 $TOMCAT_PID
rm -rf $TOMCAT_CACHE
$TOMCAT_START
else
echo "$(date): Tomcat运行正常" >> /tmp/tomcat_monitor.log
fi
fi
设置定时任务:通过crontab -e添加每分钟执行一次的任务:
* * * * * /bin/bash /path/to/monitor.sh
赋予执行权限:
chmod +x /path/to/monitor.sh
① Prometheus + Grafana
jmx_prometheus_javaagent并配置config.yaml(定义要采集的指标)。catalina.sh,添加JMX Exporter启动参数:CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/jmx_prometheus_javaagent-0.16.1.jar=9091:/path/to/config.yaml"
prometheus.yml),添加Tomcat抓取任务:scrape_configs:
- job_name: 'tomcat'
static_configs:
- targets: ['localhost:9091']
② Zabbix
企业级监控解决方案,支持Tomcat状态、性能指标(如JVM内存、线程池)的实时监控与报警。
sudo apt install zabbix-java-gateway(Ubuntu)或sudo yum install zabbix-java-gateway(CentOS)。zabbix_server.conf),启用Java Gateway。③ Nagios
开源监控工具,通过插件监控Tomcat服务状态(如端口、响应时间)。
nagios-plugins-all:sudo yum install nagios nagios-plugins-all(CentOS)。commands.cfg),添加Tomcat检查命令(如check_http检查端口、check_tcp检查服务响应)。Tomcat自带的Web管理工具,可监控应用部署状态、会话数、内存使用等。
① 启用Manager应用
编辑conf/tomcat-users.xml,添加具有manager-gui角色的用户:
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>
② 访问管理界面
通过浏览器访问http://your_server_ip:8080/manager/html,输入用户名密码登录,即可查看Tomcat状态、停止/启动应用等。
以上方法可根据需求组合使用:基础监控用命令行/日志,深度分析用JMX/Prometheus+Grafana,自动化运维用脚本/第三方工具。生产环境中建议开启SSL、认证等安全措施,避免敏感信息泄露。