几个月前,我把所有网站都转到了 Amazon 的 EC2 服务,今天我发现我的硬盘容量已超过 90%。经过一番调查,似乎其中大部分都被 apache 创建的 access.log 文件占用了。
我想知道处理这个问题的最佳方法是什么。我的下意识反应是编写一个每天(或每周、每月,无论什么)运行的小脚本,将所有内容压缩并放在其他地方,以备将来需要时使用 — 最有可能是 Amazon 的 S3。
这是最好的方法吗?或者是否有其他人正在使用的标准做法供我遵循?
编辑:回答一位评论者的问题,该服务器当前运行的是 Linux——准确地说是 Ubuntu
答案1
使用日志旋转实用程序来轮换您的日志。您可以使用postrotate
选项运行命令将它们分流到 S3,例如
/usr/bin/s3cmd put /var/log/apache2/access.log.1 s3://your.s3.host/access.log.1
会成为这个技巧。你可能想要使用该datext
选项,这样你的文件就会有日期,例如,access.log-20120713
这样你的 postrotate 脚本就会变得稍微复杂一些
/usr/bin/s3cmd put /var/log/apache2/access.log-$(date "+%Y%m%d") s3://your.s3.host/access.log-$(date "+%Y%m%d")
如果你使用compress
选项(推荐),你的后旋转将变成
/usr/bin/s3cmd put /var/log/apache2/access.log-$(date "+%Y%m%d").gz s3://your.s3.host/access.log-$(date "+%Y%m%d"),gz
答案2
您首先要考虑的是压缩。由于 Apache 日志的格式,它们的压缩效果非常好。
就像 Iain 建议的那样,logrotate 是你的好朋友。它可以处理压缩,还允许你指定要保留日志的时间。
如果您坚持保留所有日志,您可以设置 logrotate 来邮寄旧日志,或者使用 cron 设置辅助脚本将旧日志存储在 S3 或其他地方。
这是一个很好的资源如果您以前从未使用过 logrotate,请开始使用它。