使用AWS自动扩展EC2时如何保留Apache日志

7
我们使用AWS EC2和自动扩展在典型的LAMP堆栈(Ubuntu)上构建了一个网站。
尽管扩展等工作正常,但由于实例是“临时的”,因此我们的Apache日志在负载飙升后不会被保留(因为我们不保留卷或实例)。
有没有一种“最佳实践/最可靠”的方法来保留这些实例的Apache日志?
一个想法是通过编写一个Bash脚本,在关机期间将日志文件复制到S3,使用/etc/rc0.d功能(在关机时运行脚本)来执行该脚本。

你最终在这里做了什么?我正在看同样的方法,但发现在关机期间没有时间推送到S3。 - digidigo
我们采用了我提出的方法,这可能是不可靠的,请参见下面的链接(尽管到目前为止它运行正常)。rdrey 提供的解决方案可能更好。http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html 引用:“如果您在实例终止时运行脚本,则您的实例可能会异常终止,因为我们无法确保关闭脚本的运行。 Amazon EC2 尝试干净地关闭实例并运行任何系统关机脚本;但是,某些事件(例如硬件故障)可能会阻止这些系统关机脚本的运行。” - BoomShaka
另一个潜在的好读物:https://forums.aws.amazon.com/message.jspa?messageID=183672# - BoomShaka
1个回答

8
“最佳实践”是将所有日志聚合在一个允许您归档和搜索它们的服务器上。您可以在S3中备份旧日志,并最终将它们存档到Glacier中。
为了使所有这些工作正常运行,您需要设置apache来写入每小时或每分钟的日志,并编写cronjob将它们同步到某个中央位置或上传到S3。
查看开源聚合和搜索解决方案http://logstash.net/,您可以在自己的实例上运行,以及非免费完全托管的解决方案http://loggly.com/
编辑:我的第一个想法是“不要在关闭时这样做”。您应尽可能定期同步日志文件,并因此(例如,如果您进行每分钟的日志记录)获得“准实时”日志聚合/备份和搜索。

最佳解决方案是将日志直接流式传输到生成日志实例之外的存储/服务中。但是,许多遗留应用程序不支持此功能,需要费尽心思才能使这样简单的任务正常工作。 类似于“StreamLogAppender”。 - Daniel Hajduk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接