我想知道该怎么做日志任务定制 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
根本没有文件夹,与旧文件夹不同。唔。