Eventos personalizados y técnicas de instrumentación personalizada

Clase 4 de 23Curso de Observabilidad Avanzada con New Relic

Resumen

La comprensión detallada de lo que sucede en una aplicación a gran escala puede ser un desafío considerable, especialmente cuando se procesan miles de transacciones por segundo. New Relic ofrece una solución eficaz para monitorear estas transacciones y obtener información valiosa mediante instrumentación personalizada. Dominar estas herramientas puede transformar significativamente la manera en que gestionamos y optimizamos nuestras aplicaciones.

¿Qué son las transacciones en New Relic y cómo interpretarlas?

Las transacciones en New Relic representan cualquier comunicación entre un servicio y otro. Esto puede manifestarse de diversas formas:

  • Solicitudes a un sitio web para ver perfiles en plataformas sociales
  • Agregar artículos a un carrito en aplicaciones de comercio electrónico
  • Transferencias de fondos en aplicaciones bancarias

Cada vez que un servicio se comunica con otra tecnología, se genera una transacción. En la interfaz de usuario de New Relic, bajo "APM and Services", podemos seleccionar nuestro servicio (en este caso "Space Rover Fleet Command") y acceder a la sección "Transactions" para visualizar todas las transacciones asociadas.

La interfaz nos permite organizar las transacciones según diversos criterios:

  • Most time consuming: Identifica las transacciones que consumen más tiempo en total
  • Slowest average response time: Señala posibles cuellos de botella o ralentizaciones
  • Highest error rate: Muestra las transacciones que no se completan correctamente
  • Most dissatisfying: Mide qué tan desagradable puede ser una transacción para el usuario final

¿Cómo analizar una transacción específica?

Al seleccionar una transacción particular, accedemos a la vista de detalles que proporciona métricas clave como el tiempo de respuesta y el tiempo de respuesta medio. Las transacciones se dividen en segmentos, donde cada segmento representa una parte específica del proceso.

Por ejemplo, en una transacción de "agregar al carrito", podrían existir varios segmentos:

  • Un servicio de catálogo que contiene la lista de productos
  • Un servicio que gestiona la cantidad de artículos
  • Un servicio de carrito que recibe y almacena el artículo

La interfaz muestra claramente qué segmento consume la mayor parte del tiempo de procesamiento. En el ejemplo mostrado, el segmento "API Rover command" representa el 90.96% del tiempo total, lo cual es esperado ya que implica enviar múltiples comandos a un rover.

La visualización gráfica facilita la identificación de problemas:

  • Los segmentos normales aparecen en azul
  • Los segmentos con errores se muestran en rojo

Esta visualización simplifica enormemente el proceso de investigación, permitiendo identificar rápidamente qué parte de la transacción está causando problemas.

¿Cómo implementar instrumentación personalizada para obtener métricas específicas?

La instrumentación personalizada nos permite obtener información adaptada a nuestras necesidades específicas. New Relic proporciona métricas estándar como tiempo de respuesta, tasa de error y rendimiento, pero necesitamos métricas personalizadas para comprender aspectos únicos de nuestra aplicación.

Para implementar instrumentación personalizada:

  1. Identificamos las funciones críticas en nuestro código que queremos monitorear
  2. Utilizamos el SDK de New Relic para registrar eventos y métricas personalizadas
// Registrar un evento personalizado
global.NewRelic.recordCustomEvent('rover_critical_battery', {
    // Detalles del evento
});

// Registrar una métrica personalizada
global.NewRelic.recordMetric('rover_health_checks_critical_count', criticalCount);

En el ejemplo del "Space Rover Fleet Command", monitorizamos aspectos críticos como:

  • Niveles de batería
  • Rovers con señal perdida
  • Rovers reparados
  • Rovers en estado crítico

¿Cómo visualizar y analizar métricas personalizadas?

Una vez que estamos registrando métricas personalizadas, podemos visualizarlas en la interfaz de New Relic:

  1. Accedemos a "Query Your Data" desde el panel lateral
  2. Utilizamos el "Data Explorer" para encontrar nuestras métricas
  3. Seleccionamos "Time Slices" para ver métricas registradas a lo largo del tiempo
  4. Buscamos nuestras métricas personalizadas por nombre

Para personalizar la visualización:

  1. Hacemos clic en "Ver opciones de personalización"
  2. Modificamos el título del gráfico
  3. Ajustamos las unidades (por ejemplo, para mostrar porcentajes)
  4. Modificamos la consulta NRQL según sea necesario para presentar los datos correctamente

Una vez configurado el gráfico, podemos agregarlo a un dashboard para visualizar fácilmente el rendimiento de nuestra aplicación. Esto resulta especialmente útil para compartir información con el equipo o para mostrarla en pantallas en la oficina.

¿Qué valor aportan las métricas personalizadas a nuestras aplicaciones?

Las métricas personalizadas son invaluables porque:

  • Proporcionan información específica del dominio: en aplicaciones financieras, podemos rastrear transacciones monetarias; en sistemas IoT, podemos monitorizar estados de dispositivos
  • Facilitan la detección de problemas: podemos identificar rápidamente cuando un valor crítico (como la batería de un rover) cae por debajo de un umbral aceptable
  • Posibilitan análisis de negocio: en aplicaciones de e-commerce, podemos rastrear compras completadas y montos gastados

Con los datos adecuados, las posibilidades son ilimitadas. Podemos generar información valiosa específica para nuestra aplicación o caso de uso particular, ajustando los parámetros según sea necesario.

La combinación de análisis de transacciones y métricas personalizadas nos permite tener una comprensión profunda del comportamiento de nuestras aplicaciones, facilitando la optimización del rendimiento y la identificación proactiva de problemas antes de que afecten a los usuarios.

La implementación de estas prácticas puede transformar significativamente nuestra capacidad para mantener aplicaciones saludables y eficientes en entornos de producción complejos. ¿Qué métricas personalizadas serían más importantes para tu aplicación? Comparte tus ideas y experiencias en los comentarios.