Tengo una configuración de aplicación en Elastic Beanstalk (con un balanceador de carga de escala automática) usando Django. La configuración también usa apache httpd y mod_wsgi.
La aplicación funciona correctamente, pero veo un error ocasional que por mi vida no puedo depurar. Esto se debe a que el error en sí mismo no aparece en error_log en ningún momento.
Una muestra del registro de acceso (se omiten las direcciones IP):
[15/Apr/2020:01:13:21 +0000] "GET /reroute/agument/ HTTP/1.1" 500 27 "-" "" [15/Apr/2020:01:13:22 +0000] "GET /reroute/argument/ HTTP/1.1" 302 - "https://www.bing.com/" "Mozilla/5.0 (Linux; Android 4.4.3; KFSOWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/80.5.3 like Chrome/80.0.3987.162 Safari/537.36"La solicitud superior muestra una solicitud de error, la inferior una solicitud típica. Lo principal que noto aquí es la ausencia de un agente de usuario en la solicitud 500. Al revisar el access_log, a cada solicitud de este tipo le falta el agente de usuario. No tengo una configuración de funcionalidad específica para disuadir a los bots/arañas o similares.
Estos 500 errores ocurren aleatoriamente y lo han estado haciendo durante los últimos meses. No ha habido informes de que esto ocurra con el usuario final, lo que me lleva a pensar en dos posibilidades:
Realmente quiero identificar y detener estas solicitudes erróneas, ya que afecta el informe de errores de la aplicación en sí. ¿Cuál sería la mejor manera de identificar el problema aquí?
La única funcionalidad que he agregado a mi entorno beanstalk (a través de .ebextensions) es:
Bien, entonces soy tonto.
Las razones por las que estos mensajes de error no aparecían en mis registros era simplemente que no tenían un medio para mostrarse en los registros.
La configuración de un diccionario de registro simple en Django settings.py de repente comenzó a mostrar los rastros de pila de los 500 errores cuando sucedieron. A partir de ahí, pude ver que era una simple excepción no controlada:
LOGGING = { "version": 1, "disable_existing_loggers": False, "handlers": { "console": { "class": "logging.StreamHandler", }, }, "loggers": { "django": {"handlers": ["console"], "level": "INFO"}, },}