Elastic Beanstalk:Amazon Linux 2 平台上的日志任务自定义

2024-04-21

我想知道该怎么做日志任务定制 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.logging.html#health-logs-extend在新的 Elastic Beanstalk 平台(基于 Amazon Linux 2 的平台)中。具体来说,我正在比较:

  • Old:在 64 位 Amazon Linux/2.14.3 上运行的单容器 Docker
  • New:在 64 位 Amazon Linux 2/3.0.0 上运行的单容器 Docker

(我的问题实际上与 Docker 本身无关,我推测任何新的 Elastic Beanstalk 平台都存在该问题)。

以前我可以遵循亚马逊的食谱,这意味着将文件放入/opt/elasticbeanstalk/tasks/bundlelogs.d/然后就会采取行动。这不再是真的。

这有改变吗?我找不到它有记录的 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.migration-al.html。有人在较新的 Elastic Beanstalk 平台上成功进行日志任务自定义吗?如果是这样,怎么办?

最小工作示例

我创建了一个最小的工作示例并部署在两个平台上。

Dockerfile:

FROM ubuntu
COPY daemon-run.sh /daemon-run.sh
RUN chmod +x /daemon-run.sh
EXPOSE 80
ENTRYPOINT ["/daemon-run.sh"]

Dockerrun.aws.json:

{
  "AWSEBDockerrunVersion": "1",
  "Logging": "/var/mydaemon"
}

daemon-run.sh:

#!/bin/bash
echo "Starting daemon" # output to stdout
mkdir -p /var/mydaemon/deeperlogs
while true; do
   echo "$(date '+%Y-%m-%dT%H:%M:%S%:z')  Hello World" >> /var/mydaemon/deeperlogs/app_$$.log
   sleep 5
done

.ebextensions/mydaemon-logfiles.config:

files: 
  "/opt/elasticbeanstalk/tasks/bundlelogs.d/mydaemon-logs.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
       /var/log/eb-docker/containers/eb-current-app/deeperlogs/*.log

如果我在旧平台上执行“完整日志”操作,我将获得一个带有我的 ZIPdeeperlogs包括 里面var/log/eb-docker/containers/eb-current-app。在新平台上我没有。

调查

如果您查看磁盘,您会发现新的 Elastic Beanstalk 没有/opt/elasticbeanstalk/tasks根本没有文件夹,与旧文件夹不同。唔。


在 Amazon Linux 2 上,该文件夹是:

/opt/elasticbeanstalk/config/private/logtasks/bundle

The .ebextensions/mydaemon-logfiles.config应该:

files: 
  "/opt/elasticbeanstalk/config/private/logtasks/bundle/mydaemon-logs.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
       /var/mydaemon/deeperlogs/*.log

container_commands:
  append_deeperlogs_to_applogs:
    command: echo -e "\n/var/log/eb-docker/containers/eb-current-app/deeperlogs/*" >> /opt/elasticbeanstalk/config/private/logtasks/bundle/applogs

The mydaemon-logfiles.config还添加了deeperlogs into applogs文件。没有它deeperlogs将不会包含在下载日志 zip 包中。这很有趣,因为该文件夹将位于正确的位置,即/var/log/eb-docker/containers/eb-current-app/deeperlogs/。但没有明确列出applogs,生成 zip 包时将跳过它。

我使用单个 docker 环境(3.0.1)对其进行了测试。

成功包含完整日志包deeperlogs具有正确的日志数据:

希望这会有所帮助。我还没有找到任何参考资料。 AWS 文档没有记录这一点,因为它主要基于 Amazon Linux 1,而不是 Amazon Linux 2。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elastic Beanstalk:Amazon Linux 2 平台上的日志任务自定义 的相关文章

随机推荐