温馨提示×

Debian中Nginx日志管理方法是什么

小樊
41
2025-11-26 06:20:10
栏目: 智能运维

Debian 中 Nginx 日志管理方法

一 日志位置与查看

  • 默认日志路径为:/var/log/nginx/access.log(访问日志)与 /var/log/nginx/error.log(错误日志)。
  • 常用查看方式:
    • 实时查看访问日志:tail -f /var/log/nginx/access.log
    • 实时查看错误日志:tail -f /var/log/nginx/error.log
    • 查看服务日志:journalctl -u nginx -f
  • 多虚拟主机场景下,常见按站点切分的访问日志(如:other_vhost_access.log)也位于同一目录。

二 自定义日志格式与输出路径

  • /etc/nginx/nginx.confhttp 块中定义格式,在 serverlocation 中引用:
    • 示例:
      http {
          log_format custom '$remote_addr - $remote_user [$time_local] "$request" '
                           '$status $body_bytes_sent "$http_referer" '
                           '"$http_user_agent" "$http_x_forwarded_for"';
          access_log /var/log/nginx/access.log custom;
          error_log  /var/log/nginx/error.log;
      }
      
  • 修改配置后建议先检查语法并平滑重载:
    • sudo nginx -t
    • sudo systemctl reload nginx

三 日志轮转 Logrotate 配置

  • 创建或编辑 /etc/logrotate.d/nginx
    /var/log/nginx/*.log {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        postrotate
            if [ -f /var/run/nginx.pid ]; then
                kill -USR1 $(cat /var/run/nginx.pid)
            fi
        endscript
    }
    
  • 关键参数说明:
    • daily:按天轮转;rotate 7:保留最近 7 份;compress/delaycompress:压缩旧日志并延迟一次;
    • notifempty:空文件不轮转;create 0640 www-data adm:新建日志权限与属主;
    • postrotate … kill -USR1:通知 Nginx 重新打开日志文件,确保写入新文件。
  • 测试与执行:
    • 语法/调试:sudo logrotate -d /etc/logrotate.conf
    • 强制执行:sudo logrotate -f /etc/logrotate.d/nginx
  • 自动化:系统通常通过 /etc/cron.daily/logrotate 每日触发。

四 监控分析与备份

  • 实时监控与分析:
    • 关键词检索:grep "ERROR" /var/log/nginx/error.log
    • 命令行分析:awk/grep 组合统计与过滤
    • 可视化/集中化:GoAccess(实时分析)、ELK Stack(Elasticsearch/Logstash/Kibana)、GraylogGrafana Loki
  • 备份与清理:
    • 归档压缩:tarrsync 定期备份 /var/log/nginx/
    • 清理旧压缩日志:find /var/log/nginx/ -type f -name "access.log.*.gz" -mtime +30 -delete

0