Web 服务器日志归档的最佳实践(Linux + Nginx)

Web 服务器日志归档的最佳实践(Linux + Nginx)

我想保留/存档我的所有 Web 服务器日志,并且不希望 logrotate 删除任何日志。对此有什么推荐的方法吗?这是一台运行 Nginx 的 Linux 机器。提前致谢。

(我更喜欢使用 cronolog,但由于 Nginx 处理日志的方式,它似乎与 Nginx 不太兼容。)

答案1

使用 logrotate 来做,只需告诉它你想要什么......

/var/log/nginx/*.log {
    daily
    dateext
    missingok
    rotate 7305 # 2 decades
    olddir /var/log/nginx/old
    compress
    delaycompress
    notifempty
    create 644 nginx root
    sharedscripts
    postrotate
      if [ -f /var/run/nginx.pid ]; then
        kill -USR1 `cat /var/run/nginx.pid`
      fi
    endscript
}

我不使用 nginx,所以我使用了我为 postrotate 找到的一个示例...如果您已经有 logrotate 脚本,请先修改它。

关键部件:

  • “daily” 表示每天。您可以设置每周或基于大小,但这与“dateext”的交互效果不太好。
  • “dateext” 表示它将根据日期而不是简单的数字为轮换的日志文件命名;这样它就不必每天重命名每个日志文件你可以从文件名中知道日志文件的日期
  • “rotate 7305”——这是二十年。保留或多或少...logrotate 确实希望有某种形式的退休,但你可以将其设置得非常高。
  • “olddir” 必须位于同一个文件系统上,但这会将日志保存在单独的目录中,以便您可以弄清楚发生了什么
  • “delaycompress”和“create”有助于确保它与不想使用它的软件一起工作

相关内容