Tomcat在CentOS上如何监控
小樊
33
2025-12-27 07:40:27
监控方案总览
- 在 CentOS 上监控 Tomcat,建议分层实施:系统与服务可用性、JVM 与线程池、日志与告警、可视化与长期趋势。
- 常用手段包括:systemd 与命令行检查、Tomcat Manager、JMX、Prometheus + Grafana、Zabbix、脚本自动化与日志分析(ELK)。
基础检查与日志
- 服务与进程
- 查看服务状态:
systemctl status tomcat
- 实时日志:
journalctl -u tomcat -f
- 进程是否存在:
ps -ef | grep tomcat 或 pgrep -f tomcat
- 端口与连通
- 端口监听:
ss -tulnp | grep 8080 或 netstat -tulnp | grep 8080
- 本机可用性:
curl -I http://localhost:8080/(返回 HTTP 200 为正常)
- 资源与磁盘
- 进程资源:
top -p $(pgrep -f tomcat) 或 htop -p $(pgrep -f tomcat)
- 内存与磁盘:
free -m、df -h
- 日志定位
- 实时查看:
tail -f $CATALINA_HOME/logs/catalina.out
- 访问日志:
tail -f $CATALINA_HOME/logs/localhost_access_log.*.txt
JVM 与 Tomcat 内置工具
- Tomcat Manager
- 配置用户:编辑 conf/tomcat-users.xml,添加角色
manager-gui 的用户
- 示例:
<user username="admin" password="StrongPass!23" roles="manager-gui"/>
- 访问:http://:8080/manager/html,可查看应用列表、会话数、请求处理时间、线程池与连接器状态
- JMX(Java Management Extensions)
- 启用(示例为无认证,仅测试环境):编辑 bin/catalina.sh,在
CATALINA_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=<服务器IP>
- 连接与观测:使用 jconsole 或 VisualVM 远程连接 :9090,查看堆内存、非堆内存、线程、类加载、GC 等
- JVM 诊断命令
- GC 与内存:
jstat -gc <PID> 1000
- 线程级 CPU:
top -H -p <PID>
- JPDA 调试:
catalina.sh jpda start(默认调试端口 8000,可用 VisualVM 等连接)
第三方监控与可视化
- Prometheus + Grafana(推荐)
- JMX Exporter:下载 jmx_prometheus_javaagent 与配置文件(如 jmx-exporter.yaml)
- 启动参数(放到 catalina.sh 的
JAVA_OPTS 或 CATALINA_OPTS)
-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.17.0.jar=9010:/opt/prometheus/jmx-exporter.yaml
- 验证暴露:
curl http://localhost:9010/metrics
- Prometheus 抓取:在 prometheus.yml 增加
- job_name: ‘tomcat’;targets: [‘:9010’]
- Grafana:添加 Prometheus 数据源,导入社区面板(如 ID 6732 或 “Tomcat Metrics”)
- Zabbix
- 安装 Zabbix Server/Agent,在 Web 端创建监控项(进程、端口、JVM 内存、线程、响应时间等),配置触发器与告警(邮件/短信/企业微信/钉钉)
- JavaMelody
- 将 javamelody.war 放入 webapps,访问 http://:8080/javamelody 查看性能报告、会话与数据源监控
脚本自动化与告警
- Shell 监控脚本(进程 + HTTP + 邮件)
- 关键点:检测进程是否存在、访问 /manager/status 或根路径、异常时记录日志并尝试重启、发送邮件
- 定时任务:
* * * * * /bin/bash /opt/scripts/tomcat_monitor.sh
- 进程守护
- 使用 Supervisor 托管 Tomcat,崩溃自动拉起
- 安装:
yum install -y epel-release && yum install -y supervisor
- 配置示例:
/etc/supervisor/conf.d/tomcat.conf
[program:tomcat] command=/opt/tomcat/bin/startup.sh autostart=true autorestart=true
- 生效:
systemctl start supervisor && supervisorctl reread && supervisorctl update
- 日志分析与可视化
- ELK(Logstash + Elasticsearch + Kibana) 收集 catalina.out 与 access_log,构建请求量、响应时间、错误率等仪表盘
生产环境安全与优化建议
- JMX 安全
- 生产环境务必开启 SSL 与 认证,避免使用无口令配置;限制来源 IP,仅在内网开放 9090 等端口
- 最小权限
- Tomcat Manager 仅授予必要账号
manager-gui 角色,强密码策略与 IP 白名单
- 监控覆盖
- 告警阈值示例:JVM 堆使用率 >80% 持续 5 分钟、HTTP 5xx 错误率 >1%、线程池繁忙度 >80%、磁盘剩余 <10%
- 资源与维护
- 合理设置 -Xms/-Xmx、连接池与线程池;定期清理 work/Catalina 与工作目录,避免磁盘被日志与临时文件打满
- 高可用
- 前置 Nginx/HAProxy 做健康检查与自动切换,配合监控系统实现故障自愈与滚动发布