温馨提示×

centos日志管理有哪些最佳实践

小樊
40
2026-01-08 02:17:44
栏目: 智能运维

CentOS日志管理最佳实践

一 基础架构与采集

  • rsyslog 为核心进行本地日志采集、分类与转发:主配置在 /etc/rsyslog.conf,建议将自定义规则放入 /etc/rsyslog.d/*.conf 便于维护。按“设施(Facility)+优先级(Priority)”编写选择器,例如:authpriv.mail.info.err,将不同来源与级别日志分流到独立文件或远程。远程发送可用 UDP/TCP:@remote:514(UDP)、@@remote:514(TCP),服务端需加载 imudp/imtcp 模块接收。为结构化传输可定义 JSON 模板并使用 omfwd 转发到 Logstash/ELKLoki。规则自上而下匹配,越具体越靠前,匹配后可 stop 避免重复处理。

二 本地日志轮转与保留

  • 使用 logrotate 做按天/按大小轮转、压缩与清理:主配置 /etc/logrotate.conf,服务配置置于 /etc/logrotate.d/。典型 Nginx 配置示例:
    /var/log/nginx/*.log {
        daily
        rotate 7
        compress
        delaycompress
        missingok
        notifempty
        create 0640 nginx adm
        sharedscripts
        postrotate
            if [ -f /var/run/nginx.pid ]; then
                kill -USR1 `cat /var/run/nginx.pid`
            fi
        endscript
    }
    
    要点:按时间(如 daily)或按大小(如 size 100M)触发;保留份数(如 rotate 7);压缩节省空间;轮转后通过 kill -USR1 通知进程重开文件句柄;权限与属主(如 0640 nginx adm)遵循最小权限。排障与演练可用 logrotate -d(预演)、-f(强制)、-v(详细)。多数系统由 cron 每日触发 logrotate,也可为特定目录自建定时任务。

三 systemd 与内核日志管理

  • 使用 journald 管理 systemd 与内核日志:查看磁盘占用 journalctl --disk-usage;按时间保留 journalctl --vacuum-time 1w,按容量保留 journalctl --vacuum-size 100M;可按服务清理 journalctl --vacuum-by-service ssh.service。建议为 journal 设置持久化存储(编辑 /etc/systemd/journald.confStorage=persistent),并限制单文件与总占用(如 SystemMaxUse=MaxRetentionSec=),避免 /var/log/journal 无限增长。

四 安全与合规

  • 防止敏感信息泄露:在应用与 rsyslog 侧进行脱敏(如掩码手机号、密钥);对外传输与落盘加密(TLS 传输、磁盘/目录加密);访问日志仅对授权人员开放,采用 RBAC 与最小权限;关键日志落地后设为不可变(如 chattr +i)或使用 WORM 存储,降低被篡改风险;建立保留策略(如安全类日志保留 ≥180 天、业务日志 7–90 天 视合规而定),并保留审计追踪证据链(谁在何时对何资源做了何操作)。集中式平台侧开启认证、授权与审计日志。

五 集中化与可视化及运维要点

  • 集中式方案选型与落地:
    • ELK(Elasticsearch/Logstash/Kibana):功能全面、生态成熟,适合复杂查询与深度分析,但资源消耗较大,适合中大型场景。
    • Grafana Loki + Promtail:只索引元数据、资源占用低,与 Grafana 深度集成,适合云原生与成本敏感团队。
    • Graylog:界面友好、开箱即用,权限与告警能力完善,适合替代 ELK 的团队。
    • Splunk:商业方案,功能强、成本高,适合大型企业级合规与安全分析。
  • 运维与排障清单:
    • 配置语法与连通性:rsyslog 规则顺序与 stop 使用是否正确;远程 UDP/TCP 514 连通性;模板与字段映射是否符合下游解析(如 JSON)。
    • 轮转有效性:用 logrotate -d/-f 验证;确认 postrotate 能正确通知进程(如 kill -USR1);检查 /var/log/ 权限与属主;监控 journalctl --disk-usage 与磁盘余量。
    • 特殊场景:对 nohup.out 等长期输出,使用 logrotate 按天/按大小切分并压缩;必要时配合 split 做固定大小分片,便于传输与归档。

0