jueves, 26 de octubre de 2017

Monitoreo de aplicaciones con Azure Application Insights

¿En algún momento te preguntaste si lo que desarrollaste se usa y cómo se usa? ¿Se te ocurrió qué podría mejorarse, pero no sabés por dónde empezar? ¿Tu aplicación falla, se detiene y no sabés dónde ni por qué?


Tenemos la solución a todas tus preguntas: Azure Application Insights



Esta herramienta de Azure permite recolectar un sin fin de información sobre tu aplicación web y luego generar reportes a partir de los datos obtenidos. Particularmente, Application Insights puede obtener información de todas las capas de la aplicación, desde errores de JavaScript hasta de performance de queries SQL.





Bajando a un nivel más detallado, puede monitorear:

- Tiempos de respuesta de requests, generando a partir de esto, por ejemplo, reportes estadísticos sobre páginas más populares dentro de la aplicación o menos performantes.
- Tiempos de respuesta de servicios externos, logueandotambiénerrores.
- Excepciones, al punto de mostrarnos en que línea de nuestro servicio se dio el error.
- Performance counters del servidor, ya sea Windows o Linux (CPU, memoria, network).
- Cantidad de usuarios conectados, incluyendo su localización geográfica por región o país.
- Eventos custom que uno puede lanzar, en el cliente o servidor de la aplicación.


A partir de la información recolectada anteriormente, Application Insights nos genera en vivo reportes o gráficos que nos pueden ayudar a diagnosticar problemas de performance o errores en producción. 



















Supongamos que tenemos un error de timeout reportado por un usuario en producción, muy difícil de recrear en un ambiente de pruebas, ya sea por falta de volumen de datos o de concurrencia.  La información recolectada nos permite investigar los movimientos realizados por el usuario. Los mismos van desde eventos JavaScript, su paso por la capa de servicios, hasta queries SQL ejecutadas, incluyendo excepciones y tiempos de respuesta, permitiéndonos diagnosticar o darnos una idea de dónde puede estar el problema. 

Monitorea mucha información por default. También se puede agregar información custom fácilmente, e incluso, se puede instalar un componente en el servidor para obtener más información, siendo esto último opcional.


Seguro estás llegando a la siguiente conclusión: esto es solo para aplicaciones alojadas en Azure y, siendo de Microsoft, es solo para apps .NET de Microsoft. Pero no, no es sólo para aplicaciones .NET ni tampoco es necesario que se encuentre alojada en los servidores Azure, ya que lo único que se necesita es una key que la identifique y unas sentencias en JavaScript que envían la información y la key a una URL específica. 



Así que, si tu app web tiene conexión a internet, puede enviar la información a loguear sin problemas y, aunque requiere una suscripción de Azure, se puede recabar hasta una cantidad máxima de información mensual de forma totalmente gratuita.



En conclusión, podemos decir que proponemos Applications Insights porque lo hemos usado en muchos proyectos, propios y para clientes y nos ha sido de gran utilidad para:

Mejorar la performance y detectar errores productivos “aleatorios” reportados insistentemente por los usuarios. 
Saber si los issues reportados se condicen con lo que realmente sucedió.
Informarnos que es lo que sucede con los proyectos que creamos.


Application Insights, según Microsoft, no miente.




Autores:

Alejandro Olivera .Net Dev SSr
Verónica Bo .Net Technical Expert