systemctl状态检查:若Tomcat通过systemd管理(常见于CentOS 7及以上),可使用systemctl status tomcat命令查看服务运行状态(如active/inactive)、启动时间、进程ID及最近日志片段;结合journalctl -u tomcat -f可实时跟踪Tomcat日志输出,快速定位启动错误或运行时异常。
进程存在性检查:通过ps -ef | grep tomcat或ps -ef | grep java过滤Tomcat进程,确认其是否在运行;若未找到进程,需手动启动Tomcat(systemctl start tomcat)。
端口监听检查:Tomcat默认监听8080端口(HTTP)和8005端口(SHUTDOWN),使用ss -tulnp | grep 8080或netstat -tulnp | grep 8080验证端口是否处于监听状态,确保服务可被外部访问。
HTTP请求测试:通过curl http://localhost:8080/向Tomcat发送本地请求,若返回默认首页(含“Apache Tomcat”字样)则说明Web服务正常;若返回404或连接拒绝,需检查端口配置(server.xml中的<Connector>标签)或应用部署情况。
资源使用监控:使用top -p $(pgrep -f tomcat)或htop -p $(pgrep -f tomcat)实时查看Tomcat进程的CPU、内存占用率;通过df -h检查磁盘空间(避免日志爆满导致服务崩溃),free -m查看内存剩余情况(确保JVM有足够堆内存)。
Tomcat Manager应用:Tomcat自带的Web管理工具,可通过浏览器访问http://<服务器IP>:8080/manager/html(需提前配置用户权限)。登录后,可查看服务器状态(JVM版本、操作系统信息)、应用列表(各应用的运行状态、会话数、内存占用)、连接器状态(请求处理数、错误数、字节传输量)及线程池状态(活跃线程数、最大线程数)。
JMX(Java管理扩展):通过JMX接口可深度监控Tomcat的JVM、线程、内存、类加载等指标。步骤如下:
bin/catalina.sh文件,添加以下JVM参数(替换your_server_ip为服务器IP,9090为JMX端口):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"
jconsole(jconsole命令)或VisualVM(jvisualvm命令),选择“远程进程”,输入localhost:9090即可连接。连接后可查看内存使用(堆内存、非堆内存)、线程状态(活跃线程数、死锁)、类加载(已加载类数量)、JVM参数(堆大小、GC配置)等信息。Prometheus + Grafana:
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar;jmx-exporter.yaml(定义指标采集规则,如线程池、请求计数、内存使用);catalina.sh,添加JMX Exporter启动参数:JAVA_OPTS="$JAVA_OPTS -javaagent:/path/to/jmx_prometheus_javaagent-0.3.1.jar=9010:/path/to/jmx-exporter.yaml"
http://<服务器IP>:9010/metrics验证指标是否暴露;prometheus.yml)抓取Tomcat指标:scrape_configs:
- job_name: 'tomcat'
static_configs:
- targets: ['localhost:9010']
Zabbix/Nagios:
tomcat.status、tomcat.cpu_usage)及触发器(如CPU使用率超过80%时告警)。check_tomcat插件监控Tomcat的运行状态、响应时间、线程数。需安装Nagios Core、NRPE(远程插件执行器),配置commands.cfg(添加Tomcat检查命令),在services.cfg中定义监控服务(如“Tomcat Status”),实现状态告警。JavaMelody/Application Manager:
webapps目录即可)。通过浏览器访问http://<服务器IP>:8080/javamelody,可查看性能报告(CPU时间、内存占用、方法调用次数)、会话监控(活跃会话数、会话超时数)、数据源监控(数据库连接池使用情况)。日志实时监控:Tomcat的日志文件(logs/catalina.out、logs/localhost_access_log.txt)记录了运行状态、请求信息和错误详情。使用tail -f /opt/tomcat/logs/catalina.out实时查看日志输出,结合grep过滤关键信息(如ERROR、Exception),快速定位问题。
自定义Shell脚本:编写脚本定期检查Tomcat状态,异常时发送通知。示例如下:
#!/bin/bash
TOMCAT_URL="http://localhost:8080/manager/status"
USERNAME="admin"
PASSWORD="admin"
LOG_FILE="/var/log/tomcat_monitor.log"
RESPONSE=$(curl -s -u $USERNAME:$PASSWORD $TOMCAT_URL)
if [[ $RESPONSE == *"OK"* ]]; then
echo "$(date): Tomcat is running normally." >> $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
将脚本添加到cron(crontab -e),每分钟执行一次:* * * * * /path/to/monitor.sh。
Supervisor进程管理:使用Supervisor监控Tomcat进程,确保其在崩溃后自动重启。步骤如下:
yum install epel-release && yum install supervisor;/etc/supervisor/conf.d/tomcat.conf):[program:tomcat]
command=/opt/tomcat/bin/startup.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/tomcat.err.log
stdout_logfile=/var/log/tomcat.out.log
user=tomcat
systemctl start supervisor && supervisorctl reread && supervisorctl update。