是否有用于从 Elastic Beanstalk 应用程序跟踪日志的 CLI 实用程序。特别是一个 python 烧瓶应用程序。
您可以使用他们的 eb CLI 获取快照...
eb logs
但我想做(类似于heroku提供的)......
eb logs --tail
有没有人做到这一点?
谢谢!
一些参考资料:
是否有用于从 Elastic Beanstalk 应用程序跟踪日志的 CLI 实用程序。特别是一个 python 烧瓶应用程序。
您可以使用他们的 eb CLI 获取快照...
eb logs
但我想做(类似于heroku提供的)......
eb logs --tail
有没有人做到这一点?
谢谢!
一些参考资料:
更新:我的答案不断获得支持,但自 2013 年以来情况发生了变化。现在跟踪 EB 日志更容易了——查看posit labs 的答案以获得更简单的方法:-)。
原答案:
我也一直在努力解决这个问题。eb CLI 实用程序目前似乎不允许跟踪您的应用程序日志。
但是,您可以通过以下方式跟踪这些日志:
.pem
文件)tail -f /var/log/nodejs/nodejs.log
. 我不知道 Flask 应用程序的等价物是什么。(感谢Richard Soutar为我指明了正确的方向。)
您可以使用该-g
标志来设置日志组,然后用于--stream
流式传输结果。无需 ssh 进入特定机器。
eb logs -g /aws/elasticbeanstalk/yourApp-env/var/log/nodejs/nodejs.log --stream
2021 年更新:
现在最好的方法可能是使用 AWS CLI v2:
aws logs tail $log_group_name --follow
(注意:由于权限错误,我无法让它为我工作。)
我之前的回答是:
现在很简单:
eb logs --stream
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-logs.html
(我意识到posit lab 的答案已经包含该--stream
选项,但我一直浏览该答案,因为我想查看所有日志,而不仅仅是一组日志。如果我的记忆力更好,我就不必继续谷歌搜索相同的问题并结束在同一个地方。)
您可能不需要 eb 日志,请先eb ssh
尝试
tail -f /var/log/*
所以对于还在找它的人,我写了一个小工具来跟踪弹性beantalk环境的日志,你只需要指定环境名称和文件名,它会做SSH并跟踪每个实例的文件。
./eb-tail env-name
或者
./eb-tail env-name -f '/path/to/file'
这就是我所做的:
获取您想要的日志文件的位置eb logs
eb logs
每个日志 EB 显示都带有一个-------
前置/前置它。例如,对于 Rails 上的乘客日志:
-------------------------------------
/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
更详细的答案,因为我在 SSH中使用eb logs --stream
和 with时遇到错误:tail
使用此命令在 eb CLI 中启用 Cloudwatch eb logs --cloudwatch-logs enable
。
转到 AWS 控制台并打开 Cloudwatch。现在,转到 Logs Groups,选择要流式传输的日志,在我的情况下为 web.stdout.log 并复制其路径,如下图所示
现在,再次打开 eb CLI 并输入eb logs -g your_copied_path --stream
. 例如:eb logs -g /aws/elasticbeanstalk/yourEbsApp-env/var/log/web.stdout.log --stream
。然后日志拖尾将开始。
(可选)您完全可以跳过第 3 点,直接在 CloudWatch 面板上方流式传输日志,只需打开日志组并选择其下方提供的日志流即可。
您不能直接跟踪日志,因为 AWS EB 将多个日志聚合在一起。假设它是您感兴趣的应用程序日志,您可以转到 EC2 选项卡并按下实际服务器上的连接按钮(您可能需要定义密钥对,只需按照说明进行操作)。登录到服务器后,您可以从那里跟踪您的日志。
我用来跟踪来自多个服务器(包括 aws)的多个日志的方法如下:
for $server in server-1 server-2 server-3 server-4; do
ssh -t $server -f "tail -f /var/log/some-process/error.log|sed -e 's/^/$server /'" &
done
来源:https ://gist.github.com/iolloyd/da60ef316643d7894bdf
它允许我监控本地机器中的多个远程实例。
这不使用 eb-cli,但流式传输日志的最简单方法是使用eb logs -cw enable
然后读取 cloudwatch 门户中的流。
对我来说,它涉及两个步骤。
您需要运行eb logs --stream
,但在此之前,运行:
eb logs --cloudwatch-logs enable
瞧!
我没有可以测试它的环境,但是从查看代码看起来你可以做到:
eb 日志尾巴
查看 constants.py 第 129 行