我可以将自定义日志文件添加到 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”命令捕获的日志吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将自定义元数据标签添加到音乐文件?

在 UI 测试/单元测试期间将自定义字符串写入日志

如何将自定义对象添加到 xib 文件的“对象”部分?

使用 pkgbuild 将自定义步骤添加到安装

Observability:使用 Elastic Agent 来收集定制的 TCP 日志

如何将自定义按钮添加到 react-google-maps?