Debian系统默认使用systemd管理服务,可通过以下步骤监控Tomcat状态:
/etc/systemd/system/下创建tomcat.service(若已存在则修改),内容如下:[Unit]
Description=Tomcat 9.0 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure # 异常时自动重启
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl start tomcatsudo systemctl status tomcatsudo systemctl enable tomcatTomcat日志记录了运行状态、错误信息及请求详情,常用日志路径为/var/log/tomcat/(或/opt/tomcat/logs/)。
tail命令跟踪最新日志,例如:sudo tail -f /var/log/tomcat/catalina.out # 主日志文件
sudo tail -f /var/log/tomcat/localhost.log # 本地主机日志
grep过滤关键字(如ERROR、Exception)快速定位问题:sudo grep -i "error" /var/log/tomcat/catalina.out
JMX是Java标准管理接口,可监控Tomcat的内存、线程、类加载等详细指标。
/opt/tomcat/bin/catalina.sh,在JAVA_OPTS中添加以下参数(替换your_server_ip为实际IP):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
-Djava.rmi.server.hostname=your_server_ip"
保存后重启Tomcat:sudo systemctl restart tomcat。jconsole或jvisualvm工具,选择“远程进程”,输入your_server_ip:9090即可连接,查看内存使用、线程状态、GC情况等。Tomcat自带的Manager应用提供图形化界面,可查看服务器状态、应用程序部署情况及线程池信息。
/etc/tomcat/server.xml(或/opt/tomcat/conf/server.xml),确保<Host>标签下包含以下配置:<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="/manager/html" docBase="manager" privileged="true"/>
</Host>
重启Tomcat后生效。http://your_server_ip:8080/manager/html,使用管理员账号(需提前在/etc/tomcat/tomcat-users.xml中配置manager-gui角色)登录,即可查看状态信息。第三方工具可实现更全面的监控(如历史数据存储、告警、可视化),常见选项包括:
jmx_exporter收集Tomcat的JMX指标,配置Prometheus抓取数据,最后在Grafana中创建仪表盘展示CPU、内存、请求量等指标。javamelody.war到Tomcat的webapps目录,通过浏览器访问http://your_server_ip:8080/javamelody,查看性能报告(如内存泄漏、慢请求)。通过系统自带命令快速查看Tomcat运行状态:
ps或pgrep查找Tomcat进程:ps -ef | grep tomcat # 查看Tomcat进程
pgrep -fl tomcat # 查找Tomcat进程ID及命令
netstat或ss命令检查Tomcat是否在指定端口(如8080)监听:sudo netstat -tuln | grep 8080 # 传统方式
sudo ss -tuln | grep 8080 # 更现代的方式
top/htop(实时CPU/内存占用)、free -m(内存使用)、df -h(磁盘空间)等命令,结合grep过滤Tomcat进程的资源占用。编写Shell脚本定期检查Tomcat状态(如进程是否存在、端口是否监听、页面是否可访问),并在异常时发送告警(如邮件、Slack)。示例脚本:
#!/bin/bash
# 检查Tomcat进程
TOMCAT_PID=$(pgrep -f tomcat)
if [ -z "$TOMCAT_PID" ]; then
echo "$(date): Tomcat进程不存在,尝试重启" >> /tmp/tomcat_monitor.log
sudo systemctl restart tomcat
else
# 检查端口8080是否监听
if ! sudo netstat -tuln | grep -q ":8080 "; then
echo "$(date): Tomcat端口8080未监听,重启服务" >> /tmp/tomcat_monitor.log
sudo systemctl restart tomcat
else
echo "$(date): Tomcat运行正常" >> /tmp/tomcat_monitor.log
fi
fi
将脚本添加到crontab中,每分钟执行一次:
* * * * * /path/to/tomcat_monitor.sh