HCRM博客

centos7 logrotate

CentOS7 日志管理利器:Logrotate 深度解析

服务器运维中,日志文件的管理直接影响系统性能和故障排查效率,对于 CentOS7 用户而言,Logrotate 是一个不可或缺的自动化工具,它能高效管理日志文件的轮转、压缩及清理,本文将深入探讨其配置逻辑与实战技巧,助你轻松驾驭日志管理。

centos7 logrotate-图1
(图片来源网络,侵权删除)

Logrotate 的核心功能

Logrotate 通过预设规则,自动对日志文件执行以下操作:

1、轮转(Rotate):按时间或大小切割日志,避免单个文件过大。

2、压缩:压缩旧日志节省存储空间(支持 gzip、bzip2 等格式)。

3、清理:删除超出保留期限的旧日志,防止磁盘占满。

4、权限控制:轮转后自动设置新日志文件的权限与属主。

CentOS7 默认配置解析

CentOS7 内置 Logrotate,默认配置文件位于/etc/logrotate.conf,关键参数如下:

centos7 logrotate-图2
(图片来源网络,侵权删除)
  • weekly # 每周轮转一次
  • rotate 4 # 保留最近4份历史日志
  • create # 轮转后创建新日志文件
  • dateext # 为旧日志添加日期后缀
  • compress # 启用压缩(默认gzip)
  • include /etc/logrotate.d # 加载自定义配置目录

系统服务(如 Nginx、MySQL)的日志配置通常存放在/etc/logrotate.d/ 目录,支持按需独立管理。

自定义日志轮转规则

以管理 Web 服务的访问日志/var/log/nginx/access.log 为例,新建配置文件/etc/logrotate.d/nginx

  • /var/log/nginx/access.log {
  • daily # 每天轮转
  • rotate 30 # 保留30天日志
  • missingok # 日志不存在时不报错
  • notifempty # 空文件不轮转
  • compress # 启用压缩
  • delaycompress # 延迟压缩前一个轮转文件
  • sharedscripts # 所有日志处理完后执行脚本
  • postrotate
  • /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || true
  • endscript
  • }

关键参数说明

postrotate/endscript:轮转后触发命令(如通知 Nginx 重新打开日志文件)。

delaycompress:避免同时压缩多个文件导致瞬时负载过高。

常见问题与排查技巧

1、轮转未生效

centos7 logrotate-图3
(图片来源网络,侵权删除)

- 检查 Cron 任务:Logrotate 依赖/etc/cron.daily/logrotate 定时执行,确保该任务未被禁用。

- 手动测试:执行logrotate -vf /etc/logrotate.d/nginx 强制运行并显示详细过程。

2、日志权限错误

- 轮转后新日志文件权限需与原文件一致,可通过create 0640 nginx nginx 参数显式指定属主和权限。

3、磁盘空间不足

- 设置maxsize 100M,当日志超过指定大小时立即触发轮转(需 Logrotate 3.8.1 以上版本)。

个人观点

Logrotate 的灵活性使其成为 CentOS7 日志管理的首选方案,但需注意避免“配置即遗忘”,建议定期审查日志保留策略,结合监控工具(如 Zabbix)实时跟踪磁盘使用率,对于高并发场景,可考虑将日志轮转周期从“按天”调整为“按小时”,并在postrotate 脚本中优化服务重载逻辑,最大限度减少性能波动。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/28995.html

分享:
扫描分享到社交APP
上一篇
下一篇