Correlaciones de APM en Elastic Observability: Identificación automática de causas probables de transacciones lentas o fallidas

blog-thumbnail-apm-waterfall.png

Como ingeniero de DevOps o SRE, sueles enfrentarte a la investigación de problemas complejos (problemas de rendimiento de la aplicación complejos que ocurren de forma intermitente o solo en ciertas partes del tráfico de la aplicación) que afectan a los usuarios finales y potencialmente a los objetivos financieros de tu empresa. Examinar cientos o incluso miles de transacciones e intervalos puede implicar mucho trabajo de investigación tedioso y manual, y requerir mucho tiempo. Los despliegues de microservicios distribuidos o nativos del cloud presentan más complejidades, lo que incrementa el tiempo de determinación de la causa raíz. 

¿No sería estupendo si pudieras identificar con rapidez un patrón común que pueda ayudar a explicar un problema aparentemente tan complejo y así desmitificarlo y abrir camino para un análisis de causa raíz y una corrección más rápidos? 

La magia de las correlaciones de APM en Elastic Observability

La capacidad de correlaciones de Elastic APM revela los atributos del set de datos de APM correlacionados con transacciones de alta latencia o erróneas, y con mayor impacto significativo en el rendimiento general del servicio.

Tu flujo de trabajo de investigación de problemas de APM suele comenzar en la pestaña Transactions (Transacciones) de la vista de APM. Independientemente de si lo que te interesan son las transacciones con alta latencia o las transacciones que fallaron, comienzas por visualizar los valores atípicos en el gráfico de distribución de latencia de ese grupo de transacciones en particular. Las transacciones con alta latencia a la derecha del gráfico y las etiquetas de transacciones erróneas y latencia muestran la magnitud del impacto. Además, la anotación del percentil 95 en el gráfico ayuda a separar mejor visualmente los verdaderos valores atípicos.

El próximo paso será observar los atributos y factores en los datos que se más se correlacionen con dichos valores atípicos y acotar la investigación a los subgrupos afectados en el set de datos general. En otras palabras, busca atributos que se representen de forma desproporcionada en transacciones lentas o erróneas. Estos atributos incluyen etiquetas, atributos de rastreo y metadatos, como versiones de servicio; ubicaciones geográficas; tipos de dispositivos; identificadores de infraestructura; etiquetas específicas del cloud, como zona de disponibilidad, OS y tipo de cliente para servicios de frontend, y un host de otros atributos. La intención es poder explicar las transacciones anómalas en términos de dichos atributos. Entonces, por ejemplo, tendrías la capacidad de decir "casi todas las transacciones de alta latencia ocurren en el pod de Kubernetes x" o "las transacciones con la etiqueta shoppingCartVolumeHigh y la versión de servicio a.b están teniendo errores".

Imagina si tuvieras que examinar todos esos atributos de forma manual (que podrían ser cientos) para determinar qué atributos específicos podrían ayudar a explicar los valores atípicos de rendimiento.

Elastic Observability compara de manera automática los atributos con alta latencia y los errores con el conjunto completo de transacciones, e identifica las etiquetas y los metadatos que son "inusualmente usuales" en las transacciones subóptimas. En otras palabras, identifica los elementos significativamente más habituales en transacciones subóptimas que en el conjunto completo de transacciones. Luego, no solo ofrece las correlaciones, sino que presenta primero los atributos con mayor correlación. El valor de correlación (que va de 0 a 1.00, donde 1.00 indica una correlación perfecta) ayuda a brindar una indicación rápida del grado de coincidencia. Haz clic en cualquier atributo para ver las transacciones que poseen dicho atributo, con codificación de color y presentado en el gráfico de distribución, para visualizar mejor la superposición.

Una vez identificados estos factores de correlación, ahora puedes acotar tu enfoque solo a esas transacciones. Haz clic en los botones de filtro "+" o "-" para seleccionar solo las transacciones con este valor de atributo o para excluir tales transacciones y estudiar las transacciones de interés en más detalle. Un típico paso siguiente para la latencia podría ser observar las muestras de rastreo de solamente esas transacciones con alta latencia que también poseen los atributos de correlación identificados y llegar a ese momento "ajá" en el que detectas al culpable: una llamada de función lenta en los rastreos.

Una vez confirmada la causa raíz, puedes comenzar con el proceso de corrección y recuperación a través de mecanismos como reversiones, parches de software o actualizaciones.

Ahora consideremos un escenario de transacciones con errores. En el ejemplo siguiente, el grupo de transacciones "/es/hipstershop.CheckoutService/PlaceOrder" en "checkoutService" está experimentando una alta tasa de transacciones con errores.

La característica de correlación de transacciones con errores muestra transacciones con errores para los usuarios de Sudamérica en la figura a continuación.

Si haces clic en el filtro "+", podrás enfocarte en este subconjunto en particular de transacciones y se mostrará un ejemplo de transacción con el error.

Si haces clic en "View related error" (Ver error relacionado), se redirigirá al usuario a la página de detalles de error relevante (que se muestra a continuación) en donde se destacan los distintos tipos de error asociados con este endpoint. El rastreo de pila de una instancia de error también está disponible aquí y brinda información mejorada de depuración.

A partir de los ejemplos anteriores, podemos ver que la característica de correlaciones de APM se encarga del trabajo pesado por los usuarios, en cuanto a acotar los grupos de transacciones que son lentos o tienen errores. Como resultado, el tiempo promedio de detección y el tiempo de resolución se reducen significativamente.

Entradas y datos necesarios para ayudar en las correlaciones

La capacidad de correlaciones de APM puede acelerar en gran medida el análisis de causa raíz de problemas que afectan solo a un segmento de la población. Mientras más metadatos haya para describir las apps, los servicios, las transacciones, la infraestructura y los clientes, mejor será el análisis y mayor será la probabilidad de encontrar atributos que expliquen con precisión las transacciones subóptimas. La característica de correlaciones usa todos los campos y etiquetas presentes en los datos.

Usa el flujo de trabajo "Add Integrations" (Agregar integraciones) de la página Overview (Visión general) a fin de agregar capacidades de los agentes o ingesta de datos para las diversas aplicaciones, la infraestructura y las dependencias desplegadas en tu entorno. Ten en cuenta que también puedes integrarte de forma nativa con varias tecnologías, incluidos entornos nativos del cloud, como Kubernetes basados en el cloud y tecnologías sin servidor, como Lambda. Una vez que hayas identificado las distintas fuentes de telemetría, puedes enriquecer más los datos entrantes a través de Logstash o directamente a través del agente APM. Elastic también ofrece integración sin inconvenientes con los datos de OpenTelemetry y les brinda soporte nativo e integral (lo que, a su vez, proporciona soporte para la instrumentación manual). 

La información del lado del cliente puede incorporarse a través de datos de monitoreo de usuario real (RUM). El rastreo distribuido está habilitado de forma predeterminada cuando se usa el agente RUM de Elastic, y el rastreo de solicitudes de origen cruzado y la propagación del estado de rastreo pueden configurarse con facilidad mediante la opción de configuración distributedTracingOrigins. Combinado con APM de esta forma, RUM agrega información valiosa del lado del cliente, como versiones de navegadores, OS del cliente y contexto del usuario, y todos esos datos se incluyen automáticamente en la determinación de correlaciones. 

Con estos datos ingresando en Elastic, las correlaciones de APM pueden ponerse a trabajar y brindar información de investigación clara y precisa, además de reducir el tiempo para determinar la causa raíz en muchas situaciones. 

Situaciones en las que las correlaciones de APM pueden reducir de forma drástica el tiempo para determinar la causa raíz

Casi por definición, no hay un conjunto fijo de problemas complejos para los que una característica específica pueda brindar todas las respuestas con certeza. Después de todo, muchos problemas de APM se consideran complejos precisamente porque hay muchas incógnitas en la investigación. De lo contrario, con solo algunos problemas conocidos, sabríamos exactamente qué buscar y esos problemas ya no serían complejos. 

Sin embargo, en muchas investigaciones complejas, las correlaciones de APM pueden ser fundamentales en el conjunto de herramientas de investigación para acotar con rapidez el foco a áreas específicas del despliegue y determinar o validar la causa raíz. Una cuestión clave a tener en cuenta es: ¿tu problema está afectando el despliegue completo o solo algunas subpoblaciones? Por ejemplo, ¿todas las transacciones tienen alta latencia? ¿O una parte de las transacciones tienen alta latencia, mientras que otras parecen estar ejecutándose dentro de los límites esperados? Cuando notas que el problema no es generalizado, deberías considerar usar la característica de correlaciones de APM para ver si un subconjunto de atributos puede ayudar a caracterizar las transacciones de interés. Con esos atributos, puedes filtrar un conjunto más pequeño y gestionable de transacciones y comprobar sus rastreos para revelar la causa raíz, o ver qué dependencias de infraestructura contribuyen a los problemas de rendimiento de las transacciones. 

Algunos ejemplos de situaciones en los que hemos visto que las correlaciones de APM son particularmente efectivas:

Problemas de rendimiento de hardware: especialmente en casos con balanceo de carga en los que cierto hardware se ocupa de ciertas cargas, la degradación del rendimiento del hardware puede provocar que ciertos grupos de usuarios o ciertas partes de una aplicación experimenten mayor latencia. Las correlaciones de APM pueden ayudar a aislar rápidamente estas instancias específicas de hardware a través de etiquetas e identificadores.

Datos de entrada utilizados:

  • Etiquetas globales del agente APM recopiladas en los rastreos distribuidos
  • Métricas de infraestructura de Elastic Agent o metricbeat, para poder continuar investigando luego de usar la característica de correlaciones de APM

Problemas relacionados con el despliegue multicloud o la tenencia del hiperescalador: los hiperescaladores agregan otra capa de complejidad a los despliegues de aplicaciones. Los despliegues multicloud y de cloud híbrido son cada vez más comunes. Al solucionar problemas que solo afectan ciertas partes de una aplicación, las etiquetas (por ejemplo, metadatos del cloud) del hiperescalador ayudan a detectar qué instancias, Proveedores Cloud, regiones o zonas de disponibilidad están vinculadas al problema. El agente APM para Java de Elastic permite la autodetección del Proveedor Cloud usando variables de configuración.

Datos de entrada utilizados (recopilados automáticamente por el agente APM): 

  • Zona de disponibilidad del cloud
  • Región del cloud

Problemas específicos del grupo de usuarios o la geografía: las etiquetas que identifican geolocalizaciones o grupos de usuarios específicos pueden revelarse mediante correlaciones de APM y pueden usarse para aislar un segmento de usuarios y estudiar solo esas transacciones. Por ejemplo, el agente APM para Java de Elastic brinda soporte para etiquetas globales, que esta característica utiliza, para que puedan brindar contexto adicional e identificar un subconjunto de la población. Los agentes Elastic APM, como el agente APM para Java, brindan soporte para la configuración de etiquetas globales, que se pueden usar para agregar metainformación adicional en todos los eventos. Las etiquetas globales se agregan a transacciones, métricas y errores. De un modo similar, la API de agente APM para Java permite la instrumentación manual de transacciones que pueden usarse para extraer información geográfica o de grupos de usuarios. Estas etiquetas pueden ayudarte a enfocarte en clases/métodos importantes o nuevos en el servicio que puedan acelerar el análisis de causa raíz, la validación de hipótesis, etc. 

Datos de entrada utilizados:

  • Metadatos cloud (recopilados automáticamente por el agente APM)
  • Etiquetas globales, para agregar de forma opcional metainformación en los eventos
  • Cualquier dato agregado mediante instrumentación manual

Problemas relacionados con canary u otros despliegues parciales: en los despliegues de aplicaciones empresariales, y especialmente en las aplicaciones entregadas mediante SaaS, no es poco frecuente tener varias versiones de software ejecutándose en simultáneo. Los despliegues de canary o las estrategias de pruebas A/B son ejemplos de despliegues multiversión en simultáneo. Cuando una versión específica de la aplicación tiene un mal comportamiento, la correlación de APM puede ayudar a destacar la versión errática, acotar el alcance del problema y llevar a una determinación más rápida de la causa raíz. La versión de servicio puede configurarse mediante autodetección o con una variable de entorno, por ejemplo, en el agente APM para Java de Elastic.

Datos de entrada utilizados:

  • Versión de servicio, a través de la autodetección o a partir del agente APM

Problemas del lado del cliente: los indicadores del lado del cliente, como versiones de navegador específicas o tipos de dispositivos ayudan de inmediato a acotar el alcance y la causa potencial, lo que brinda información valiosa de la causa raíz para un análisis más detallado, la resolución y la corrección.

Datos de entrada utilizados:

  • Los datos de clientes recopilados automáticamente a través del agente RUM de Elastic, como la versión del navegador y el OS, los detalles del dispositivo, el tipo de red, etc. 

Problemas con proveedores de terceros: en casos en que los se usan proveedores de terceros, como proveedores de servicios de autenticación, las correlaciones de APM ayudan a identificar los problemas relacionados con un proveedor específico con rapidez. Esto puede hacerse usando un SDK (Elastic u OTel) para agregar etiquetas personalizadas a fin de identificar proveedores de autenticación. Las etiquetas personalizadas pueden ser útiles en otras situaciones similares en las que la autoinstrumentación sola no será suficiente para brindar el contexto relevante necesario para facilitar el análisis de causa raíz.

Datos de entrada utilizados:

  • Etiquetas personalizadas agregadas a través del SDK de Elastic u OTel
  • Etiquetas globales

… y muchos más casos de uso, entiendes la idea. Las correlaciones funcionan con problemas complejos que afectan algunas partes de tu servicio, mientras que otras partes de tu servicio parecen funcionar sin inconvenientes.

Por otra parte, hay ciertas situaciones en las que las correlaciones de APM pueden no dar los mejores resultados. Los ejemplos incluyen problemas generalizados que ocurren en todos los servicios de la aplicación, en lugar de subpoblaciones o segmentos más pequeños específicos. En tales situaciones, es posible que muchas etiquetas o indicadores diferentes estén todos muy estrechamente correlacionados con las transacciones subóptimas, lo cual brinda poco valor para impulsar la investigación. Por último, si los datos relevantes no están presentes o no tienen suficientes descriptores y etiquetas, la correlación puede no detectarse en absoluto. Consulta la sección anterior sobre entradas y datos para ayudar a las correlaciones.    

Sin embargo, en muchas de las investigaciones de APM, la característica de correlaciones de APM es una herramienta poderosa que puede ayudar a acotar rápidamente las investigaciones a grupos específicos de transacciones. En muchos casos, esas transacciones correlacionadas te llevarán con rapidez a la causa raíz,  lo cual reducirá drásticamente el tiempo de investigación. 

¡Feliz solución de problemas! 

Recursos adicionales e información

La característica de correlaciones de APM está disponible para el público en general a partir de la versión 7.15. Haz clic aquí para revisar las notas de lanzamiento relacionadas con la característica..

La guía de usuario y la documentación sobre la característica de correlaciones de APM está disponible aquí.