Habilitar y configurar el registro de aplicaciones de App Service.

Completado

En esta unidad, echaremos un vistazo a cómo el registro de aplicaciones puede ser de ayuda con las aplicaciones web. También veremos cómo habilitar estos registros.

¿Qué son los registros de la aplicación?

Azure proporciona diagnósticos integrados con registro de aplicaciones. Los registros de la aplicación son el resultado de las instrucciones de seguimiento en tiempo de ejecución en el código de aplicación. Por ejemplo, es posible que desee comprobar alguna lógica en su código mediante la adición de un seguimiento para mostrar cuando se está procesando una función en particular. O bien, es posible que solo quiera ver un mensaje registrado cuando se ha producido un determinado nivel de error. El registro de aplicaciones está pensado principalmente para aplicaciones en el entorno de preproducción y para resolver algunos problemas, ya que un registro excesivo puede conllevar una reducción del rendimiento y consumir almacenamiento rápidamente. Por ese motivo, el registro en el sistema de archivos se deshabilita automáticamente transcurridas 12 horas.

El registro de aplicaciones tiene limitaciones de escala, sobre todo porque se usan archivos para guardar los resultados registrados. Si tiene varias instancias de una aplicación y se comparte el mismo almacenamiento en todas ellas, es posible que se intercalen mensajes procedentes de distintas instancias, lo que dificulta la solución de problemas. Si cada instancia tiene su propio archivo de registro, habrá multitud de registros, lo que también dificulta la solución de problemas específicos de la instancia.

Los tipos de registro disponibles a través de Azure App Service dependen del marco de código de la aplicación y de si la aplicación se ejecuta en un host de aplicaciones Windows o Linux.

ASP.NET

Las aplicaciones ASP.NET solo se ejecutan en servicios de aplicaciones de Windows. Para registrar información en el registro de diagnóstico de aplicaciones, use la clase System.Diagnostics.Trace. Existen cuatro niveles de seguimiento que se pueden usar, y que se corresponden con los niveles de registro error, warning, information y verbose que se muestran en Azure Portal:

  • Trace.TraceError("Message"); // Escribe un mensaje de error
  • Trace.TraceWarning("Message"); // Escribe un mensaje de advertencia
  • Trace.TraceInformation("Message"); // Escribe un mensaje de carácter informativo
  • Trace.WriteLine("Message"); // Escribe un mensaje detallado

Aplicaciones ASP.NET Core

Las aplicaciones ASP.NET Core se pueden ejecutar tanto en Windows como en Linux. Para registrar información en los registros de la aplicación de Azure, use la clase LoggerFactory y, después, use uno de los seis niveles de registro disponibles:

  • logger.LogCritical("Mensaje"); // Escribe un mensaje crítico en el nivel de registro 5
  • logger.LogError("Mensaje"); // Escribe un mensaje de error en el nivel de registro 4
  • logger.LogWarning("Mensaje"); // Escribe un mensaje de advertencia en el nivel de registro 3
  • logger.LogInformation("Mensaje"); // Escribe un mensaje de carácter informativo en el nivel de registro 2
  • logger.LogDebug("Message"); // Escribe un mensaje de depuración en el nivel de registro 1
  • logger.LogTrace("Mensaje"); // Escribe un mensaje de seguimiento detallado en el nivel de registro 0

En el caso de las aplicaciones ASP.NET Core en Windows, estos mensajes se relacionan con los filtros de Azure Portal del siguiente modo:

  • Los niveles 4 y 5 son mensajes de error.
  • El nivel 3 es un mensaje de advertencia.
  • El nivel 2 es un mensaje de carácter informativo.
  • Los niveles 0 y 1 son mensajes detallados.

En cuanto a las aplicaciones ASP.NET Core en Linux, solo se registran los mensajes de error (es decir, los niveles 4 y 5).

Aplicaciones Node.js

En las aplicaciones web basadas en scripts, como las aplicaciones Node.js en Windows o Linux, el registro de aplicaciones se habilita con el método console():

  • console.error("Message"); // escribe un mensaje en STDERR.
  • console.log("Message"); // escribe un mensaje en STDOUT.

Ambos tipos de mensaje se escriben en los registros de nivel de error de Azure App Service.

Diferencias de registro entre los hosts de Windows y de Linux

Las aplicaciones web de Azure usan el servidor web (proceso IIS) para enrutar mensajes a los archivos de registro. Como las aplicaciones web basadas en Windows constituyen un servicio de Azure ya estandarizado, y la mensajería de las aplicaciones ASP.NET está perfectamente bien integrada en el servicio IIS subyacente, las aplicaciones de Windows se benefician de una infraestructura de registro muy completa. En otras aplicaciones, las opciones de registro están limitadas por la plataforma de desarrollo, incluso cuando se ejecuten en un servicio de aplicaciones de Windows.

La funcionalidad de registro disponible en las aplicaciones con script basadas en Linux (por ejemplo, Node) viene determinada por la imagen de Docker que se use en el contenedor de la aplicación. El registro básico, en el que se usan redireccionamientos a STDERR o STDOUT, emplea registros de Docker. Disponer de una funcionalidad de registro más completa dependerá de la imagen subyacente y de si se está ejecutando PHP, Perl, Ruby, etc. Descargar un registro de aplicaciones web equivalente al de IIS en las aplicaciones de Windows puede conllevar conectarse a su contenedor mediante SSH.

En la siguiente tabla se resume la compatibilidad de registro en los hosts y entornos de aplicaciones más conocidos.

Entorno de la aplicación Host Niveles de registro Ubicación de almacenamiento
ASP.NET Windows Error, Advertencia, Información, Detallado Sistema de archivos, Blob Storage
ASP.NET Core Windows Error, Advertencia, Información, Detallado Sistema de archivos, Blob Storage
ASP.NET Core Linux Error Sistema de archivos
Node.js Windows Error (STDERR), Información (STDOUT), Advertencia, Detallado Sistema de archivos, Blob Storage
Node.js Linux Error Sistema de archivos
Java Linux Error Sistema de archivos

Alternativas a los diagnósticos de aplicaciones

Azure Application Insights es una extensión del sitio que proporciona más características de supervisión del rendimiento, como datos detallados de uso y rendimiento. Está diseñado para implementaciones de aplicaciones de producción y es una herramienta de desarrollo potencialmente útil. Application Insights funciona con una variedad de entornos de desarrollo de aplicaciones, y proporciona el mismo conjunto de datos completos sobre telemetría y rendimiento tanto si la aplicación es ASP.NET o Node. Pese a esto, para usar Application Insights hay que incluir código específico dentro de la aplicación mediante el SDK de App Insights. Application Insights también es un servicio facturable. De modo que, en función de la escala de las implementaciones de aplicaciones y de los datos recopilados, puede que haya que hacer una previsión de costes periódicos.

También puede ver Métricas de su aplicación, que pueden ayudarle a establecer un perfil del funcionamiento de la aplicación. estos contadores son útiles en producción y desarrollo. Puede ver el uso de la CPU, de la memoria, de la red y del sistema de archivos, así como configurar alertas cuando un contador alcance un umbral determinado. La cobertura de facturación de las métricas se establece en el nivel de plan del servicio de la aplicación.

Habilitación del registro con Azure Portal

En el portal, el registro de aplicaciones se administra desde el panel Registros de diagnósticos de la aplicación web.

Screenshot of Diagnostics logs pane in the Azure portal.

Para habilitar el registro de aplicaciones en el sistema de archivos de la aplicación web, establezca Registro de aplicaciones (sistema de archivos) en Activado y, después, establezca Nivel en Error, Advertencia, Información o Detallado. El registro en el sistema de archivos se restablecerá automáticamente a Desactivado transcurridas 12 horas.

Para habilitar el registro de aplicaciones en un contenedor de Blob Storage, establezca Registro de aplicaciones (Blob) en Activado y, después, seleccione una cuenta de almacenamiento y un contenedor. La cuenta de almacenamiento y la aplicación web deben crearse en la misma región de Azure. Tras ello, establezca Nivel en Error, Advertencia, Información o Detallado.

Nota:

El almacenamiento en Blob Storage no está disponible en los registros de la aplicación de Linux.

Al registrar datos en Blob Storage, se debe establecer también un período de retención. A diferencia de los registros del sistema de archivos, los registros de blobs nunca se eliminan de forma predeterminada. La opción de periodo de retención significa que se eliminan todos los registros anteriores al número de días especificado.

Screenshot of configuring application logs in the Azure portal with Save highlighted.

Después de configurar los registros, haga clic en Guardar.

Habilitar el registro con la CLI de Azure

Para habilitar el registro de aplicaciones en el sistema de archivos, ejecute este comando.

az webapp log config --application-logging filesystem --level verbose --name <app-name> --resource-group <resource-group-name>

Ejecute este comando para, por ejemplo, habilitar el registro en el sistema de archivos de una aplicación denominada contosofashions123, capturando todos los mensajes.

az webapp log config --application-logging filesystem --level verbose --name contosofashions123 --resource-group contosofashionsRG

Actualmente no hay ninguna manera de deshabilitar el registro de aplicaciones mediante comandos de la CLI de Azure. Sin embargo, el siguiente comando restablece el registro del sistema de archivos solo en el nivel de error.

az webapp log config --application-logging off --name <app-name> --resource-group <resource-group-name>

Para ver el estado de registro actual de una aplicación, use este comando.

az webapp log show --name <app-name> --resource-group <resource-group-name>

Comprobación de conocimientos

1.

¿Qué tipos de aplicaciones web pueden guardar registros en Azure Blob Storage?

2.

¿Por qué el registro del sistema de archivos se desactiva automáticamente transcurridas 12 horas?