温馨提示×

CentOS Java日志如何监控

小樊
32
2026-08-19 04:30:54
栏目: 编程语言

CentOS 上监控 Java 日志(如 Spring Boot、Tomcat、Flink、Kafka 等),通常可以从 日志文件监控、系统级监控、Java 应用层监控 三个层面来做。下面按常见场景给你一套实用方案。


一、最常见的 Java 日志位置

1️⃣ 常见日志路径

/var/log/
/opt/app/logs/
/home/app/logs/
/opt/tomcat/logs/

常见文件名:

  • application.log
  • catalina.out
  • server.log
  • gc.log
  • error.log

二、实时查看 Java 日志(基础)

1️⃣ tail 实时查看

tail -f application.log

查看最后 500 行:

tail -n 500 application.log

2️⃣ grep 过滤关键字

tail -f application.log | grep ERROR

忽略大小写:

tail -f application.log | grep -i exception

3️⃣ less 查看历史日志

less application.log

常用操作:

  • G 跳到末尾
  • /ERROR 搜索
  • q 退出

三、监控 Java GC 日志(非常重要)

1️⃣ 开启 GC 日志(Java 8+)

-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:/opt/app/logs/gc.log

2️⃣ 查看 GC 日志

tail -f gc.log

重点监控:

  • Full GC 频率
  • GC 停顿时间
  • OOM 前兆

四、关键字告警(强烈推荐)

1️⃣ 监控 ERROR / Exception

grep -c "ERROR" application.log

2️⃣ 监控 OOM

grep -i "OutOfMemoryError" application.log

3️⃣ 定时检查(cron)

*/5 * * * * grep -q "OutOfMemoryError" /opt/app/logs/application.log && echo "OOM detected" | mail -s "Java OOM Alert" admin@xxx.com

五、使用系统工具辅助监控

1️⃣ journalctl(systemd)

如果 Java 是 systemd 启动:

journalctl -u your-java-service -f

查看最近 100 行:

journalctl -u your-java-service -n 100

2️⃣ lsof + ps(确认日志文件)

ps -ef | grep java
lsof -p <pid> | grep log

六、专业日志监控方案(生产推荐)

✅ ELK(最常用)

  • Elasticsearch
  • Logstash / Filebeat
  • Kibana

流程:

Java Log → Filebeat → Logstash → ES → Kibana

优势:

  • 实时搜索
  • 关键字告警
  • 日志聚合
  • 历史回溯

✅ Promtail + Loki + Grafana

轻量级日志方案(适合云原生):

Java Log → Promtail → Loki → Grafana

七、Java 应用层监控(不只看日志)

1️⃣ JVM 监控

jstat -gc <pid>
jstat -gccapacity <pid>

2️⃣ 线程 & 内存

jstack <pid> > thread.txt
jmap -heap <pid>

八、推荐监控组合(实战)

场景 推荐
少量服务 tail + grep + cron
生产环境 ELK / Loki
JVM 问题 GC 日志 + jstat
告警 ERROR / OOM 关键字

九、你可以直接告诉我

为了给你更精准的方案,可以补充:

  1. Java 版本
  2. 日志框架(logback / log4j2)
  3. 是否用 systemd 启动
  4. 是单体 / 微服务 / 容器
  5. 需要实时监控还是事后分析

我可以直接帮你写: ✅ 日志监控脚本
✅ ELK 配置
✅ Java 启动参数
✅ 告警规则

0