Ubuntu系统下监控Tomcat性能的常用方法
ps -ef | grep tomcat命令,可获取Tomcat进程的PID、运行用户、启动参数等信息,快速判断Tomcat是否在运行。tail -f /path/to/tomcat/logs/catalina.out命令(/path/to/tomcat为Tomcat安装目录),实时输出Tomcat的主日志内容,便于及时发现错误或异常请求(如grep "ERROR" catalina.out可过滤错误日志)。top(动态显示CPU、内存占用)或htop(增强版top,支持鼠标操作)命令,查看Tomcat进程的资源消耗情况(按P键按CPU排序,M键按内存排序)。logrotate工具自动管理Tomcat日志,避免日志文件过大占用磁盘空间。创建/etc/logrotate.d/tomcat配置文件,内容示例:/path/to/tomcat/logs/*.out { size 50M rotate 7 compress missingok notifempty }catalina.out、access_log),Elasticsearch存储并索引,Kibana提供可视化 dashboard,可分析访问频率、错误趋势、响应时间等。{job="tomcat"})展示日志,并设置告警规则(如错误日志超过10条/分钟)。JMX是Java应用的标准监控接口,可监控Tomcat的线程池、内存使用、GC情况、连接池等核心指标。
bin/catalina.sh文件,在JAVA_OPTS中添加以下配置(替换your_server_ip为服务器IP):JAVA_OPTS="$JAVA_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"sudo systemctl restart tomcat。jconsole或VisualVM连接localhost:9090,查看JVM堆内存、线程状态、类加载等指标。sudo apt-get install zabbix-java-gateway。/etc/zabbix/zabbix_server.conf)启用Java Gateway:JavaGateway=your_gateway_ip,JavaGatewayPort=10052。sudo apt-get install redis-server rabbitmq-server,然后安装Sensu组件。/etc/sensu/conf.d/tomcat.json),例如监控日志:{ "api": {"host": "localhost", "port": 4567}, "resources": {"tomcat_log": {"type": "docker", "command": "docker exec tomcat_container cat /path/to/catalina.out", "interval": 10}} }编写Shell或Python脚本,定期检查Tomcat状态(如进程是否存在、端口是否监听、响应时间是否超时),并在异常时执行重启操作。例如,Shell脚本示例:
#!/bin/bash
TOMCAT_PID=$(ps -ef | grep tomcat | grep -v grep | awk '{print $2}')
if [ -z "$TOMCAT_PID" ]; then
echo "$(date): Tomcat is not running. Starting..." >> /var/log/tomcat_monitor.log
/path/to/tomcat/bin/startup.sh
else
echo "$(date): Tomcat is running with PID $TOMCAT_PID" >> /var/log/tomcat_monitor.log
fi
将脚本添加到crontab(crontab -e),每分钟执行一次:* * * * * /path/to/tomcat_monitor.sh。