温馨提示×

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 tomcatpgrep -f tomcat
  • 端口与连通
    • 端口监听:ss -tulnp | grep 8080netstat -tulnp | grep 8080
    • 本机可用性:curl -I http://localhost:8080/(返回 HTTP 200 为正常)
  • 资源与磁盘
    • 进程资源:top -p $(pgrep -f tomcat)htop -p $(pgrep -f tomcat)
    • 内存与磁盘:free -mdf -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>
    • 连接与观测:使用 jconsoleVisualVM 远程连接 :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.shJAVA_OPTSCATALINA_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.outaccess_log,构建请求量、响应时间、错误率等仪表盘

生产环境安全与优化建议

  • JMX 安全
    • 生产环境务必开启 SSL认证,避免使用无口令配置;限制来源 IP,仅在内网开放 9090 等端口
  • 最小权限
    • Tomcat Manager 仅授予必要账号 manager-gui 角色,强密码策略与 IP 白名单
  • 监控覆盖
    • 告警阈值示例:JVM 堆使用率 >80% 持续 5 分钟、HTTP 5xx 错误率 >1%、线程池繁忙度 >80%、磁盘剩余 <10%
  • 资源与维护
    • 合理设置 -Xms/-Xmx、连接池与线程池;定期清理 work/Catalina 与工作目录,避免磁盘被日志与临时文件打满
  • 高可用
    • 前置 Nginx/HAProxy 做健康检查与自动切换,配合监控系统实现故障自愈与滚动发布

0