我正在尝试将每个日志文件传输到s3。有一个自动脚本可以选择tail_catina.log
并覆盖那里的任何内容。
我希望每个日志文件:tail_catalina.log1
,tail_catalina.log2
,tail_catalina.log3
等保存到我的s3。
我想要一切!!
答案 0 :(得分:6)
我使用 logrotate , s3cmd 和 cron 的基本组合来实现这一目标。
我做了detailed writeup and explanation on my blog。它适用于在Linux环境中运行Apache服务器的任何人。我希望大家觉得它很有帮助,因为我花了几个小时才把细节搞定了。
基本脚本如下所示,请参阅博客文章逐行细分:
# rotate the logs!
# common settings
compress
compresscmd /bin/gzip
compressoptions -9
compressext .gz
dateext
dateformat -%Y-%m-%d-%s
rotate 3
nomail
missingok
daily
size 5k
create 640 username username
/var/logs/www.runpartner.com/*.log {
sharedscripts
postrotate
sudo /usr/sbin/apache2ctl graceful
/usr/bin/s3cmd sync /var/logs/www.runpartner.com/*.gz s3://bucket-logs/www.runpartner.com/
endscript
}
答案 1 :(得分:1)
早期Beanstalk AMI未正确旋转日志。您可以在部署中使用最新的AMI来修复它。转到EC2控制台,AMI。通过选择亚马逊图像,“elasticbeanstalk”过滤列表,然后按“源”排序,以查看最新的AMI。
或者,您可以编辑Beanstalk服务器上的文件/etc/logrotate.conf.elasticbeanstalk以修复日志轮换。以下配置在文件名后附加时间戳。它产生的日志如tail_catalina.log-1322236861.gz,tail_catalina.log-1322240461.gz等。
/var/log/tomcat6/catalina.out /var/log/tomcat6/monitor_catalina.log /var/log/tomcat6/tail_catalina.log {
size 1M
missingok
rotate 2
compress
notifempty
copytruncate
dateext
dateformat -%s
lastaction
/bin/chown tomcat:elasticbeanstalk /var/log/tomcat6/*gz; /bin/chmod 664 /var/log/tomcat6/*gz
endscript
}