是否有用于从AWS Elastic Beanstalk尾部日志的CLI

时间:2013-06-11 19:12:48

标签: logging elastic-beanstalk

是否有用于从Elastic Beanstalk应用程序中拖尾日志的CLI实用程序。特别是一个python烧瓶应用程序。

您可以使用他们的eb CLI获取快照......

eb logs

但我想这样做(类似于heroku offers)......

eb logs --tail

有没有人完成这个?

谢谢!


一些参考文献:

12 个答案:

答案 0 :(得分:25)

更新:我的答案不断提升,但自2013年以来情况发生了变化。现在更容易拖尾EB日志 - 请查看posit labs's answer以获得更简单的方法: - )。


原始回答:

我也一直在努力争取这个。 eb CLI实用程序似乎不允许当前拖尾应用程序日志。

但是,您可以通过以下方式拖拽这些日志:

  1. 在EC2控制台中创建密钥对(应该为您提供.pem文件)
  2. 将您的EB实例链接到此密钥对(在EB控制台中)
  3. 在EC2控制台中查找实例的公共DNS
  4. 通过ssh连接到您的实例(`ssh -i [yourpemfile.pem] ec2-user @ [your.public.dns]
  5. 拖尾你的日志文件。对于Node.js应用程序,即tail -f /var/log/nodejs/nodejs.log。我不知道Flask应用程序的等价物是什么。
  6. (感谢Richard Soutar指出我在这个方向上的正确方向。)

答案 1 :(得分:10)

您可以使用-g标志设置日志组,然后使用--stream来传输结果。无需ssh到特定的机器。

eb logs -g /aws/elasticbeanstalk/yourApp-env/var/log/nodejs/nodejs.log --stream

答案 2 :(得分:7)

现在这很简单:

eb logs --stream

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-logs.html

(我意识到posit lab's answer已包含--stream选项,但我一直在略读这个答案,因为我想查看所有日志,而不只是一组。如果我的记忆力更好,我就不会我必须保持谷歌搜索相同的问题,并在同一个地方结束。)

答案 3 :(得分:5)

您可能不需要eb日志,先尝试eb ssh

tail -f /var/log/*

答案 4 :(得分:2)

因此对于仍在寻找它的其他人来说,我为弹性beanstalk环境编写了一个小工具来尾部日志,你只需要指定环境名称和文件名,它就会执行SSH并拖尾每个实例的文件。

./eb-tail env-name

./eb-tail env-name -f '/path/to/file'

https://github.com/ahmednasir91/eb-tail

答案 5 :(得分:2)

这就是我的所作所为:

eb logs

获取所需日志文件的位置
eb logs

每个日志EB显示都带有-------前置/前置它。例如,对于Rails上的Passenger日志:

-------------------------------------
/var/app/support/logs/production.log
-------------------------------------

然后SSH进入服务器并拖尾日志:

eb ssh    # may have to eb ssh --setup for first time use

# from inside the server
tail -f /var/app/support/logs/production.log

答案 6 :(得分:1)

更详细的答案,因为我在 SSH 中使用 eb logs --streamtail 时遇到错误:

  1. 使用此命令 eb logs --cloudwatch-logs enable 在 eb CLI 中启用 Cloudwatch。

  2. 转到 AWS 控制台并打开 Cloudwatch。现在,转到日志组,选择要流式传输的日志,在我的情况下为 web.stdout.log,然后 复制下图突出显示的路径

    enter image description here

  3. 现在,再次打开 eb CLI 并输入 eb logs -g your_copied_path --stream。例如:eb logs -g /aws/elasticbeanstalk/yourEbsApp-env/var/log/web.stdout.log --stream。然后日志拖尾将开始。

  4. (可选)您可以完全跳过第 3 点,直接在上面的 CloudWatch 面板中流式传输日志,只需打开日志组并 选择其下方提供的日志流。

答案 7 :(得分:0)

您无法直接拖尾日志,因为AWS EB将多个日志聚合在一起。假设它是您感兴趣的应用程序日志,您可以转到EC2选项卡并按实际服务器上的连接按钮(您可能需要)要定义密钥对,只需按照说明操作)。登录到服务器后,您可以从那里拖动日志。

答案 8 :(得分:0)

我用来从多个服务器(包括aws)拖出几个日志的东西如下。

https://gist.github.com/iolloyd/da60ef316643d7894bdf

它允许我监视本地计算机中的多个远程实例。

答案 9 :(得分:0)

这不使用eb-cli,但流式日志的最简单方法是使用eb logs -cw enable然后在cloudwatch门户中读取流。

答案 10 :(得分:0)

对我来说,它涉及两个步骤。

您需要运行eb logs --stream,但在此之前运行: eb logs --cloudwatch-logs enable

Voila!

答案 11 :(得分:-5)

我没有可以测试此环境的环境,但是从查看代码看起来可以做到:

eb logs tail

查看constants.py第129行