我想知道如何在新的Elastic Beanstalk平台(基于Amazon Linux 2的平台)中自定义日志任务。具体来说,我正在比较:
(我的问题实际上与Docker无关,我推测任何新的Elastic Beanstalk平台都存在该问题)。
以前,我可以遵循亚马逊的配方,/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
如果我在旧平台上执行“完整日志”操作,我将得到一个ZIP文件,deeperlogs
其中包含我的内容var/log/eb-docker/containers/eb-current-app
。在新平台上,我没有。
如果查看磁盘,您会发现新的Elastic Beanstalk根本没有/opt/elasticbeanstalk/tasks
文件夹,这与旧的文件夹不同。嗯
亚马逊在2020年8月4日发行的Elastic Beanstalk AL2平台版本中解决了此问题。
此问题已得到修复,现在可以在基于AL2的平台上自定义日志任务,并且可以一直使用(即在预生成版本AL2018平台上),因此您可以按照官方文档进行操作。
在平台“在64位Amazon Linux 2 / 3.1.0上运行的Docker”上成功进行了测试。如果(仍然)使用“在64位Amazon Linux 2 / 3.0.x上运行的Docker”,则必须使用Marcin的答案中所述的未记录的变通办法,但升级平台版本可能会更好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句