Windows Azure Storage Account Monitoring and Logging

Aunque era algo que ya teníamos en el antiguo portal de Windows Azure, sin duda, una de las cosas más interesantes que nos ofrece la nueva versión es la facilidad para manejar la monitorización de los distintos elementos disponibles, entre ellos las cuantas de Storage. Como puede observar en la siguiente imagen, la interfaz nos permite de una forma sencilla habilitar la monitorización para los diferentes elementos de un storage ( blob, queues y tables ). En ocasiones, disponer de el portal de azure como herramienta de trabajo principal no es posible, imagine que usted esta usando la infraestructura de azure para terceros y que desea en sus propias herramientas habilitar y ver toda esta información de monitorización. En estos casos, necesitamos de un mecanismo para poder habilitUntitledar de forma programática la configuración de monitorización, y, por supuesto, también necesitaremos un mecanismos para ver los diferentes valores de las métricas de esta configuración.

Por suerte, todo lo que tenemos disponible en el portal lo tenemos disponible nosotros, puesto que en teoría este portal está construido con el mismo API que nosotros tenemos a nuestra disposición. Por lo tanto vamos a intentar realizar dos pasos, configuración de la monitorización y revisión de las métricas sin necesidad de utilizar el portal de azure. por supuesto el código es meramente demostrativo, como casi siempre en los posts, y tendrá muchas posibilidades de mejora, pero ya le queda a usted estimado lector para ganarse su trabajo;

 

Configuración de la monitorización

Para realizar la configuración de la monitorización utilizaremos uno de esos N API Rest que Azure nos pone a nuestra disposición, en concreto el API rest referido a los servicios de Blob, Queues y/o Tables, dependiendo de que monitorización querramos habilitar. En el siguiente enlace puede ver el caso concreto del servicio de blob Set Blob Service Properties gracias al cual podremos hacer este trabajo. En realidad el API para los diferentes elementos solamente presenta cambios en la url ( los segmentos blob,queues o tables dependiendo del servicio ) y el modo de autenticación.

Según el método mencionado anteriormente, para habilitar la configuración solamente tendremos que realizar una petición PUT a laa url .blob.core.windows.net/?restype=service&comp=properties">.blob.core.windows.net/?restype=service&comp=properties">.blob.core.windows.net/?restype=service&comp=properties">.blob.core.windows.net/?restype=service&comp=properties">http://<account-name>.blob.core.windows.net/?restype=service&comp=properties

utilizando un cuerpo de mensaje similar al siguiente fragmento (extraído del enlace anterior )

 

 

Pues bien, vamos a intentarlo:

 

Para generar el XML anterior utilizaremos una serialización XML de las clases siguientes, las cuales, representan como verá este sencillo fragmento. Por supuesto, usted puede crear cualquier otro mecanismo, para conseguir tener este fragmento de XML. [Si utiliza XmlSerializer no se olvide de utilizar XmlSerializerNamespace para eliminar los namespaces que este serializador incluye por defecto]

Para la petición utilizaremos HttpWebRequest o cualquier API de cliente  como HttpClient o RestSharp. En nuestro caso, para no molestar al lector con otras API diferente a las habituales optaremos por el uso de la primera opción, aunque habitualmente haga uso de RestSharp para este tipo de tareas. A lo largo de las siguientes lineas, veremos como realizar la petición solicitada por el API mencionado anteriormente.

 

En estas lineas, él único trabajo que hemos realizado es la creación de un request a la dirección dada y seteados los valores de cabeceras como “x-ms-version” obligatorias según la información que el API nos ofrece. El siguiente paso, es establecer la cabecera de authorización, proceso que no es simple como podemos ver en los esquemas de autenticación de Windows Azure pero que resolveremos de una forma terriblemente simple gracias a la clase StorageCredentialsAccountAndKey y a su método SignRequest.

 

Bien, ya solamente tenemos que escribir el cuerpo de la petición y obtener la respuesta, y esto, es idéntico a cualquier petición que ya hubiéramos hecho con HttpWebRequest. anteiormente.

 

 

Consulta de las métricas

A lo largo de las líneas anteriores hemos visto como habilitar la monitorización de una cuenta de storage de una forma simple. Pero, aún nos queda el elemento importante, que no es otro que la recuperación de los valores de las diferentes métricas que hemos habilitado. Como se ha podido imaginar de las líneas anteriores, la activación/configuración se realiza a nivel de servicio ( para blob, queue, tables ) no para la cuenta de storage. Las métricas de estos diferentes servicios las posemos categorizar en los siguientes puntos:

 

  • Métricas de transacciones – Expuesta, tal y como se puede ver aquí, en tres tablas fundamentales:

 

  •  
    • $MetricsTransactionBlob
    • $MetricsTransactionsTable
    • $MetricsTransactionsQueue

 

  • Métricas de capacidad – Expuestas, tal y como se puede ver aqui, en la siguiente tabla:

 

  •  
    • $MetricsCapacityBlob

Para consultar los esquemas de las diferentes tablas de métricas podemos acudir a la MSDN dónde obtendremos la información necesaria. En realidad, no tiene demasiada historia, por lo menos no mucho más que trabajar con cualquier Table Service de Azure. En nuestro caso, por ver un ejemplo, haremos lo siguiente, el mapeo de una entidad para trabajar con $MetricsTransactionsBlob, tal cual nos dice la documentación, y una consulta de todos los contadores usando un TableServiceContext.

 

Espero que os haya resultado de interés..

 

Saludos

unai

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *