Ubuntu 上监控 Tomcat 性能的可落地方案
一 监控体系与核心指标
| 指标类别 | 关键指标 | 建议阈值 |
|---|---|---|
| 服务器 | CPU 使用率 | 警戒线 80%,紧急线 90% |
| 服务器 | 内存使用率 | 警戒线 85%,紧急线 90% |
| 服务器 | 磁盘 I/O 延迟 | 读写延迟 < 20ms |
| Tomcat 线程池 | 当前活跃线程数 | 达到 maxThreads 的 75% 预警,90% 紧急 |
| Tomcat 连接器 | 等待队列大小 | 预警 50,紧急 100 |
| Tomcat 请求 | 平均响应时间 | 预警 500ms,紧急 1000ms |
| Tomcat 请求 | 错误率 | 预警 1%,紧急 5% |
| JVM 内存 | 堆/非堆使用率 | 堆 80%/90%,非堆 85%/95% |
| JVM GC | GC 暂停时间 | 预警 200ms,紧急 500ms |
二 快速上手 JMX 与可视化工具
启用 JMX(推荐在 conf/server.xml 添加监听器,更规范):
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="10001"
rmiServerPortPlatform="10002"
useLocalPorts="true" />
CATALINA_OPTS="$CATALINA_OPTS \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=10001 \
-Dcom.sun.management.jmxremote.rmi.port=10002 \
-Djava.rmi.server.hostname=<服务器公网或内网IP> \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false"
远程可视化连接要点:
三 访问日志与日志分析
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b %D "%{User-Agent}i"" />
四 Prometheus Grafana 与告警
scrape_configs:
- job_name: 'tomcat'
metrics_path: '/metrics'
static_configs:
- targets: ['<TOMCAT_IP>:8080']
groups:
- name: tomcat_alerts
rules:
- alert: HighResponseTime
expr: tomcat_request_seconds_sum / tomcat_request_seconds_count > 1
for: 5m
labels:
severity: warning
annotations:
summary: "Tomcat高响应时间告警"
description: "平均响应时间超过1秒,当前值: {{ $value | humanizeDuration }}"
五 命令行与脚本巡检