温馨提示×

Debian系统中Nginx日志管理技巧

小樊
50
2025-08-27 04:19:11
栏目: 智能运维

Debian系统Nginx日志管理技巧

一、日志轮转与清理

  • 使用logrotate工具(推荐)

    1. 安装sudo apt install logrotate
    2. 配置:编辑/etc/logrotate.d/nginx,添加以下内容:
      /var/log/nginx/*.log {
          daily       # 每日轮转
          missingok   # 忽略丢失文件
          rotate 14   # 保留14天日志
          compress    # 压缩旧日志
          delaycompress # 延迟压缩
          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
      }
      
    3. 测试与生效sudo logrotate -d /etc/logrotate.d/nginx(测试),sudo logrotate -f /etc/logrotate.d/nginx(强制执行)。
  • 手动清理(可选)
    通过find命令删除旧日志,例如删除30天前的日志:

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

二、实时监控与分析

  • 命令行工具
    • tail -f /var/log/nginx/access.log:实时查看访问日志。
    • grep "ERROR" /var/log/nginx/error.log:筛选错误日志中的关键字。
  • 图形化工具
    • ngxtop:实时分析日志,支持按状态码、请求路径等维度统计。
      sudo pip3 install ngxtop
      ngxtop -l /var/log/nginx/access.log
      
    • Nginx-ui:通过Web界面查看日志,需搭配Docker运行。

三、日志格式优化

自定义Nginx日志格式,便于分析:
编辑/etc/nginx/nginx.conf,在http模块中添加:

log_format custom '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log custom;

四、自动化与扩展

  • 定时任务:通过cron定时执行日志清理或备份脚本。
  • 集中式管理:结合ELK Stack(Elasticsearch+Logstash+Kibana)实现多服务器日志统一分析。

参考来源

0