发布于2026-07-13 阅读(0)
扫一扫,手机访问
Ja va日志在CentOS上的监控,这件事儿说大不大,说小不小。很多团队直到线上出了大问题,才意识到日志系统的重要性。今天,咱们就系统地捋一捋,从最基础的服务器侧,到现代化的集中式监控,再到告警应急,把整个闭环打通。

聊监控,得先有数据。数据从哪里来?首先是日志。但这日志不能乱放,得有规矩。
把应用日志统一输出到一个固定目录,比如 /var/log/app/。同时,确保运行你应用的用户(比如 appuser)对这个目录有读写权限。系统自己那套日志,比如 /var/log/messages、/var/log/secure、/var/log/audit/audit.log,它们有自己固定的位置。这两套东西分开管理,但最终都要能统一检索和归档,这才是基础。
实时查看最直接的方法,tail -f 配合 grep 过滤关键字(比如 ERROR、Exception),这招儿永远不过时。如果你的服务跑在 systemd 下,journalctl -u 也是个利器,支持按时间窗口和优先级(比如 -p err)过滤,方便得很。
安全无小事。重点审计 /var/log/secure(认证与授权)和 /var/log/audit/audit.log(系统审计事件)。配合 rsyslog 做集中转发,既能满足合规要求,出了问题也能快速追溯。
用 logwatch 这类工具,生成日报或周报,能让你快速了解错误趋势和异常模式,提前发现潜在风险。这才是主动运维。
日志光是能看还不够,得让它能“被看懂”。这就需要我们对自己的应用日志做一番规范了。
在 Logback 或 Log4j2 里,统一使用结构化格式,比如 JSON。这样每一行日志都包含 timestamp、level、thread、logger、trace_id、span_id、message、exception 这些关键字段。有了它,后面的检索、聚合、链路追踪才能玩得转。
生产环境,必须启用异步日志(比如 AsyncAppender / AsyncLogger)。这能避免同步写磁盘堵塞业务线程,是性能优化的基本功。合理设置 bufferSize 和 queueSize,在吞吐和延迟之间找到平衡点。
生产环境默认用 INFO,这是铁律。需要排查问题时,再临时对特定包或类开启 DEBUG 甚至 TRACE。问题定位后一定记得恢复,否则日志洪泛起来,谁也扛不住。
用 logrotate 管理应用日志和 GC 日志,这是标准做法。建议按天轮转,保留 7-30 天,并启用压缩。一个典型的配置示例放在 /etc/logrotate.d/app 里:
/var/log/app/*.log {
daily
rotate 14
compress
missingok
copytruncate
delaycompress
notifempty
}
别忘了 GC 日志。开启 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/app/gc.log,并把它也纳入 logrotate 管理。这是分析 JVM 停顿和内存问题的第一手资料。
日志分散在各台机器上,排查问题太痛苦了。我们需要把它们集中起来,并可视化地呈现。
对于中小规模团队,这绝对是最优解。Promtail 负责采集 /var/log/app/ 下的日志,按 app、env、host 等标签发送到 Loki。Grafana 负责展示和告警。成本低,上手快,效果立竿见影。
如果团队规模更大,对日志解析和检索有更高要求,那 ELK 还是首选。Filebeat 或 Logstash 负责采集和解析(比如用 Grok 把非结构化日志转成结构化),Elasticsearch 负责存储和检索,Kibana 负责可视化和告警。功能强大,但运维成本也相对高一些。
光看日志还不够,最好能和指标联动起来。在 Ja va 应用中同时暴露 Micrometer 或 Prometheus 指标(比如 http_requests_total、jvm_memory_used_bytes),用 Prometheus + Grafana 做指标告警,与日志告警形成互补。这能大大缩短 MTTR(平均修复时间)。
日志和监控的最终目的,是发现问题并快速响应。所以,告警规则的设计至关重要。
OutOfMemoryError、StackOverflowError、Connection refused 等明确的关键词。/var/log/secure 中检测到多次 Failed password、异常的 sudo 执行等。告警不能只发到群里。按环境(prod/staging)和服务分组,P1 级别的告警,5分钟内必须电话+信息轰炸;P2 级别,15分钟内 IM 通知;P3 级别,汇总到日报里即可。
别等人来修。编写 Shell 或 Python 脚本,定期扫描错误日志,触发一些自动化的动作:比如重启服务、隔离节点、甚至限流。配合 systemd 的健康检查,或 Kubernetes 的自动恢复机制,实现初步的自愈能力。当然,所有脚本和任务都要留痕,确保幂等,避免误操作。
每一次告警触发和处置动作,都要写入审计日志。这不仅是合规要求,也是事后复盘、优化运维流程的宝贵数据。
光说不练假把式。最后,给你一张检查清单,照着做,保证你的日志系统滴水不漏。
| 实践项 | 关键动作 | 验证方式 |
|---|---|---|
| 日志目录与权限 | 统一到 /var/log/app/,权限为 appuser:appgroup 644/755 | ls -ld /var/log/app && ps aux |
| 格式与字段 | 统一 JSON,含 timestamp、level、trace_id | head -n 1 app.log |
| 异步与级别 | 启用异步日志;生产默认 INFO | 观察 GC/线程抖动是否缓解 |
| 轮转与保留 | logrotate 按天、保留 14-30 天、压缩 | /usr/sbin/logrotate -d /etc/logrotate.d/app |
| GC 日志 | 开启 -Xloggc 并纳入轮转 | tail -f /var/log/app/gc.log |
| 采集与解析 | Loki/Promtail 或 Filebeat/Logstash 正常摄入 | Grafana/Loki 或 Kibana 能看到索引/流 |
| 告警与通知 | P1/P2/P3 规则生效,路由正确 | 触发测试告警并检查通知渠道 |
| 安全审计 | 监控 /var/log/secure、audit.log | grep "Failed password" /var/log/secure |
| 指标联动 | 暴露 Micrometer/Prometheus 指标 | Prometheus Targets 健康、Grafana 面板有数据 |
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8