TOP云提供高性价比云服务器租用,有中国内地/港澳台、海外等全球各地节点,TOP云国内云服务器只要有域名备案号就能直接用,无须重复备案;港澳台及海外云服务器不用备案,购买之后直接使用,省时省力省心。价格实惠,续费同价,2核2G5M仅需27元每月,8核8G50M仅需66元每月,更多配置套餐请进入下面网址了解:

TOP云总站云服务器:https://topyun.vip/server/buy.html

TOP云C站云服务器:https://c.topyun.vip/cart

    在云服务器中,日志文件会随着时间的推移不断增长,如果不加以管理,可能会占满磁盘空间,影响系统稳定性。Logrotate 是 Linux 系统自带的一个日志管理工具,可以自动对日志文件进行轮转(切割)、压缩、删除和邮件通知,从而有效管理日志文件。

    以下是详细的配置方法:


    一、Logrotate 简介

    Logrotate 是 Linux 系统自带的日志管理工具,主要功能包括:

    1. 日志轮转:将旧的日志文件重命名(如 app.log → app.log.1),并创建新的日志文件。

    2. 压缩日志:对旧的日志文件进行压缩(如 app.log.1.gz),节省磁盘空间。

    3. 删除旧日志:保留指定数量的日志文件,删除过期的日志。

    4. 邮件通知:可选地将日志发送到指定邮箱(需配置邮件服务)。

    Logrotate 通常由 cron 定时任务调用,默认每天执行一次。


    二、Logrotate 基本配置

    Logrotate 的配置文件分为主配置文件应用配置文件

    1. 主配置文件:/etc/logrotate.conf

      • 定义全局默认配置(如日志保留策略、压缩选项等)。

    2. 应用配置文件:/etc/logrotate.d/ 目录下的文件

      • 为特定应用或服务(如 Nginx、MySQL)单独配置日志轮转规则。


    三、配置 Logrotate 轮转日志(以 Nginx 为例)

    1. 确认 Nginx 日志路径

    Nginx 的默认日志路径通常为:

    • 访问日志:/var/log/nginx/access.log

    • 错误日志:/var/log/nginx/error.log

    2. 创建 Nginx 的 Logrotate 配置文件

    在 /etc/logrotate.d/ 目录下创建一个新的配置文件,例如 nginx:

    sudo vim /etc/logrotate.d/nginx

    3. 配置内容示例

    以下是一个典型的 Nginx 日志轮转配置:

    /var/log/nginx/*.log {
        daily                # 每天轮转一次日志
        missingok            # 如果日志文件不存在,不报错
        rotate 14            # 保留最近 14 个日志文件
        compress             # 压缩旧日志文件(使用 gzip)
        delaycompress        # 延迟压缩,即不压缩最新的一个旧日志文件(如 app.log.1 不压缩,app.log.2.gz 压缩)
        notifempty           # 如果日志文件为空,不轮转
        create 0640 www-data adm  # 创建新日志文件时设置权限和所有者(根据实际用户调整)
        sharedscripts        # 所有日志处理完成后执行脚本(避免重复执行)
        postrotate           # 轮转后执行的命令
            if [ -f /var/run/nginx.pid ]; then
                kill -USR1 `cat /var/run/nginx.pid`  # 通知 Nginx 重新打开日志文件
            fi
        endscript
    }

    配置项说明:

    配置项说明
    daily每天轮转一次日志(可选:weekly、monthly 或指定具体时间)。
    missingok如果日志文件不存在,不报错。
    rotate 14保留最近 14 个日志文件(超过的会被删除)。
    compress使用 gzip 压缩旧日志文件(如 app.log.1.gz)。
    delaycompress延迟压缩,即不压缩最新的一个旧日志文件(如 app.log.1 不压缩,app.log.2.gz 压缩)。
    notifempty如果日志文件为空,不轮转。
    create 0640 www-data adm创建新日志文件时设置权限(0640)和所有者(www-data 用户和 adm 组,根据实际调整)。
    sharedscripts所有日志处理完成后执行脚本(避免重复执行)。
    postrotate轮转后执行的命令(如通知 Nginx 重新打开日志文件)。

    4. 测试 Logrotate 配置是否正确

    在正式启用之前,可以先手动测试配置是否正确:

    sudo logrotate -d /etc/logrotate.d/nginx  # 调试模式(不实际执行)
    sudo logrotate -vf /etc/logrotate.d/nginx # 强制运行并显示详细输出
    • -d:调试模式,只打印操作而不实际执行。

    • -v:显示详细输出。

    • -f:强制运行(即使未到轮转时间)。


    5. 手动触发 Logrotate(可选)

    如果需要立即轮转日志(而不等待 cron 定时任务),可以手动运行:

    sudo logrotate -vf /etc/logrotate.d/nginx

    四、Logrotate 的定时任务

    Logrotate 默认由 cron 定时任务调用,配置文件通常位于:

    /etc/cron.daily/logrotate

    该脚本会每天调用一次 Logrotate,读取 /etc/logrotate.conf 和 /etc/logrotate.d/ 下的配置文件。

    如果需要更频繁的轮转(如每小时),可以自定义 cron 任务:

    sudo crontab -e

    添加以下内容(每小时运行一次):

    0 * * * * /usr/sbin/logrotate /etc/logrotate.conf

    五、其他常见服务的 Logrotate 配置示例

    1. MySQL 日志轮转

    MySQL 的日志文件通常包括:

    • 错误日志:/var/log/mysql/error.log

    • 慢查询日志:/var/log/mysql/mysql-slow.log

    配置文件示例(/etc/logrotate.d/mysql):

    /var/log/mysql/*.log {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        notifempty
        create 640 mysql adm
        sharedscripts
        postrotate if [ -f /var/run/mysqld/mysqld.pid ]; then kill -USR1 `cat /var/run/mysqld/mysqld.pid` fi endscript
    }

    2. 系统日志轮转(如 /var/log/syslog)

    系统日志通常由 rsyslog 或 syslog-ng 管理,Logrotate 的默认配置文件为 /etc/logrotate.d/rsyslog,内容如下:

    /var/log/syslog {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        notifempty
        create 640 syslog adm
        sharedscripts
        postrotate
            /usr/lib/rsyslog/rsyslog-rotate
        endscript
    }

    六、注意事项

    1. 权限问题

      • 确保 Logrotate 创建的新日志文件具有正确的权限和所有者(如 Nginx 需要 www-data 用户写入权限)。

      • 如果日志文件属于特定用户(如 MySQL),需在 create 选项中指定正确的用户和组。

    2. 磁盘空间监控

      • 即使配置了 Logrotate,仍需定期检查磁盘空间,避免日志文件异常增长。

    3. 日志备份

      • 如果需要长期保存日志,可以将压缩后的日志文件(如 app.log.1.gz)备份到其他存储(如对象存储、NAS 等)。

    4. 调试 Logrotate

      • 如果日志未轮转,可以使用 -d 或 -v 参数调试配置。


    七、总结

    Logrotate 是 Linux 系统管理日志的核心工具,通过合理配置可以:

    • 自动切割日志文件,避免单个日志文件过大。

    • 压缩旧日志,节省磁盘空间。

    • 删除过期日志,防止磁盘占满。

    • 通知服务重新打开日志文件,确保服务正常运行。


不容错过
Powered By TOPYUN 云产品资讯