如何通过Ubuntu Tomcat日志监控系统
导读:Ubuntu Tomcat 日志监控系统搭建指南 一 监控目标与日志类型 明确要监控的日志类型:访问日志(记录客户端 IP、时间、方法、URL、状态码)、错误日志(异常堆栈、HTTP 错误码)、应用日志(业务日志)、启动日志(启动/关闭过...
Ubuntu Tomcat 日志监控系统搭建指南
一 监控目标与日志类型
- 明确要监控的日志类型:访问日志(记录客户端 IP、时间、方法、URL、状态码)、错误日志(异常堆栈、HTTP 错误码)、应用日志(业务日志)、启动日志(启动/关闭过程)、GC 日志(JVM 垃圾回收)。这些日志通常位于 $CATALINA_HOME/logs 或 /var/log/tomcat,常见文件包括 catalina.out、localhost.log、manager.log、host-manager*.log**。
- 建议先统一日志目录、命名与保留策略,便于后续采集与告警。
二 快速上手 本地实时查看与轮转
- 实时查看:使用 tail -f 跟踪日志,文件轮转时用 tail -F 自动切换到新文件。
- 示例:
tail -F /opt/tomcat/logs/catalina.out
- 示例:
- 多文件与高亮:使用 multitail 同时查看多个日志并分屏。
- 示例:
sudo apt-get install multitail后执行multitail /opt/tomcat/logs/catalina.out /opt/tomcat/logs/localhost.*.log
- 示例:
- 日志轮转:使用 logrotate 管理大小、保留与压缩,避免磁盘被撑满。
- 示例配置(/etc/logrotate.d/tomcat):
/opt/tomcat/logs/*.out { size 50M rotate 7 compress missingok copytruncate }
- 示例配置(/etc/logrotate.d/tomcat):
三 集中化与远程监控方案
- 方案 A ELK(Elasticsearch + Logstash + Kibana)
- 组件作用:Filebeat/Logstash 采集与解析,Elasticsearch 存储检索,Kibana 可视化与告警。
- 最小配置思路:
- Filebeat 采集 catalina.out、localhost.log* 等,输出到 Logstash。
- Logstash 解析时间、级别、线程、URI、状态码、响应时间等字段,写入 Elasticsearch。
- Kibana 建立索引模式(如 tomcat-logs-*),构建仪表盘与阈值告警(如 5xx 比例、错误率突增)。
- 方案 B Grafana + Loki + Promtail
- 轻量替代 ELK,Promtail 采集日志并打标签,Loki 存储,Grafana 查询与面板展示,适合资源受限环境。
- 方案 C 远程 Syslog 聚合
- 在日志服务器启用 rsyslog UDP 514 接收,Tomcat 侧通过 java.util.logging.SyslogHandler 或 Log4j Syslog Appender 发送日志,集中到 /var/log/syslog 或 /var/log/messages 统一查看与归档。
- 方案 D Zabbix 对接日志平台
- 通过 Zabbix Agent 执行脚本查询 Elasticsearch 索引中最近 5 分钟 ERROR 数量,配置触发器实现短信/钉钉/企业微信告警。
四 告警规则与关键指标
- 错误与异常:出现 ERROR/Exception/OutOfMemoryError 立即告警;5xx 状态码比例或错误率持续上升触发预警。
- 性能劣化:P95/P99 响应时间超过阈值、吞吐(RPS)异常下跌、线程池满或连接超时。
- 资源与可用性:JVM GC 次数/时间 异常、Full GC 频繁;Tomcat 进程宕机或端口不可达。
- 安全与攻击:短时间内大量 4xx/5xx、可疑访问路径(如 /manager、/host-manager)、SQL 注入/路径遍历特征。
- 建议做法:在 Kibana/ Grafana 建立阈值与异常检测规则,联动 Webhook 通知;在 Zabbix 用脚本查询日志索引并设置触发器。
五 落地配置示例
- 示例一 Filebeat → Logstash → Elasticsearch → Kibana
- Filebeat(/etc/filebeat/filebeat.yml 片段):
filebeat.inputs: - type: filestream paths: - /opt/tomcat/logs/catalina.out - /opt/tomcat/logs/localhost.*.log output.logstash: hosts: ["localhost:5044"] - Logstash(/etc/logstash/conf.d/tomcat.conf 片段):
input { beats { port => 5044 } } filter { grok { match => { "message" => "%{ TIMESTAMP_ISO8601:timestamp} %{ LOGLEVEL:level} \[%{ DATA:thread} \] %{ JAVACLASS:class} - %{ GREEDYDATA:msg} " } } date { match => [ "timestamp", "ISO8601" ] } mutate { remove_field => ["timestamp"] } } output { elasticsearch { hosts => ["localhost:9200"] index => "tomcat-logs-%{ +YYYY.MM.dd} " } } - Kibana:创建索引模式 tomcat-logs-*,构建面板与阈值告警。
- Filebeat(/etc/filebeat/filebeat.yml 片段):
- 示例二 rsyslog 远程日志
- 日志服务器启用 UDP 514:在 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-remote.conf 加入:
module(load="imudp") input(type="imudp" port="514") - Tomcat 侧(使用 JUL 示例,写入 $CATALINA_BASE/conf/logging.properties):
handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler, java.util.logging.SyslogHandler java.util.logging.SyslogHandler.address=udp://192.0.2.10:514 java.util.logging.SyslogHandler.facility=local0 - 重启 Tomcat 后在日志服务器查看 /var/log/syslog。
- 日志服务器启用 UDP 514:在 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-remote.conf 加入:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何通过Ubuntu Tomcat日志监控系统
本文地址: https://pptw.com/jishu/748086.html
