Ubuntu日志存储推荐方案
一 本地方案优先
- 使用 systemd-journald + rsyslog + logrotate 的组合,覆盖从采集、持久化到归档的全流程,适合大多数服务器与云主机场景。
- journald:集中采集内核与 systemd 单元日志,支持结构化字段、二进制存储与高效查询;通过 /etc/systemd/journald.conf 配置持久化与大小上限,例如:
- Storage=persistent(持久化到 /var/log/journal)
- SystemMaxUse=500M(总上限)
- MaxRetentionSec=1month(保留周期)
- 维护命令:journalctl --disk-usage;journalctl --vacuum-time=7d;journalctl --vacuum-size=500M。
- rsyslog:将 journal 的结构化日志落盘到 /var/log(如 syslog、auth.log、kern.log 等),便于文本工具与合规审计;可配置远程转发(如 . @remote:514)。
- logrotate:对 /var/log 与各应用日志做按日/按大小轮转、压缩与清理,典型配置:
- /var/log/myapp/*.log { daily; rotate 7; compress; delaycompress; missingok; notifempty; create 640 root adm }。
- 适用场景:单机/少量主机、合规要求一般、希望低开销与稳定运维。
二 集中式方案 ELFK
- 架构与组件:Elasticsearch(存储与检索,近实时写入)、Logstash(输入-过滤-输出管道,做解析与丰富)、Filebeat(轻量采集器,部署在每台主机)、Kibana(可视化与仪表盘)。
- 端口与基础要求:开放 9200(ES HTTP)、9300(ES 集群)、5601(Kibana)、5044(Logstash Beats 输入);建议 SSD、至少 4–8GB 内存(ES),Filebeat 资源占用低(约 <50MB 内存)。
- 部署要点:
- 小规模可单节点部署;生产建议 ES 集群、按业务分索引、设置 ILM(索引生命周期管理)与快照策略。
- Filebeat 读取应用与系统日志(含 journal 导出),必要时由 Logstash 做 grok/date 解析后再写入 ES;Kibana 建立索引模式与可视化面板。
- 适用场景:多主机/大规模、需要搜索分析、告警与可视化。
三 轻量集中式替代 Loki + Promtail/Grafana
- 核心思路:用 Promtail 采集日志并打标签,推送到 Loki(按标签与时间的低成本存储),用 Grafana 查询与展示;相比 ES,部署与资源开销更轻,适合云原生与中小团队。
- 适用场景:Kubernetes/容器环境、强调易用性与成本可控的可观测性栈。
四 方案选型与对比
| 方案 |
架构与组件 |
存储位置 |
优势 |
局限 |
典型场景 |
| 本地方案 |
journald + rsyslog + logrotate |
/var/log、/var/log/journal |
系统自带、稳定、低开销、易合规 |
检索与横向分析能力有限 |
单机/少量主机、合规审计 |
| 集中式 ELFK |
Filebeat → Logstash → ES → Kibana |
ES 数据目录 |
全文检索、强大分析与可视化、可扩展 |
资源与运维复杂度较高 |
多主机、业务分析/告警 |
| 轻量集中 Loki |
Promtail → Loki → Grafana |
Loki 存储 |
轻量、按标签查询、成本低 |
全文检索与复杂分析弱于 ES |
容器/云原生、成本敏感 |
五 落地配置要点
- 系统日志容量与保留
- 编辑 /etc/systemd/journald.conf:Storage=persistent;SystemMaxUse=500M;MaxRetentionSec=1month;重启服务生效;按需执行 journalctl --vacuum-time / --vacuum-size 回收空间。
- 应用日志轮转
- 在 /etc/logrotate.d/ 为应用新增配置:daily;rotate 7;compress;delaycompress;missingok;notifempty;create 640 appuser appgroup;配合 size 条件触发。
- 集中式安全与高可用
- 仅开放必要端口(如 9200/9300/5601/5044);ES 开启安全特性(如内置用户与 TLS),生产建议多节点与快照仓库;Kibana 使用反向代理与访问控制。