监控Tomcat状态需结合进程检查、日志分析、JVM指标监控、Web界面及第三方工具,以下是具体方法:
查看Tomcat进程状态
使用ps命令结合grep过滤Tomcat进程,确认是否运行:
ps -ef | grep tomcat
若输出包含Tomcat的启动命令(如org.apache.catalina.startup.Bootstrap)及PID,则表示进程正在运行。
查看Tomcat服务状态
若Tomcat通过systemd管理(默认安装方式),使用以下命令查看服务状态:
sudo systemctl status tomcat
若服务正常,会显示active (running);若未运行,可使用sudo systemctl start tomcat启动。
实时查看Tomcat日志
Tomcat的主日志文件通常位于/path/to/tomcat/logs/catalina.out(或/var/log/tomcat/目录下),使用tail -f命令实时跟踪日志输出:
tail -f /path/to/tomcat/logs/catalina.out
按Ctrl+C退出实时查看。如需同时监控多个日志文件(如localhost.log),可使用multitail工具(sudo apt install multitail)。
检查Tomcat端口监听
使用netstat或ss命令查看Tomcat监听的端口(默认8080):
netstat -tunlp | grep java
# 或
ss -tunlp | grep java
输出中包含8080/tcp则表示端口正常监听。
JMX(Java Management Extensions)是监控Tomcat JVM及应用性能的核心工具,可获取CPU、内存、线程池、连接池等指标。
启用JMX远程监控
编辑Tomcat的启动脚本catalina.sh(位于/path/to/tomcat/bin/),添加以下JVM参数:
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=<服务器IP>
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
注:
<服务器IP>替换为Tomcat所在服务器的IP;若需安全认证,可将authenticate=false改为true,并配置jmxremote.password和jmxremote.access文件。
使用JMX客户端连接
jconsole命令,选择“远程进程”,输入service:jmx:rmi:///jndi/rmi://<服务器IP>:9010/jmxrmi,点击“连接”即可查看指标。jvisualvm命令,添加JMX连接后,可监控内存、线程、类加载等详情。Prometheus + Grafana(开源时序监控)
simpleclient依赖并配置MetricsServlet(映射到/metrics路径)。JavaMelody(轻量级应用监控)
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.98.0</version>
</dependency>
web.xml:添加MonitoringFilter和SessionListener。http://<服务器IP>:8080/monitoring,查看请求统计、JVM内存、数据库连接池等指标。hertzbeat(开源综合监控)
hertzbeat支持监控Tomcat的CPU、内存、线程数、连接数等指标,提供告警功能。安装后,在Web界面添加Tomcat监控项,配置目标地址即可。
日志过滤与统计
使用grep过滤错误日志(如ERROR关键字),awk统计请求量:
grep "ERROR" /path/to/tomcat/logs/catalina.out # 查找错误日志
awk '{print $4, $7}' /path/to/tomcat/logs/catalina.out | sort | uniq -c # 统计每小时请求数
自定义监控脚本
编写Shell脚本检查Tomcat进程及端口,异常时重启或发送通知(如邮件、Slack):
#!/bin/bash
TOMCAT_PID=$(ps -ef | grep tomcat | grep -v grep | awk '{print $2}')
if [ -z "$TOMCAT_PID" ]; then
echo "$(date): Tomcat is down. Restarting..." >> /var/log/tomcat_monitor.log
/path/to/tomcat/bin/startup.sh
else
echo "$(date): Tomcat is running (PID: $TOMCAT_PID)" >> /var/log/tomcat_monitor.log
fi
将脚本添加到crontab(crontab -e),每分钟执行一次:
* * * * * /path/to/tomcat_monitor.sh
```。
通过上述方法,可全面监控Ubuntu上Tomcat的运行状态,及时发现并解决问题。根据需求选择合适的方法(如基础监控用命令行,详细性能用JMX,自动化用第三方工具)。