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

问题描述 投票:2回答:1

我想知道如何做 日志任务自定义 在新的Elastic Beanstalk平台(基于Amazon Linux 2的那个平台)。具体来说,我在比较。

  • 旧的: 在64位Amazon Linux2.14.3上运行的单容器Docker
  • 新的: 单容器Docker运行在64位Amazon Linux 23.0.0上。

(我的问题其实与Docker本身无关,我猜测这个问题存在于任何一个新的Elastic Beanstalk平台上)。

以前我可以按照Amazon的配方,即把一个文件放到 /opt/elasticbeanstalk/tasks/bundlelogs.d/ 然后就会采取行动。现在的情况已经不是这样了。

这一点有变化吗?我找不到 有据可查. 有人在新的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

如果我在旧平台上进行 "完整日志 "操作,我将得到一个包含我的 deeperlogs 内含 var/log/eb-docker/containers/eb-current-app. 在新平台上,我不。

调查

如果你在磁盘上查看,你会发现新的Elastic Beanstalk没有一个 /opt/elasticbeanstalk/tasks 文件夹,不像以前那样。嗯。

linux amazon-web-services docker amazon-elastic-beanstalk
1个回答
3
投票

在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 变成 applogs 文件。没有它 deeperlogs 不会被包含在下载日志的压缩包中。这就很有意思了,因为该文件夹将在正确的位置,即, /var/log/eb-docker/containers/eb-current-app/deeperlogs/. 但是,如果没有明确地列在 applogs当生成zip bundle时,它将被跳过。

我在单个docker环境(3.0.1)中进行了测试。

完整的日志捆绑成功包含 deeperlogs 与正确的日志数据。

enter image description here

enter image description here

希望这能帮到你 我没有找到任何相关的参考资料。AWS的文档并没有记录这个,因为它主要是基于Amazon Linux 1,而不是Amazon Linux 2。

© www.soinside.com 2019 - 2024. All rights reserved.