ubuntu

Ubuntu中Nginx日志如何管理

小樊
39
2025-10-25 13:01:27
栏目: 智能运维

Ubuntu中Nginx日志管理指南

Nginx日志是监控服务器运行状态、排查问题的核心工具,主要包括访问日志(access.log)(记录客户端请求详情)和错误日志(error.log)(记录服务器处理请求时的错误信息)。合理管理日志(配置、轮转、清理、分析)能有效释放磁盘空间、提升运维效率。

一、日志文件位置

Ubuntu系统中,Nginx默认日志文件集中存储在/var/log/nginx/目录下,常见文件及用途如下:

二、日志轮转配置(自动归档与清理)

日志轮转是避免日志文件无限增长的关键手段,Ubuntu推荐使用logrotate工具(系统自带)实现自动轮转。以下是具体配置步骤:

1. 确认logrotate安装

Ubuntu默认已安装logrotate,可通过以下命令验证:

which logrotate

若未安装,执行以下命令安装:

sudo apt-get install logrotate

2. 创建/编辑Nginx专用logrotate配置文件

/etc/logrotate.d/目录下创建nginx文件(若已存在则直接编辑):

sudo nano /etc/logrotate.d/nginx

添加以下配置(可根据需求调整):

/var/log/nginx/*.log {
    daily                   # 每天轮转一次(可选:weekly/monthly)
    missingok               # 若日志文件不存在,不报错
    rotate 14               # 保留最近14天的日志(可根据磁盘空间调整)
    compress                # 压缩旧日志(节省空间)
    delaycompress           # 延迟压缩(如rotate 14时,第14天的日志不压缩,第15天压缩第14天的)
    notifempty              # 若日志为空,不轮转
    create 0640 www-data adm # 轮转后创建新日志文件,权限640,所有者www-data(Nginx用户),组adm
    sharedscripts           # 所有日志轮转完成后,统一执行postrotate脚本
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`  # 向Nginx主进程发送信号,重新打开日志文件
        fi
    endscript
}

配置说明

3. 测试logrotate配置

手动运行以下命令,模拟日志轮转(无错误则配置正确):

sudo logrotate -d /etc/logrotate.d/nginx  # 调试模式(不实际执行)
sudo logrotate -f /etc/logrotate.d/nginx  # 强制立即执行

4. 验证自动轮转

logrotate默认通过系统cron任务(/etc/cron.daily/logrotate)每天自动执行,无需额外配置。可通过查看/var/lib/logrotate/status文件,确认Nginx日志的轮转记录。

三、手动清理旧日志

若需临时清理旧日志(如磁盘空间不足),可使用以下命令:

1. 删除30天前的旧日志

sudo find /var/log/nginx/ -type f -name "*.log" -mtime +30 -exec rm -f {} \;

说明

2. 压缩30天前的旧日志(保留原文件)

sudo find /var/log/nginx/ -type f -name "*.log" -mtime +30 -exec gzip {} \;

压缩后的文件会以.gz结尾(如access.log.1.gz),节省磁盘空间。

四、日志分析与监控

日志分析能帮助快速定位问题(如404错误、500错误、高频访问IP等),以下是常用工具:

1. 实时查看日志

2. 过滤特定日志

3. 使用高级工具

4. 日志监控与警报

五、注意事项

  1. 日志权限:确保/var/log/nginx/目录及日志文件的权限正确(通常为root:rootwww-data:adm),避免未经授权的访问;
  2. 磁盘空间:定期检查/var/log目录的磁盘使用情况(df -h /var/log),避免日志占满磁盘;
  3. 配置备份:修改Nginx或logrotate配置前,建议备份原文件(如sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak);
  4. 自定义日志格式:若需记录更多信息(如请求时间、上游响应时间),可修改Nginx的log_format指令(参考Nginx官方文档)。

0
看了该问题的人还看了