centos context如何日志管理
小樊
33
2025-12-13 17:17:15
CentOS 日志管理实操指南
一 核心组件与日志位置
- 日志体系由三部分构成:
- systemd-journald 负责采集内核与 systemd 单元日志,默认运行时在内存,可配置持久化;
- rsyslog 按“设施/优先级”规则写入本地文件或转发到远程;
- logrotate 负责按时间/大小切割、压缩与清理归档。
- 常见日志路径与用途:
- /var/log/messages:综合系统消息
- /var/log/secure:认证与安全相关(如 sshd)
- /var/log/maillog:邮件服务日志
- /var/log/cron:计划任务日志
- /var/log/boot.log:启动日志
- 内核环缓区:/var/log/dmesg
以上组件与路径是 CentOS 日志管理的基石,配合 journalctl、rsyslog 规则与 logrotate 策略即可完成大多数场景的采集、存储与归档。
二 查看与分析日志
- 使用 journalctl 高效检索结构化日志:
- 实时查看:journalctl -f
- 本次启动:journalctl -b;上一次启动:journalctl -b -1
- 按时间:journalctl --since “2025-12-13 00:00:00” --until “2025-12-13 12:00:00”
- 按服务:journalctl -u nginx.service -f;按进程:journalctl _PID=1234
- 按优先级:journalctl -p err;以 JSON 输出:journalctl -o json-pretty
- 磁盘占用与空间回收:journalctl --disk-usage,journalctl --vacuum-size=1G,journalctl --vacuum-time=90d
- 传统文本日志可用 grep/sed/awk 组合检索,例如:
- 在 messages 中查错误:grep -i error /var/log/messages
- 查看认证失败:grep ‘Failed password’ /var/log/secure
掌握 journalctl 的时间、服务、优先级与输出格式能力,可显著提升定位效率。
三 采集与转发配置
- rsyslog 主配置在 /etc/rsyslog.conf,建议将自定义规则放入 /etc/rsyslog.d/*.conf 便于维护。
- 选择器语法为“设施.优先级”,如:
- 仅记录认证错误:authpriv.err /var/log/auth-err.log
- 将某程序错误单独归档:
- if $programname == ‘httpd’ and $syslogseverity <= ‘error’ then /var/log/httpd/httpd_errors.log
- & stop
- 远程日志:
- 发送到远程(UDP/TCP 514):. @remote-log-server:514 或 . @@remote-log-server:514
- 接收端需在 rsyslog 配置中加载 imudp/imtcp 模块并开放防火墙端口。
- 持久化 journald(可选):
- 创建目录并设置权限:mkdir -p /var/log/journal && chmod 2775 /var/log/journal
- 编辑 /etc/systemd/journald.conf:Storage=persistent,按需设置 SystemMaxUse=…,ForwardToSyslog=yes
- 重启:systemctl restart systemd-journald
以上配置可实现本地精细化分类与远程集中采集,满足审计与合规需求。
四 轮转与保留策略
- 配置文件结构:主配置 /etc/logrotate.conf,应用配置 /etc/logrotate.d/;由 /etc/cron.daily/logrotate 每日触发执行。
- 常用指令:
- 周期:daily/weekly/monthly
- 保留份数:rotate N
- 压缩:compress(配合 delaycompress)
- 命名:dateext(使用日期后缀,避免覆盖)
- 条件:size 100M / minsize 10M(满足阈值才轮转)
- 创建新文件:create 0640 nginx adm
- 脚本:prerotate/postrotate(如通知进程重开日志)
- 示例
- Nginx:
- /var/log/nginx/*.log {
- daily; missingok; rotate 7; compress; delaycompress; notifempty;
- create 0640 nginx adm; sharedscripts;
- postrotate kill -USR1
cat /var/run/nginx.pid 2>/dev/null 2>/dev/null || true; endscript
- }
- 系统 messages:
- /var/log/messages {
- weekly; rotate 4; compress; dateext;
- create 0600 root root;
- postrotate /usr/bin/systemctl kill -s HUP rsyslogd.service >/dev/null 2>&1 || true; endscript
- }
- 登录审计 wtmp:
- /var/log/wtmp { monthly; minsize 1M; create 0664 root utmp; rotate 1; }
- 运维命令:
- 验证配置:logrotate -d /etc/logrotate.d/nginx
- 强制执行:logrotate -f /etc/logrotate.d/nginx
- 查看状态:logrotate -v …
上述策略覆盖按天/周/月、按大小、按保留份数与压缩归档的常见需求,适配绝大多数服务与应用。
五 集中化与合规安全建议
- 集中化方案:小规模或云原生环境可选 Grafana Loki(轻量、易运维),功能全面场景可选 ELK(Elasticsearch/Logstash/Kibana)。
- 安全与合规:
- 敏感信息脱敏后再写入日志;
- 远程传输与存储加密(TLS、磁盘/对象存储加密);
- 访问权限最小化(文件权限、系统 RBAC);
- 关键日志采用不可变存储(如 WORM)或外置审计;
- 明确保留周期与审计追踪策略,定期演练恢复与取证。
集中化与安全措施可提升可观测性、可靠性与合规性,同时降低单点风险。