温馨提示×

如何监控CentOS Tomcat日志异常

小樊
34
2025-12-23 13:12:35
栏目: 智能运维

监控思路与日志定位

  • 明确要监控的日志类型:访问日志(HTTP请求)、错误日志(异常堆栈)、应用日志(业务日志)、启动日志(启停过程)、GC日志(JVM垃圾回收)。
  • 定位日志目录:Tomcat 日志通常在 $CATALINA_HOME/logs,常见文件有 catalina.out、localhost.log、localhost_access_log.txt、manager.log、host-manager.log**;若以 systemd 管理,也可用 journalctl -u tomcat.service 查看服务日志。
  • 建议开启并按需优化访问日志格式(在 server.xmlAccessLogValve 中),便于后续分析性能与异常来源。

快速命令行监控

  • 实时查看关键日志:
    • 实时跟踪控制台输出:tail -f $CATALINA_HOME/logs/catalina.out
    • 过滤错误关键字:tail -f $CATALINA_HOME/logs/catalina.out | grep -i ‘error|exception|fail’
    • 查看访问日志中的异常状态码:tail -f $CATALINA_HOME/logs/localhost_access_log.*.txt | awk ‘$9 >= 500’
  • 按时间段排查:
    • 提取某时段日志:sed -n ‘/2025-12-23 10:00:00/,/2025-12-23 10:10:00/p’ $CATALINA_HOME/logs/catalina.out
  • 若使用 systemd:
    • 实时查看服务日志:journalctl -u tomcat.service -f
  • 提示:将 $CATALINA_HOME 替换为你的实际 Tomcat 安装路径。

集中化监控方案

  • ELK/EFK 方案:
    • Filebeat 采集 catalina.out、localhost.log、localhost_access_log.txt**;
    • Logstash 解析与丰富(如将访问日志按 grok 解析,提取 clientip、status、request、ua、响应时间 等);
    • 写入 Elasticsearch,在 Kibana 建立索引模式与可视化仪表板,配置阈值告警(如 5xx 突增、ERROR 计数阈值)。
  • 其他平台:
    • GraylogSplunk 采集与检索,同样可构建规则告警与报表。
  • 落地要点:为不同日志设置合适的 索引生命周期管理(ILM) 与保留策略,避免磁盘被占满。

告警与自愈

  • Zabbix 方案:
    • 方式一:Zabbix Agent 采集日志文件(如 log[/path/catalina.out,ERROR]),设置触发器(如最近 5 分钟 ERROR ≥ N)与告警动作;
    • 方式二:在 Elasticsearch 侧统计异常命中数,Zabbix 通过脚本/HTTP 采集该指标并告警。
  • 轻量脚本自愈(示例思路):
    • 1 分钟 检查 catalina.out 是否出现 ERROR/OutOfMemoryError
    • 或做 HTTP 健康检查(如 curl -I -m 10 -w %{http_code}),非 200 则执行重启并记录操作日志;
    • 将脚本加入 crontab 并控制并发与重启上限,避免“重启风暴”。
  • 注意:自动重启仅作兜底,务必保留现场日志并联动告警,便于根因分析。

日志治理与加固

  • 日志轮转与归档:
    • 使用 logrotate 管理 catalina.out 等文件大小与保留份数;
    • 访问日志建议按日切割,便于检索与合规。
  • 日志分割工具:
    • 通过 cronologLog4j2 TimeBasedTriggeringPolicy 按日期/大小切分,避免单文件过大。
  • 安全与合规:
    • 限制日志文件访问权限,定期审计;
    • 隐藏 Server/X-Powered-By 等版本信息,降低攻击面;
    • 为访问日志开启 Referer/UA 等字段,便于识别异常来源与盗链。

0