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

2 linux nginx log-files web-server logrotate

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

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

fre*_*eit 7

用 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
}
Run Code Online (Sandbox Code Playgroud)

我不使用 nginx,所以我使用了我为 postrotate 找到的一个例子......如果你已经有一个 logrotate 脚本,请从修改它开始。

关键部分:

  • “每天”是指每一天。您可以每周或基于大小进行,但这不会与“dateext”很好地交互。
  • “dateext”意味着它将根据日期而不是简单的数字为轮换的日志文件命名;这样就不必每天重命名每个日志文件您可以从文件名中得知日志文件的日期
  • “旋转 7305”——这是两个十年。保持或多或少…… logrotate 确实更喜欢某种形式的退休,但您可以将其设置得高得离谱。
  • “olddir”必须在同一个文件系统上,但这会将日志保存在一个单独的目录中,这样你就可以弄清楚发生了什么
  • “延迟压缩”和“创建”有助于确保它与不想使用它的软件一起工作