我想创建两个方面的新标准:
我的应用程序生成的日志需要多长时间生成并轮换?
如何将日志传输到 Amazon S3 作为备份服务器?
我正在考虑使用 logrotate,以这种方式旋转和压缩我的日常文件:
{filename}-{year}-{month}-{day}-{r-months}.gz
该r-months
变量的意思是remain-months
文件应该在 S3 中保留多少个月,超过该时间的文件应该被删除。
我的一个朋友给了我一个想法,我应该compress the logs daily
(采用上面提出的新格式),然后这些文件应该被发送到我们在 Amazon S3 中的存储桶中。然后files older than 7 days should be removed by logrotate
(因为它们已经在 S3 中了)。
如今,我们的应用程序使用log4j
和其他程序来生成日志。
1) 我们是否应该禁用由我们的应用程序生成的版本日志并仅使用 logrotate 处理?
2) 您认为这会导致某些应用程序崩溃吗?
3) 这种新的日志格式很好吗?
4) 如何将文件发送到 S3? 现在,我正在使用s3cmd
,您推荐我其他工具了吗?
答案1
关于你的问题#4:
您可以将 S3 存储桶挂载为本地分区,并使用位于服务器文件系统上的 S3 文件。一个号码的好的可用的开源工具。
但从我的角度来看,我建议您看看我的项目:里约热内卢,一个用于挂载 Amazon S3 存储桶的用户空间文件系统。该项目的目标和与其他类似工具相比的主要优势是:简单、操作速度快、代码无错误。
目前该项目处于“测试”状态,但它已经在几个高负载的文件服务器上运行了相当长一段时间(里约热内卢提供对位于 S3 的文件到 ftp/sftp 服务器的访问)。
我们正在围绕我们的项目建立一个社区,并寻求更多人加入我们的项目,讨论未来计划并帮助进行测试。我们这边提供快速错误修复,并会听取您添加新功能的请求。
快速操作方法:
您可以使用以下命令挂载存储桶(假设您已经安装了 RioFS 并已导出 AWSACCESSKEYID 和 AWSSECRETACCESSKEY 环境变量):
riofs http://s3.amazonaws.com your_bucket_name /path/to/localfolder
(请参阅项目描述并运行riofs --help
以获取命令行参数的帮助)
请注意,该项目仍在开发中,可能仍存在一些错误。如果您发现某些功能未按预期运行:请在项目的 GitHub 页面上填写问题报告。
希望它能有所帮助,我们期待看到您加入我们的社区!