温馨提示×

Tomcat在CentOS上的监控方案

小樊
41
2025-12-07 15:33:14
栏目: 智能运维

Tomcat在CentOS上的监控方案

一 监控目标与分层

  • 基础设施层:CPU、内存、磁盘IO、网络,关注系统负载与资源瓶颈对Tomcat的影响。
  • JVM层:堆与非堆内存、GC次数与停顿、类加载、线程数,定位内存与GC问题。
  • Tomcat层:连接器线程池(当前线程、繁忙线程、队列)、请求吞吐与耗时、错误率、会话数。
  • 应用层:关键业务接口可用性、数据库/缓存连接池使用、慢查询与异常日志。

二 快速落地方案 Prometheus JMX Exporter

  • 部署JMX Exporter
    • 下载并放置代理:/usr/local/prometheus/jmx_prometheus_javaagent-0.3.1.jar
    • 创建规则:/usr/local/prometheus/jmx-exporter.yaml(示例已覆盖 GlobalRequestProcessor、ThreadPool、Manager/Session、Servlet 等关键MBean)
  • 配置Tomcat启动参数
    • 编辑 $CATALINA_HOME/bin/catalina.sh,在 JAVA_OPTS 中追加: -javaagent:/usr/local/prometheus/jmx_prometheus_javaagent-0.3.1.jar=9010:/usr/local/prometheus/jmx-exporter.yaml
    • 重启Tomcat:systemctl restart tomcat
  • 验证与抓取
    • 访问 http://:9010/jmx 确认指标暴露
    • Prometheus 配置抓取 job(示例):
      • job_name: ‘tomcat-jmx’ static_configs:
        • targets: [‘:9010’]
  • 建议告警规则(示例)
    • 线程池繁忙比例高:1 - (tomcat_threadpool_currentThreadCount{protocol=“http-nio”} - tomcat_threadpool_currentThreadsBusy) / tomcat_threadpool_currentThreadCount > 0.8
    • HTTP 5xx 增多:rate(tomcat_global_error_total{name=“http-nio”}[1m]) > 0
    • Full GC 频繁:rate(jvm_gc_collection_seconds_sum{gc=“G1 Full”}[5m]) > 0.1
    • 老年代使用率高:jvm_memory_pool_bytes_used{pool=“G1 Old Gen”} / jvm_memory_pool_bytes_max{pool=“G1 Old Gen”} > 0.85
  • 说明
    • 若使用 Spring Boot,可直接暴露 /actuator/prometheus;传统WAR包建议优先用 JMX Exporter 采集Tomcat与JVM指标。

三 系统与服务自检脚本

  • 进程与端口
    • 进程存活:ps -ef | grep tomcat | grep -v grep
    • 端口连通:ss -lntp | grep 8080 或 curl -I http://127.0.0.1:8080/
  • JVM与GC
    • 获取Tomcat的Java PID后:jstat -gcutil 1000(每秒刷新GC与内存使用)
  • 日志与实时观测
    • tail -f $CATALINA_HOME/logs/catalina.out
    • top/htop/vmstat/free/iostat/netstat/dstat/iftop 观察系统资源与网络
  • 一键自愈脚本思路(示例)
    • 每分钟检测进程;若进程不存在则启动并记录日志;可扩展为接口探活失败则重启并告警(邮件/企业微信/钉钉)。

四 可视化与告警

  • Prometheus + Grafana
    • Grafana 导入 Tomcat/JVM 仪表盘(如 8563 等社区模板),展示线程池、请求吞吐、响应时间、GC与内存趋势
    • 在 Grafana 配置阈值告警,联动通知渠道(邮件、Webhook)
  • Zabbix
    • 通过 JMX 或 Exporter 采集指标,配置触发器与动作(短信/企业微信/钉钉)
  • 日志与APM
    • 结合 ELK 收集 catalina.out 与业务日志,或用 APM(如 SkyWalking)增强调用链与慢事务分析

五 关键指标与阈值建议

维度 关键指标 建议阈值或关注点
Tomcat线程池 currentThreadsBusy / maxThreads 繁忙比例持续 > 0.8 需扩容或优化
请求吞吐与耗时 requestCount、processingTime 5xx 突增、P95/P99 上升需排查
JVM内存 Old Gen 使用率、Metaspace Old Gen > 80–85% 或频繁 Full GC
GC GC次数与停顿 Full GC 频繁或单次停顿过长
会话 activeSessions、rejectedSessions 会话泄漏或拒绝会话增多
连接池 activeCount / maxActive 活跃连接长期接近上限需调优
系统资源 CPU、Load、IO、TCP重传 Load 持续高于 CPU 核数、重传率高需排查网络/存储瓶颈

以上方案可按规模分阶段落地:先完成“系统自检 + JMX Exporter + Prometheus/Grafana 可视化”,再补充“自愈脚本与告警”,最后接入日志与APM形成闭环。

0