En mi post previo sobre DevOps y el rol del Arquitecto de Software señalé la importancia de la monitorización y trazas como parte de la cultura DevOps.
“If it isn’t monitored, it isn’t production!”
En ese orden de ideas os presento Visual Studio Application Insights: una herramienta diseñada para ayudar a los desarrolladores a diagnosticar problemas en las aplicaciones ya desplegadas y priorizar dichos problemas según el impacto real de los mismos, ya que permite detectar fallos así como también el uso que tienen las aplicaciones móviles y web en Azure, IIS o J2EE.
Application Insights está integrado en Visual Studio de forma tal que implementarlo en una nueva aplicación o en una ya existente es bastante sencillo:
- En un proyecto de Visual Studio existente, se puede hacer click con el botón derecho en el proyecto y seleccionar “Add Application Insights Telemetry…”
- También se puede agregar Application Insights en el momento de la creación de un proyecto.
Aquí os dejo algunas claves de Application Insights:
- Requiere de una subscripción Microsoft Azure.
- Requiere de una clave de instrumentación que se utiliza para identificar a qué instancia se debe enviar la información de telemetría. Dicha clave es colocada por defecto en el fichero ApplicationInsights.config.
- Por defecto envía una cantidad de información importante como: nombre de host del ordenador, configuración de hardware, IP remota, tiempo de respuesta de las peticiones etc…
- Es posible agregar información a la telemetría como por ejemplo la versión de la aplicación y propiedades customizadas:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace Insights | |
{ | |
using System.Configuration; | |
using System.Linq; | |
using System.Reflection; | |
using Microsoft.ApplicationInsights.Channel; | |
using Microsoft.ApplicationInsights.Extensibility; | |
/// <summary> | |
/// Version TelemetryInitializer | |
/// </summary> | |
public class VersionTelemetryInitializer : ITelemetryInitializer | |
{ | |
private static string version = string.Empty; | |
private static string tags = ConfigurationManager.AppSettings["InstrumentationTags"]; | |
/// <summary> | |
/// Initializes properties of the specified | |
/// <see cref="T:Microsoft.ApplicationInsights.Channel.ITelemetry" /> object. | |
/// </summary> | |
/// <param name="telemetry">the telemetry channel</param> | |
public void Initialize(ITelemetry telemetry) | |
{ | |
// Application Version | |
telemetry.Context.Component.Version = VersionTelemetryInitializer.version; | |
// Environment Tags | |
telemetry.Context.Properties["tags"] = VersionTelemetryInitializer.tags; | |
} | |
/// <summary> | |
/// Adds the VersionTelemetryInitializer to Microsoft.ApplicationInsights | |
/// </summary> | |
public static void Configure(Assembly assembly) | |
{ | |
VersionTelemetryInitializer.version = assembly.GetName().Version.ToString(); | |
if (ConfigurationManager.AppSettings.AllKeys.Contains("InstrumentationKey") && !string.IsNullOrEmpty(ConfigurationManager.AppSettings["InstrumentationKey"])) | |
{ | |
Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.TelemetryInitializers | |
.Add(new VersionTelemetryInitializer()); | |
Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = | |
ConfigurationManager.AppSettings["InstrumentationKey"]; | |
} | |
else | |
{ | |
TelemetryConfiguration.Active.DisableTelemetry = true; | |
} | |
} | |
} | |
} |
- Con tan solo agregar los paquetes nuget necesarios es posible enviar las trazas y logs de nuestra aplicación (i.e. Microsoft.ApplicationInsights.Log4NetAppender para log4net)
- Se pueden crear alertas que se disparen según el rendimiento o errores que presente la aplicación
- SDK’s con soporte para ASP.NET, J2EE, Ruby, PHP, JavaScript, Node.JS y Python
- A través de la exportación continua de datos, se puede analizar toda la información a través de Power BI.
“Application Insights nos permite entender los patrones de uso de nuestras aplicaciones así como también la detección temprana de problemas de rendimiento. Estamos reenfocando los procesos de mejora continua en base a los patrones reportados por Application Insights y que hasta ahora desconocíamos…” – Cliente Anónimo
Finalmente, para conocer mejor las posibilidades que ofrece este servicio de Microsoft Azure, os recomiendo comenzar con la documentación oficial: Visual Studio Application Insights documentation.
Sogeti puede ayudarle con esta y otras tecnologías Microsoft. Si quiere saber cómo, visita nuestra web.
Carlos Mendible con más de 14 años de experiencia diseñando e implementado soluciones de software, comenzó su carrera en Venezuela, donde en 1999 obtuvo su primera certificación Microsoft. Actualmente está certificado como CISA, ITILF, MCSD, MCTS y MCP. Trabaja desde 2012 como Arquitecto Senior de Soluciones Microsoft en Sogeti España colaborando también como evangelista tecnológico, formador e ingeniero de pre-venta.
Pingback: Profundizando en APP INSIGHTS | Microsoft Azure | itblogsogeti