如何将我自己的日志添加到 Amazon Elastic Beanstalk 上的日志轮换/S3 备份?

Posted

技术标签:

【中文标题】如何将我自己的日志添加到 Amazon Elastic Beanstalk 上的日志轮换/S3 备份?【英文标题】:How to add my own log to log rotation/S3 backup on Amazon Elastic Beanstalk? 【发布时间】:2018-05-07 08:41:00 【问题描述】:

我们有一个基于 Amazon Elastic Beanstalk 的 php 应用程序。该应用程序启用了日志轮换和备份到 S3。 Apache 访问和错误日​​志确实会每小时正确轮换和备份一次。

但是,应用程序也会创建自己的日志文件。我想用它做同样的事情——它应该每小时旋转一次并备份到 S3。按照here 的说明,我创建了以下文件:

.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

然后我将新版本上传到亚马逊。

结果 - 我看到日志文件在第一次轮换时备份到 S3 ONCE。它没有被压缩,只是复制。在那之后,什么都没有。没有新的 S3 备份。没有旋转。下载捆绑日志时,文件就在那里,现在大约 80MB(几天累积)。

亚马逊的文档非常少。但它确实说:

当您配置应用程序的日志文件以进行日志轮换时,应用程序不需要创建日志文件的副本。 Elastic Beanstalk 将 logrotate 配置为为每次轮换制作应用程序日志文件的副本。

我做错了什么?

【问题讨论】:

【参考方案1】:

为此,您需要配置 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

试一试。如果失败 - 请提供您正在使用的 AMI ID

【讨论】:

真的需要第二部分吗?文档说You can find Elastic Beanstalk configuration files for logrotate in /etc/logrotate.elasticbeanstalk.hourly/ ... The configuration files are invoked by cron jobs in /etc/cron.hourly/ - 这表明我不需要配置cron,对吗? (我实际上希望它们每小时轮换一次) 哦,顺便说一句,我说的文档是docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 今天晚些时候我会检查,并提供详细解释 没关系,我想是的。我设法通过 ssh 连接到其中一个盒子,看看亚马逊自己做了什么。一切都在那里,就像你描述的那样。我仍在尝试使该配置正常工作,但应该很快就会完成。

以上是关于如何将我自己的日志添加到 Amazon Elastic Beanstalk 上的日志轮换/S3 备份?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我自己的文化资源添加到 tfs 网络访问

如何将日志从 Amazon S3 存储桶导入到 cloudwatch

Amazon ECS 系统日志到 Loggly

如何将我自己的 XML 配置文件添加到 Windows 服务 C#

AWS:将日志从 Amazon CloudWatch 导出到 Amazon Redshift

如何使用 Amazon Route 53 将子域重定向到特定页面?