阅读量:26
Ubuntu系统下监控Tomcat性能的常用方法
1. 命令行工具监控(基础快速)
- 查看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键按内存排序)。
2. 日志分析与可视化(深度洞察)
- 日志轮转配置:使用
logrotate工具自动管理Tomcat日志,避免日志文件过大占用磁盘空间。创建/etc/logrotate.d/tomcat配置文件,内容示例:
/path/to/tomcat/logs/*.out { size 50M rotate 7 compress missingok notifempty }
该配置表示当日志文件大小超过50MB时,自动压缩并保留最近7份日志。 - 日志分析工具:
- ELK Stack(Elasticsearch+Logstash+Kibana):Logstash收集Tomcat日志(如
catalina.out、access_log),Elasticsearch存储并索引,Kibana提供可视化 dashboard,可分析访问频率、错误趋势、响应时间等。 - Grafana+Loki:Promtail收集日志并发送到Loki(轻量级日志存储),Grafana配置Loki为数据源,通过查询语句(如
{job="tomcat"})展示日志,并设置告警规则(如错误日志超过10条/分钟)。
- ELK Stack(Elasticsearch+Logstash+Kibana):Logstash收集Tomcat日志(如
3. JMX(Java管理扩展)监控(全面指标)
JMX是Java应用的标准监控接口,可监控Tomcat的线程池、内存使用、GC情况、连接池等核心指标。
- 启用JMX远程监控:编辑Tomcat的
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"
保存后重启Tomcat:sudo systemctl restart tomcat。 - 连接监控工具:
- VisualVM(Java自带):安装VisualVM插件(如VisualGC),通过
jconsole或VisualVM连接localhost:9090,查看JVM堆内存、线程状态、类加载等指标。 - Prometheus+JMX Exporter:使用JMX Exporter将JMX指标转换为Prometheus可采集的格式,配置Prometheus抓取目标,通过Grafana展示内存使用率、GC次数等 dashboard。
- VisualVM(Java自带):安装VisualVM插件(如VisualGC),通过
4. 第三方监控工具(自动化运维)
- Zabbix:
- 安装Zabbix Java Gateway:
sudo apt-get install zabbix-java-gateway。 - 配置Zabbix服务器(
/etc/zabbix/zabbix_server.conf)启用Java Gateway:JavaGateway=your_gateway_ip,JavaGatewayPort=10052。 - 添加Tomcat主机,分配Java Gateway,导入Tomcat监控模板(如Zabbix官方模板),监控CPU、内存、线程数、响应时间等指标。
- 安装Zabbix Java Gateway:
- Nagios:通过NRPE插件或JMX监控,配置告警规则(如Tomcat进程宕机、内存使用率超过80%),发送邮件或短信通知。
- Sensu:
- 安装Sensu Server和Client:
sudo apt-get install redis-server rabbitmq-server,然后安装Sensu组件。 - 配置Tomcat监控(
/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}} } - 启动Sensu服务,通过Uchiwa dashboard查看监控状态。
- 安装Sensu Server和Client:
5. 自定义脚本监控(灵活定制)
编写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。