Syntax Highlighter

domingo, 24 de octubre de 2010

Cómo supervisar los logs de IIS en Windows Azure (I)

Uno de los trabajos que debemos realizar al subir un proyecto a Azure es prestar bastante atención sobre cómo queremos instrumentar nuestra aplicación para más tarde poder monitorizar nuestra aplicación en la nube. 

En determinadas ocasiones es necesario acceder a los ficheros de log del IIS para, por ejemplo, saber si están entrando peticiones a nuestro webrole desplegado. ¿Pero cómo hacemos esto en un entorno al que no podemos acceder físicamente a los ficheros del sistema?

La solución de la plataforma es copiar estos ficheros de log cada cierto tiempo a un blob de almacenamiento Azure. Para realizar este periodo tenemos que modificar nuestra aplicación, por ejemplo añadiendo código en el evento OnStart() de nuestro webrole -durante el periodo de CTP en el 2009 había un botón "Copy IIS Log Files...". Me pregunto porqué lo habrán quitado-:

Public Overrides Function OnStart() As Boolean

    ' Change the transfer period to the Blob
    Dim config = DiagnosticMonitor.GetDefaultInitialConfiguration()
    config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1)
    config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1)
    config.WindowsEventLog.ScheduledTransferPeriod = TimeSpan.FromMinutes(1)

    ' Enable collection of crash dumps
    Microsoft.WindowsAzure.Diagnostics.CrashDumps.EnableCollection(True)

    DiagnosticMonitor.Start("DiagnosticsConnectionString", config)
    ' For information on handling configuration changes
    ' see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
    AddHandler RoleEnvironment.Changing, AddressOf RoleEnvironmentChanging

    Return MyBase.OnStart()

End Function

Si lanzamos nuestra aplicación en nuestro entorno de desarrollo del SDK (Development Fabric) podemos observar una línea de información nueva indicando la ruta donde se está almacenando toda la información de diagnóstico. 


En el fichero "./Monitor/Configuration.xml" a partir de dicha ruta se encuentra un fragmento de configuración XML donde aparecen las rutas a los ficheros de log de IIS del webrole en ejecución:


También podemos comprobar que se están copiando dichos ficheros con la frecuencia indicada en código accediendo al Blob Storage. Para acceder a él podemos hacerlo mediante el Windows Azure Storage Explorer que integra el SDK dentro del propio Visual Studio a través de unos sencillos pasos.


Ahora que ya hemos comprobado que funciona correctamente en el entorno de desarrollo, es hora de subir nuestra aplicación a Azure y comprobar el funcionamiento. No se olviden de modificar el fichero de configuración del servicio modificando el valor de la entrada DiagnosticsConnectionString, ya que si no se nos quedará colgada la aplicación durante el proceso de deploy.



Cada vez que veo cómo van evolucionando las herramientas mejor pinta tiene todo. La integración del último SDK con Visual Studio es excelente ya que hace él solito el deploy.




Espero que os haya servido de ayuda.

Happy coding!

Edit: no te pierdas Cómo supervisar los logs de IIS en Windows Azure (II)


No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...