Ошибки журнала Gunicorn в Google Cloud Platform - PullRequest
0 голосов
/ 04 февраля 2019

Я использую REST API Django в Google Kubernetes Engine, используя Gunicorn для моего WSGI-сервера.Когда мое приложение обнаруживает ошибку сервера 500, трассировка стека Python не отображается в консоли GCP Logging (в ресурсе "GKE Container").В другом моем проекте Django, который использует Daphne для сервера ASGI / WSGI, эта трассировка является при правильной регистрации.Еще более странно, что приложение Gunicorn правильно регистрировало ошибки раньше, всего несколько недель назад.Эти ошибки появляются и в консоли Сообщения об ошибках .

Для ясности, это тип информации, которую я хотел бы видеть в журналах 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 и Отчеты об ошибках Stackdriver , но ни один из них, кажется, не применяется, потому что 1), который только работает, когдаВы хотите явно регистрировать свои ошибки (как в client.report_exception()), и 2) Отчет об ошибках обнаружил предыдущие ошибки без моей настройки, так что, кажется, это возможно без установки этих клиентских библиотек.

ТамЗдесь так много переменных, что я не уверен, с чего начать.Возможно, я не предоставил здесь достаточно информации, чтобы правильно диагностировать это (настройка докера, настройка kubernetes и т. Д.), Но я подумал, что могу неправильно понять что-то фундаментальное в этом процессе, и что кто-то может быть так любезен, чтобы просветить меня.

РЕДАКТИРОВАТЬ:

В документации GKE я нашел, как обеспечить включение ведения журнала Stackdriver для моего кластера.Все еще не повезло.

ОБНОВЛЕНИЕ (частичное решение):

Я установил DEBUG = True в settings.py, что побудило ошибки начать регистрироваться в журнале Stackdriver Logging иОтчет об ошибках.Я продвинулся вперед и сделал это для моей канареечной среды, но это далеко не идеально, так как он раскрывает часть моего внутреннего кода.Все еще не уверен, почему это работает для моего другого проекта GCP без запуска в режиме отладки.

...