CentOS环境下Tomcat监控实践

一基础运行与日志检查

服务状态与启停

使用systemd管理:查看状态

systemctlstatustomcat.service
;启动
systemctlstarttomcat.service
;重启
systemctlrestarttomcat.service
;设置开机自启
systemctlenabletomcat.service
。适用于CentOS7+。

进程与资源

进程存活:

ps-ef|greptomcat
ps-ef|grepjava|greptomcat
获取PID。

资源占用:

top
/
htop
实时查看CPU/内存;
vmstat
free
iostat
netstat/ss
dstat
iftop
辅助排查系统瓶颈。

日志观测

关键日志位于$CATALINA_HOME/logs:

catalina.out
(主日志)、
localhost*.log
(应用日志)。常用
tail-fcatalina.out
实时跟踪。

JVM关键指标

GC与内存:

jstat-gcutil1000
(每1s刷新一次GC/内存统计)。

堆与线程快照:

jmap
生成堆转储,
jcmd
发送诊断命令;配合VisualVM/JConsole做可视化分析。

二JVM与远程可视化监控

JMX远程配置(JConsole/VisualVM)

bin/catalina.sh
JAVA_OPTS
增加:

-Djava.rmi.server.hostname=<服务器IP>

-Dcom.sun.management.jmxremote.port=1090

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

注意:开放1090及RMI动态端口,并放行防火墙;远程使用

jconsole:1090
连接。

Tomcat远程JMXListener(可选)

server.xml
内添加:

rmiRegistryPortPlatform="10001"rmiServerPortPlatform="10002"useLocalPorts="true"/>

适用于更细粒度的生命周期与平台MBean管理。

三指标采集与可视化方案

Prometheus+JMXExporter+Grafana

部署JMXExporterJavaAgent:下载

jmx_prometheus_javaagent-.jar
至$CATALINA_HOME/lib,在
catalina.sh
添加:

JAVA_OPTS="$JAVA_OPTS-javaagent:/path/jmx_prometheus_javaagent-.jar=9010:/path/jmx-exporter.yaml"

配置

jmx-exporter.yaml
(可按需采集GlobalRequestProcessor、ThreadPool、Manager等指标),重启Tomcat。

验证:访问

http://:9010/jmx
查看指标;Prometheus抓取
:9010/metrics
,Grafana导入Tomcat仪表盘进行可视化与告警。

轻量级APM/插件

JavaMelody:添加依赖并在

web.xml
注册
MonitoringFilter
,访问
http://:8080/monitoring
查看请求统计、JVM、SQL等。

LambdaProbe:将

probe.war
放入
webapps
即可监控线程、会话、JVM等(适合快速接入)。

四进程自愈与可用性监控

Shell守护脚本(进程与接口双检)

思路:用

ps
获取PID;用
curl-m10-w"%{http_code}"
校验业务接口;进程不存在或接口非200时执行
startup.sh
重启,并记录日志。

建议通过crontab定时执行(如每10s一次),并接入邮件/企业微信/钉钉告警。

进程管理工具

Supervisor:配置

[program:tomcat]
实现自动拉起与状态监控,适合无systemd或容器化前置场景。

五关键告警阈值与排障要点

建议阈值与动作

进程存活:Tomcat进程消失→立即告警并重启。

HTTP健康:业务接口连续失败(如3次)→告警并尝试重启。

JVMGC:

jstat
观察FGC频繁/FullGC时间过长→触发堆转储并分析。

线程池:

CatalinaThreadPool
currentThreadsBusy
长期接近
maxThreads
→扩容或优化慢请求。

会话:

Manager
rejectedSessions
增长→检查session超时与并发上限。

系统资源:

CPU>80%
可用内存低
、`磁盘空间不足**→横向扩容或清理。

快速排障清单

查看catalina.out/localhost.log*错误堆栈与异常频率。

jstat-gcutil1000
观察Eden/Survivor/Old与YGC/FGC趋势。

jmap
生成堆转储,用EclipseMAT分析泄漏对象。

核对JMX/RMI端口连通性与防火墙策略;验证JMXExporter:9010/metrics是否可访问。