我可以将自定义日志文件添加到 elastic beanstalk 的“eb logs”命令捕获的日志吗?
Posted
技术标签:
【中文标题】我可以将自定义日志文件添加到 elastic beanstalk 的“eb logs”命令捕获的日志吗?【英文标题】:Can I add custom log files to the logs captured by elastic beanstalk's 'eb logs' command? 【发布时间】:2014-11-03 12:40:52 【问题描述】:当我通过 Web 界面或“eb 日志”请求弹性 beanstalk 环境的日志文件时,我会获取日志文件 /var/log/eb-version-deployment.log、/opt/python/ 的内容log/httpd.out、/var/log/cfn-hup.log 和其他几个。
有没有办法在 web 界面收集的日志和“eb 日志”中添加额外的日志,例如 test_output.log?
【问题讨论】:
如果您将日志文件写入/opt/python/log
文件夹,它将自动包含在内。这也是官方AWS EB Python Sample Application 所做的。如果遇到PermissionError
,请参阅this(可能的)解释。
【参考方案1】:
Elastic Beanstalk 在此文件夹中查找有关要跟踪哪些日志的配置文件:
/opt/elasticbeanstalk/tasks/taillogs.d/
在我的盒子里有一些文件
[ec2-user@ip taillogs.d]$ ls -al
total 32
drwxr-xr-x 2 root root 4096 Sep 27 05:49 .
drwxr-xr-x 6 root root 4096 Sep 27 05:49 ..
-rw-r--r-- 1 root root 58 Sep 27 05:49 eb-activity.conf
-rw-r--r-- 1 root root 35 Sep 27 05:49 eb-version-deployment.conf
-rw-r--r-- 1 root root 16 Oct 15 03:44 httpd.conf
-rw-r--r-- 1 root root 16 Oct 15 03:44 nginx.conf
-rw-r--r-- 1 root root 26 Oct 15 03:44 nodejs.conf
-rw-r--r-- 1 root root 29 Oct 15 03:44 npm.conf
每一个都有一行,像这样:
/var/log/nodejs/nodejs.log
或
/var/log/nginx/*
使用.ebextensions
添加配置文件来跟踪您自己的日志:
files:
"/opt/elasticbeanstalk/tasks/taillogs.d/my-app-logs.conf":
mode: "000755"
owner: root
group: root
content: |
/var/log/my-app.log
更多信息在这里:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.logging.html#health-logs-extend
【讨论】:
嗨,我们可以使用这个从弹性 beanstalk 中的 docker 容器中检索 django 日志文件吗? 我现在可以使用命令行eb logs
查看生成的日志,但尚未在 CloudWatch Web UI 中看到它。有什么建议?谢谢!【参考方案2】:
是的!有一种方法。您永远不必通过 ssh 连接到您的 Elastic Beanstalk 实例。
我们通过检查eb-activity.log
文件发现了这一点。
根据您的环境类型(我使用来自 Beanstalk 的 Python),您可以放置日志文件的位置会有所不同。你需要检查eb-activity.log
。
例如,对于 Python 环境类型,在 eb-activity.log
中您应该看到:
[2015-09-15T20:29:36.102Z] INFO [2403] - [Initialization/PreInitStage0/PreInitHook/01setuplogs.sh] : Completed activity. Result:
+ mkdir -p /opt/elasticbeanstalk/tasks/taillogs.d /opt/elasticbeanstalk/tasks/sytemtaillogs.d /opt/elasticbeanstalk/tasks/bundlelogs.d /opt/elasticbeanstalk/tasks/publishlogs.d
+ /opt/elasticbeanstalk/bin/log-conf -n python '-l/opt/python/log/*' -t taillogs,systemtaillogs,bundlelogs
+ /opt/elasticbeanstalk/bin/log-conf -n python-app '-l/opt/python/log/app.out.*' -t publishlogs
+ /opt/elasticbeanstalk/bin/log-conf -n supervisord '-l/opt/python/log/supervisord.log.*' -t publishlogs
+ /opt/elasticbeanstalk/bin/log-conf -nhttpd '-l/var/log/httpd/*' -f /opt/elasticbeanstalk/containerfiles/beanstalkhttpd
上面显示 Beanstalk 为以下任何文件配置日志记录:
/opt/python/log/* /opt/python/log/app.out.* /opt/python/log/supervisord.log.* /var/log/httpd/*也就是说,如果您将日志文件放在/opt/python/log/
中,Beanstalk 会在您“请求日志”时找到并呈现它。我将日志文件放在 /opt/python/log/
中,因为 WSGI 组(运行我的应用程序)可以访问它。顺便说一下,如果您使用 Ruby 环境类型,这将略有不同。您仍然可以检查 eb-activity.log
为哪些目录设置了日志记录。
【讨论】:
以上是关于我可以将自定义日志文件添加到 elastic beanstalk 的“eb logs”命令捕获的日志吗?的主要内容,如果未能解决你的问题,请参考以下文章