Google Cloud Platform中的Gunicorn日志错误

时间:2019-02-04 06:47:40

标签: python django google-cloud-platform gunicorn google-kubernetes-engine

我正在使用我的WSGI服务器的Gunicorn在Google Kubernetes Engine上运行Django REST API。当我的应用程序遇到500服务器错误时,Python堆栈跟踪未显示在GCP Logging console中(在“ GKE容器”资源中)。在我的另一个使用Daphne作为ASGI / WSGI服务器的Django项目中,此追溯 被正确记录了。更奇怪的是,Gunicorn应用程序在几周前才正确记录了错误。这些错误也会出现在Error Reporting console中。

要清楚,这是我想在GCP日志中看到的信息类型:

Internal Server Error: /v1/user/errant-endpoint
Traceback (most recent call last):
  File "/path/to/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)

  ...

  File "/path/to/project/file.py", line 176, in my_file
    print(test)
NameError: name 'test' is not defined

对于Gunicorn项目,会记录一些Python追溯,就像启动Gunicorn时的这样:

/usr/local/lib/python3.6/site-packages/django/db/models/fields/__init__.py:1421: RuntimeWarning: DateTimeField User.last_login received a naive datetime (2019-02-04 05:49:47.530648) while time zone support is active.

但是,有500个错误,仅记录HTTP信息:

[04/Feb/2019:06:03:58 +0000] "POST /v1/errant-endpoint HTTP/1.1" 500

我已经查看了用于设置Stackdriver LoggingStackdriver Error Reporting的资源,但是这些似乎都不适用,因为1)仅在您要明确记录错误时才起作用(例如client.report_exception()中),以及2)错误报告在没有进行我的设置的情况下捕获了先前的错误,因此似乎有可能无需安装那些客户端库。

这里有很多变量在起作用,我不确定从哪里开始。我可能没有在此处提供足够的信息来正确诊断此问题(docker设置,kubernetes配置等),但我认为我可能对该过程有一些根本性的误解,有人可能会很乐于启发我。

编辑:

我在GKE documentation中找到了如何确保为集群启用Stackdriver日志记录的方法。还是没有运气。

更新(部分解决方案):

我在DEBUG = True中设置了settings.py,这提示错误开始在Stackdriver Logging和Error Reporting中记录。我已经在我的canary环境中进行了此操作,但是由于它公开了一些后端代码,因此它并不理想。仍然不确定为什么它可以在我的其他GCP项目中运行而不在调试模式下运行。

0 个答案:

没有答案