如何使用 EB cli 查看我的 EB ec2 的 python 日志

Posted

技术标签:

【中文标题】如何使用 EB cli 查看我的 EB ec2 的 python 日志【英文标题】:How do I view the python logs for my EB ec2 using the EB cli 【发布时间】:2021-06-04 03:35:29 【问题描述】:

所以我有一个 AWS EB 环境,应用程序在 64 位 Amazon Linux 2 上运行的 Python 3.7 上部署和运行良好。 软件配置:

日志组:/aws/elasticbeanstalk/env-uploadedenvname-env

环境属性:APP_VERSION、ENABLE_COOL_NEW_FEATURE、FLASK_DEBUG、MONGO_URI、PYTHONPATH

生命周期:终止时删除日志

日志流:启用

NumProcesses:1

线程数:15

代理服务器:nginx

保留期:3 天

轮换日志:启用

WSGIPath:应用程序

X-Ray 守护程序:禁用

在 AWS CloudWatch 中,日志组如下:

/aws/elasticbeanstalk/env-uploadedenvname-env/var/log/eb-engine.log
/aws/elasticbeanstalk/env-uploadedenvname-env/var/log/eb-hooks.log
/aws/elasticbeanstalk/env-uploadedenvname-env/var/log/httpd/access_log
/aws/elasticbeanstalk/env-uploadedenvname-env/var/log/httpd/error_log
/aws/elasticbeanstalk/env-uploadedenvname-env/var/log/nginx/access.log  
/aws/elasticbeanstalk/env-uploadedenvname-env/var/log/nginx/error.log
/aws/elasticbeanstalk/env-uploadedenvname-env/var/log/web.stdout.log

当我跑步时

eb logs

我得到了日志

/var/log/eb-engine.log 
/var/log/web.stdout.log
/var/log/nginx/access.log
/var/log/nginx/error.log

我的 .ebextensions 包含一个名为 python.config 的文件

option_settings:
     aws:elasticbeanstalk:application:environment:
        FLASK_DEBUG: true
        APP_VERSION: v3.1.0
        ENABLE_COOL_NEW_FEATURE: false
        MONGO_URI: gvhbjhygjhjuyghjbjhugjbjhbjn

如何增加输出最近日志的能力 /opt/python/log

我基本上希望能够查看我的 python 应用程序的日志,这样我就可以在开发中调试我的源代码中的问题。

编辑 1

在 Elastic Beanstalk > env-uploadedenvname-env > 配置 > 软件 > S3 日志存储被禁用,所以我启用它 & 实例日志流式传输到 CloudWatch Logs 已禁用,因此我启用了它。

**编辑并关闭问题 问题不在于我看不到输出,它始终在 /var/log/web.stdout.log 文件中,但是当我压缩文件以将其上传到 EB 环境时,我正在使用该文件对其进行压缩经理。这导致上传时出现问题,因为 Procfile 被放置在应用程序旁边而不是在应用程序内部。 看起来没有日志文件的效果,但实际上应用程序从未通过 Procfile。

解决办法是

cd path/to/application 
zip -r my_application_code.zip . 

现在,当我将 zip 文件上传到 EB 控制台时,Procfile 会正确生成,并且应用程序日志文件可以正常在 web.stdout.log 中找到。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

您可以尝试将以下内容添加到您的python.config,或创建新的配置文件,例如mylogs.config:

files: 
  "/opt/elasticbeanstalk/config/private/logtasks/bundle/applogs.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      /opt/python/log/*.log

/opt/python/log/*.log 应根据您的应用程序进行调整。

【讨论】:

谢谢 Marcin 我会尝试报告回来 好的,我认为没有正确设置它。反正还没有。如何在 s3 存储桶中手动查找 python 日志? @beautysleep 你能 ssh 到 EB 实例并在那里搜索吗?您的应用位于/var/app/current。那么也许你的日志在那里?

以上是关于如何使用 EB cli 查看我的 EB ec2 的 python 日志的主要内容,如果未能解决你的问题,请参考以下文章

AWS EB CLI Django

安装 EB CLI 3.x 后出错

如何从 EB 获取我的 EC2 实例以停止重新安装 java 7?

如何在 EB CLI 中更改用户?

AWS EC2 EB 上的 .htaccess 在哪里

如何通过 eb cli (django postgres) 迁移 AWS RDS 数据库?