若Tomcat通过systemd启动(常见于CentOS 7及以上版本),可使用以下命令快速查看状态:
sudo systemctl status tomcat(替换为你的Tomcat服务名,如tomcat9),输出会显示运行状态、启动时间、日志摘要等信息。sudo journalctl -u tomcat -f(替换为对应服务名),可实时跟踪Tomcat的运行日志,便于排查问题。通过ps命令查找Tomcat进程,确认其是否在运行:
ps -ef | grep tomcat(或ps -ef | grep java,若Tomcat以Java进程运行)。
输出中会显示Tomcat进程的PID、启动参数等信息,若无结果则表示进程未运行。
Tomcat默认监听8080端口(可修改),通过以下命令验证端口是否处于监听状态:
sudo netstat -tulnp | grep 8080(传统工具,需安装net-tools包);sudo ss -tulnp | grep 8080(更现代的工具,无需额外安装)。LISTEN状态,则说明Tomcat已启动并监听该端口。通过HTTP请求Tomcat的默认页面,验证Web服务是否正常:
curl http://localhost:8080/(替换为服务器IP或域名)。
若返回Tomcat默认页面(包含“Apache Tomcat”字样),则说明Web服务运行正常;若返回连接拒绝或超时,则可能存在问题。
实时查看Tomcat进程的CPU、内存等资源占用情况:
top -p $(pgrep -f tomcat)(pgrep -f tomcat获取Tomcat进程PID),按M键可按内存排序,按P键可按CPU排序。sudo yum install htop -y,然后运行htop -p $(pgrep -f tomcat),支持鼠标操作和颜色高亮。JMX(Java Management Extensions)是Java标准管理API,可监控Tomcat的内存、线程、类加载等详细指标:
bin/catalina.sh文件,在JAVA_OPTS中添加以下配置(替换端口为所需值,如9090):export 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"
保存后重启Tomcat:sudo systemctl restart tomcat。jconsole(JDK自带工具),选择“远程进程”,输入localhost:9090(或服务器IP:端口),连接后可查看内存使用、线程数、类加载等指标。Tomcat自带的Manager应用提供Web界面,可监控应用部署、会话数、内存使用等状态:
conf/tomcat-users.xml文件,添加具有manager-gui角色的用户:<role rolename="manager-gui"/>
<user username="admin" password="your_password" roles="manager-gui"/>
保存后重启Tomcat。http://your_server_ip:8080/manager/html,使用上述用户名密码登录,即可查看Tomcat的运行状态和应用信息。对于生产环境,推荐使用专业监控工具实现长期、可视化监控:
jmx_exporter,下载地址:https://github.com/prometheus/jmx_exporter);prometheus.yml,添加Tomcat抓取任务:scrape_configs:
- job_name: 'tomcat'
static_configs:
- targets: ['localhost:9090'] # jmx_exporter监听端口
sudo yum install grafana -y),添加Prometheus为数据源,导入Tomcat监控Dashboard(如Grafana官方库中的“Tomcat” Dashboard),实现CPU、内存、请求量等的可视化展示。编写Shell脚本定期检查Tomcat状态,并记录日志或发送警报:
#!/bin/bash
TOMCAT_URL="http://localhost:8080/manager/status"
USERNAME="admin"
PASSWORD="your_password"
LOG_FILE="/var/log/tomcat_monitor.log"
RESPONSE=$(curl -s -u $USERNAME:$PASSWORD $TOMCAT_URL)
if [[ $RESPONSE == *"OK"* ]]; then
echo "$(date): Tomcat is up and running" >> $LOG_FILE
else
echo "$(date): Tomcat is down!" >> $LOG_FILE
# 发送邮件警报(需配置mailutils)
echo "Tomcat is down on $(hostname)" | mail -s "Tomcat Alert" admin@example.com
fi
将脚本保存为check_tomcat.sh,添加执行权限:chmod +x check_tomcat.sh,然后通过cron定期执行(如每5分钟):
crontab -e,添加:*/5 * * * * /path/to/check_tomcat.sh。