温馨提示×

centos环境tomcat如何监控

小樊
35
2025-11-29 19:50:38
栏目: 智能运维

CentOS 环境下 Tomcat 监控实践

一 基础运行与日志检查

  • 服务状态与启停
    • 使用 systemd 管理:查看状态 systemctl status tomcat.service;启动 systemctl start tomcat.service;重启 systemctl restart tomcat.service;设置开机自启 systemctl enable tomcat.service。适用于 CentOS 7+
  • 进程与资源
    • 进程存活:ps -ef | grep tomcatps -ef | grep java | grep tomcat 获取 PID
    • 资源占用:top/htop 实时查看 CPU/内存vmstatfreeiostatnetstat/ssdstatiftop 辅助排查系统瓶颈。
  • 日志观测
    • 关键日志位于 $CATALINA_HOME/logscatalina.out(主日志)、localhost*.log(应用日志)。常用 tail -f catalina.out 实时跟踪。
  • JVM 关键指标
    • GC 与内存:jstat -gcutil <PID> 1000(每 1s 刷新一次 GC/内存统计)。
    • 堆与线程快照:jmap 生成堆转储,jcmd 发送诊断命令;配合 VisualVM/JConsole 做可视化分析。

二 JVM 与远程可视化监控

  • JMX 远程配置(JConsole/VisualVM)
    • bin/catalina.shJAVA_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 <IP>:1090 连接。
  • Tomcat 远程 JMX Listener(可选)
    • server.xml<Server> 内添加:
      • <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
        rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" useLocalPorts="true" />
    • 适用于更细粒度的生命周期与平台 MBean 管理。

三 指标采集与可视化方案

  • Prometheus + JMX Exporter + Grafana
    • 部署 JMX Exporter Java Agent:下载 jmx_prometheus_javaagent-<version>.jar$CATALINA_HOME/lib,在 catalina.sh 添加:
      • JAVA_OPTS="$JAVA_OPTS -javaagent:/path/jmx_prometheus_javaagent-<version>.jar=9010:/path/jmx-exporter.yaml"
    • 配置 jmx-exporter.yaml(可按需采集 GlobalRequestProcessor、ThreadPool、Manager 等指标),重启 Tomcat。
    • 验证:访问 http://<host>:9010/jmx 查看指标;Prometheus 抓取 :9010/metrics,Grafana 导入 Tomcat 仪表盘 进行可视化与告警。
  • 轻量级 APM/插件
    • JavaMelody:添加依赖并在 web.xml 注册 MonitoringFilter,访问 http://<host>:8080/monitoring 查看 请求统计、JVM、SQL 等。
    • Lambda Probe:将 probe.war 放入 webapps 即可监控 线程、会话、JVM 等(适合快速接入)。

四 进程自愈与可用性监控

  • Shell 守护脚本(进程与接口双检)
    • 思路:用 ps 获取 PID;用 curl -m 10 -w "%{http_code}" <health-url> 校验业务接口;进程不存在或接口非 200 时执行 startup.sh 重启,并记录日志。
    • 建议通过 crontab 定时执行(如每 10s 一次),并接入 邮件/企业微信/钉钉 告警。
  • 进程管理工具
    • Supervisor:配置 [program:tomcat] 实现自动拉起与状态监控,适合无 systemd 或容器化前置场景。

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

  • 建议阈值与动作
    • 进程存活:Tomcat 进程消失 → 立即告警并重启。
    • HTTP 健康:业务接口连续失败(如 3 次)→ 告警并尝试重启。
    • JVM GC:jstat 观察 FGC 频繁/Full GC 时间过长 → 触发堆转储并分析。
    • 线程池:Catalina ThreadPoolcurrentThreadsBusy 长期接近 maxThreads → 扩容或优化慢请求。
    • 会话:ManagerrejectedSessions 增长 → 检查 session 超时并发上限
    • 系统资源:CPU>80%可用内存低、`磁盘空间不足** → 横向扩容或清理。
  • 快速排障清单
    • 查看 catalina.out/localhost.log* 错误堆栈与异常频率。
    • jstat -gcutil <PID> 1000 观察 Eden/Survivor/OldYGC/FGC 趋势。
    • jmap 生成堆转储,用 Eclipse MAT 分析泄漏对象。
    • 核对 JMX/RMI 端口连通性与防火墙策略;验证 JMX Exporter :9010/metrics 是否可访问。

0