Introducción
Hoy en día, la gestión de registros es imprescindible en cualquier servicio web. Los registros pueden ayudarnos a depurar e identificar problemas en cualquier entorno. Este post profundiza en la practicidad de manejar los logs de Azure con dimensiones personalizadas en Django Rest Framework. Exploraremos cómo esta combinación simplifica el proceso de depuración, permitiendo un filtrado categorizado y capacidades mejoradas a través de dimensiones personalizadas. Para ofrecer una guía clara y directa, navegaremos por el paisaje donde Django Rest Framework se encuentra con Azure Logs, proporcionando un enfoque práctico para optimizar las estrategias de registro de su aplicación.
Configuración de Django en el servidor
OpenCensus Python SDK es la herramienta que utilizamos para gestionar los registros de Azure en Django. Para integrar esto sin problemas, son necesarios ajustes dentro de su archivo settings.py para alinear la configuración LOGGING con el despliegue del lado del servidor. Nuestro paso inicial consiste en la incorporación del middleware de Microsoft Azure:
A continuación, procedemos a incorporar la configuración única etiquetada OPENCENSUS diseñada específicamente para Azure Traces:
Sustituya “YOUR_CONNECTION_STRING” por su clave de conexión Azure. Para concluir, asegúrate de que tu configuración de LOGGING incluye la definición y asignación de AzureLogHandler a los loggers:
Configuración local de Django
Para examinar la visualización de los registros de Azure desde el lado local y comprender su presentación en el lado del servidor, basta con realizar un simple ajuste en la configuración LOGGER:
Una modificación crucial implica la actualización de la clave raíz, acompañada de un ajuste en el logger de Django (observe la alteración en el nivel: “WARNING”). Esta adaptación soluciona un problema local en el que el logger de Django se inicializa antes de que se produzcan los logs de Azure. No configurarlo de esta manera puede provocar que el servidor no responda o no genere ningún error, a pesar de que el servicio parezca operativo.
Huellas Azure
Después de configurar el archivo de configuración de Django como se ha detallado anteriormente, cada registro que se origine en la biblioteca de registro estándar de Python se transmitirá automáticamente como una traza de Azure, dependiendo de la ruta específica a la que se acceda. Por ejemplo, veamos esta ruta:
El punto de vista relacionado sería:
Al iniciar el servidor local, tenemos la opción de acceder al endpoint utilizando cURL y observar su salida:
La consola de Django responderá con esta salida:
Navegue hasta Azure, luego vaya a Application Insights, seguido de my-server-name y, por último, Logs. Aquí, puede realizar una búsqueda de su registro utilizando el Lenguaje de Consulta de Kusto (KQL):
Nuestros registros serán visibles en la página de Azure Analytics a medida que vayan llegando. Se pueden emplear diversas consultas para recuperar los registros.
Dimensiones personalizadas Azure
Para incluir propiedades personalizadas en nuestros mensajes de registro, utilice el argumento extra keyword del registrador Python, incorporando la clave especial custom_dimensions. Estas propiedades se presentarán como pares clave-valor dentro de la subsección customDimensions del Registro en Azure Monitor. Por ejemplo, en nuestra vista anterior, podemos modificarla para transmitir Dimensiones Personalizadas de la siguiente manera:
Al guardar estos ajustes y volver a enviar la solicitud anterior, ahora observará la presentación de nuestra propiedad personalizada en la subsección customDimensions.