Vil*_*lx- 5 amazon-s3 amazon-web-services amazon-elastic-beanstalk
我们有一个位于 Amazon Elastic Beanstalk 上的 PHP 应用程序。该应用程序已启用日志轮换和备份到 S3。Apache 访问和错误日志每小时都会正确轮换和备份。
但是,应用程序也会创建自己的日志文件。我想用它做同样的事情——它应该每小时轮换一次并备份到 S3。按照此处的说明,我创建了以下文件:
.ebextensions/publish-logs.config
files:
"/opt/elasticbeanstalk/tasks/publishlogs.d/cloud-init.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/app/current/log/*.log
Run Code Online (Sandbox Code Playgroud)
然后我将新版本上传到亚马逊。
结果 - 我看到日志文件在第一次轮换时备份到 S3 ONCE。它没有被压缩,只是复制。在那之后,什么都没有。没有新的 S3 备份。没有轮换。下载捆绑日志时,该文件就在那里,现在大约有 80MB(在几天内累积)。
亚马逊的文档非常稀少。但它确实说:
当您为日志轮换配置应用程序的日志文件时,应用程序不需要创建日志文件的副本。Elastic Beanstalk 将 logrotate 配置为为每次轮换制作应用程序日志文件的副本。
我做错了什么?
为此,您需要配置 logrotate,这有点棘手。因为高度取决于您使用的实例。但让我试试。将这两个添加files
到您的配置中。首先为 logrotate 创建配置,然后配置 cron 以使用该配置运行 logrotate。
files:
"/etc/logrotate.d/logrotate.elasticbeanstalk.php.conf":
mode: "000655"
owner: root
group: root
content: |
/var/app/current/log/*.log {
rotate 14
size 100M
daily
compress
delaycompress
}
"/etc/cron.daily/cron.logrotate.elasticbeanstalk.php.conf":
mode: "000655"
owner: root
group: root
content: |
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.d/logrotate.elasticbeanstalk.php.conf
/sbin/service awslogs restart
Run Code Online (Sandbox Code Playgroud)
试一试。如果失败 - 请提供您正在使用的 AMI ID
归档时间: |
|
查看次数: |
1662 次 |
最近记录: |