TL;DR: PyRCA es una librería de aprendizaje automático de código abierto diseñada específicamente para realizar análisis de causa raíz (RCA) en operaciones de TI. Ofrece un marco completo que permite a los usuarios identificar fácilmente las dependencias causales métricas complicadas y localizar automáticamente las causas raíz de los incidentes. La biblioteca proporciona una interfaz unificada para múltiples modelos RCA de uso común, incluyendo tareas de construcción de gráficos y puntuación. PyRCA pretende servir como una solución RCA de ventanilla única para el personal de operaciones de TI, científicos de datos e investigadores, permitiéndoles desarrollar, evaluar y desplegar modelos RCA en aplicaciones del mundo real de forma rápida y eficiente.
Background and Motivation: La necesidad de PyRCA
Con cada vez más aplicaciones de Internet desplegadas en la nube, garantizar la calidad de los sistemas en la nube y la experiencia del usuario se ha vuelto cada vez más crucial. Las incidencias en estos sistemas pueden provocar una mala experiencia de usuario e importantes pérdidas económicas. Para hacer frente a este problema, un enfoque eficaz es crear un sistema de monitorización que recoja y rastree los Indicadores Clave de Rendimiento (KPI) de las aplicaciones en ejecución. Cualquier anomalía en estas métricas KPI puede tratarse como un incidente. Cuando se produce un incidente, los ingenieros suelen recopilar todas las métricas relacionadas e investigar sus comportamientos para identificar la causa raíz o pistas para un diagnóstico posterior.
Figura 1. Ejemplo de un sistema de comercio electrónico. Ejemplo de sistema de comercio electrónico, que incluye servicio web, servicio de pago, servicio de entrega, servicio de compra y servicio de base de datos. La figura de la izquierda ilustra las dependencias entre cada servicio, mientras que la figura de la derecha muestra el gráfico causal del tiempo de respuesta de cada servicio, obtenido invirtiendo el gráfico de dependencias.
Por ejemplo, en un sistema de comercio electrónico como el ilustrado en la figura 1, si el tiempo de respuesta del servicio web aumenta significativamente, los ingenieros investigarían el tiempo de respuesta de los servicios anteriores en el gráfico causal. Si el tiempo de respuesta de un servicio de base de datos es alto, puede sugerir que el tiempo de respuesta prolongado del servicio web está causado por el servicio de base de datos, y el incidente puede mitigarse reiniciando el servidor de base de datos. Sin embargo, los sistemas modernos en la nube a menudo comprenden un gran número de componentes conectados a través de dependencias complejas, que se ejecutan en un entorno distribuido. Con miles o más métricas KPI que explorar para cada incidente, comprobar manualmente todas las métricas potencialmente relevantes puede llevar mucho tiempo, requerir mucho trabajo y ser propenso a errores para los ingenieros. Por lo tanto, una caja de herramientas RCA automatizada es altamente deseable.
PyRCA: One-Stop Python RCA Library Makes IT Operations Easy
Hemos desarrollado una solución holística PyRCA, una biblioteca Python para el análisis de causa raíz, para satisfacer las necesidades de los casos de uso tanto industriales como académicos. PyRCA es la primera librería RCA de código abierto que proporciona un marco de trabajo integral que incluye carga de datos, descubrimiento de grafos causales, localización de causas raíz y visualización de resultados RCA. PyRCA soporta múltiples modelos de construcción de grafos causales y de puntuación de causas raíz. Además, viene con un panel de control GUI para llevar a cabo RCA de forma interactiva, lo que se ajusta mejor a la experiencia del usuario en escenarios del mundo real. Las principales características de PyRCA son:
- PyRCA ofrece un marco estandarizado y altamente adaptable para la carga de datos métricos con el formato comúnmente utilizado ‘pandas.DataFrame’ y la evaluación comparativa de un conjunto diverso de modelos RCA.
- PyRCA proporciona una colección de modelos variados para descubrir gráficos causales e identificar las causas raíz, todos accesibles a través de una interfaz unificada. Además, los usuarios avanzados tienen la opción de configurar completamente cada modelo para satisfacer sus necesidades específicas.
- Los modelos RCA proporcionados en la biblioteca pueden mejorarse incorporando conocimientos de dominio proporcionados por el usuario, lo que los hace más robustos al tratar con datos métricos ruidosos.
- Los desarrolladores pueden extender PyRCA fácilmente implementando una única clase heredada de la clase base RCA para añadir nuevos modelos RCA.
- PyRCA también ofrece una herramienta de visualización que permite a los usuarios incorporar fácilmente el conocimiento del dominio, examinar los resultados RCA y comparar diferentes modelos, todo ello sin necesidad de codificación.
Continuaremos mejorando PyRCA en el futuro para hacerlo más completo y fácil de usar en aplicaciones del mundo real.
Depper Dive
Example
Figura 2. El marco del ACR. La figura de la izquierda muestra un sistema de producción que contiene un gran número de servicios con interdependencias complejas. El sistema de monitorización de la nube recopila detalles de cada solicitud de servicio y su estado de forma continua. La figura de la derecha muestra la canalización de RCA.
En la Figura 2, mostramos un ejemplo de cómo funciona RCA cuando se integra con un sistema de producción. Un sistema de producción típico consta de varios servicios con interdependencias complejas. Para garantizar la fiabilidad de todo el sistema, se integra un sistema de monitorización para recopilar periódicamente diversas medidas que controlan la salud de cada servicio. Cuando las medidas anómalas son detectadas por el módulo de detección de anomalías, suelen indicar el fallo del servicio correspondiente, lo que puede afectar gravemente a la experiencia del usuario. A continuación, el módulo de detección de anomalías activa automáticamente la tarea de localización de la causa raíz para el módulo RCA.
El módulo RCA aprovecha múltiples métricas del sistema de producción y el conocimiento experto para construir un gráfico causal. Al considerar las métricas de anomalía y sus dependencias en el gráfico, el módulo RCA puede calcular las puntuaciones de la causa raíz y presentar los resultados a los ingenieros de fiabilidad del sitio para ayudarles en las acciones de remediación posteriores. En resumen, el objetivo de RCA es localizar las métricas top-K que tienen más probabilidades de ser la causa raíz de las métricas de anomalía, dadas las métricas de anomalía.
Principios de diseño
Figura 3. Arquitectura principal de PyRCA. La arquitectura principal de PyRCA.
Los principios de diseño de PyRCA aseguran que la librería sea flexible, extensible y fácil de usar. Proporciona un marco unificado para RCA, permitiendo a los usuarios aplicar múltiples modelos y visualizar los resultados. Esto permite una fácil personalización mediante archivos de configuración, y la biblioteca puede ampliarse fácilmente con nuevos métodos de construcción y puntuación. El panel interactivo también facilita la incorporación de conocimiento experto y la demostración de resultados, haciendo que PyRCA sea fácil de usar para una amplia gama de usuarios.
Figura 4. Ejemplo de archivo YAML para la configuración. Ejemplo de archivo YAML para conocimiento experto configurable.
La API de la biblioteca PyRCA consta de tres componentes principales. En primer lugar, la capa de entrada carga los datos métricos en el formato ‘pandas.DataFrame’ y analiza el conocimiento experto del archivo de configuración en formato YAML. En la figura 4 se muestra un ejemplo. La capa de modelos implementa una amplia gama de modelos para la detección de anomalías, la construcción de gráficos causales y métodos de puntuación de causas raíz. Por último, la capa de salida soporta la visualización de gráficos causales y la evaluación de los resultados del análisis de causa raíz. También incluye una herramienta de simulación de datos para el análisis empírico. Juntos, estos tres componentes proporcionan a los usuarios un marco de trabajo de ACR completo y flexible que es fácil de usar y personalizar.
Modelos de ACR
Figura 5. La taxonomía de los modelos de ACR. La taxonomía de los modelos de ACR.
Un tipo común de modelo de ACR implica dos pasos. El primer paso es construir gráficos causales basados en métricas observadas y conocimiento del dominio, mientras que el segundo paso es extraer subgráficos anómalos o caminos basados en anomalías observadas. Normalmente, estos grafos causales pueden reconstruirse a partir de la topología de una aplicación específica, que se obtiene del análisis de registros y de trazas. Sin embargo, cuando los grafos de servicios o llamadas no están disponibles o sólo lo están parcialmente, la construcción del grafo topológico del sistema de producción puede suponer un reto. En tales casos, los modelos de descubrimiento causal pueden ser útiles para construir el gráfico causal que describe las relaciones causales entre las métricas observadas de una manera basada en datos. Este enfoque es particularmente útil cuando se investigan las relaciones entre las métricas monitorizadas en lugar de las llamadas a la API.
Aunque los modelos RCA de dos fases, que implican la construcción de un grafo causal seguido de la extracción de subgrafos o rutas anómalas, ofrecen una gran capacidad de explicación, el tiempo de ejecución de los algoritmos de construcción de grafos causales puede ser un factor limitante. En el peor de los casos, el tiempo de ejecución puede ser exponencial en el número de variables (nodos), lo que puede dificultar su aplicación en escenarios reales. Por otro lado, los modelos de ACR de una fase manejan directamente datos normales y anormales para obtener las causas raíz y tienen la capacidad de manejar eficientemente miles o incluso millones de métricas. Mostramos la comparación de estos dos tipos de modelos en la Figura 5.
Casos-de-uso
Figura 6. El panel interactivo de PyRCA. El panel de control interactivo de PyRCA (pestaña Análisis de datos)
Figure 7. El panel de control interactivo de PyRCA (pestaña Análisis de datos)
PyRCA ofrece una aplicación de panel de control fácil de usar que se puede iniciar ejecutando ‘python -m pyrca.tools’. La app consta de varias pestañas, incluyendo «Análisis de datos». En esta pestaña, los usuarios pueden cargar fácilmente sus datos métricos en formato CSV y visualizar todas las métricas, junto con estadísticas básicas como medias y varianzas. Los usuarios también pueden ajustar los hiperparámetros para los detectores de anomalías basados en estadísticas y umbrales. PyRCA incluye un detector básico de anomalías basado en estadísticas, pyrca.outliers.stats, que puede utilizarse para detectar picos anómalos en los datos. Sin embargo, si este detector no es adecuado para el caso de uso específico de un usuario, éste puede explorar otros detectores de anomalías ofrecidos por Merlion. Es importante tener en cuenta que los datos de las series temporales deben estar en formato CSV, donde la primera columna es la marca de tiempo y las otras columnas representan las métricas.
La pestaña «Causal Graph Discovery», mostrada en la Figura 7, permite a los usuarios construir gráficos causales estimados a partir de datos métricos. En primer lugar, los usuarios cargan los datos métricos y el archivo opcional de conocimiento del dominio en formato YAML. A continuación, seleccionan los datos métricos para construir el gráfico que describe las relaciones de dependencia entre las distintas métricas. Los usuarios pueden establecer los hiperparámetros del algoritmo de construcción del gráfico causal y la ruta del archivo de conocimiento del dominio, y hacer clic en el botón «Ejecutar» para generar la versión inicial del gráfico causal. A continuación, pueden comprobar manualmente si faltan enlaces o si hay enlaces incorrectos en el gráfico generado. Si el gráfico tiene errores, los usuarios pueden añadir restricciones adicionales como nodos raíz/hoja y enlaces obligatorios/prohibidos en la tarjeta «Editar conocimiento del dominio». Una vez añadidas las nuevas restricciones, pueden perfeccionar el gráfico causal pulsando de nuevo el botón «Ejecutar». Si el gráfico causal es satisfactorio, los usuarios pueden descargarlo y guardarlo para futuros despliegues del modelo RCA.
En aplicaciones del mundo real, los métodos de descubrimiento causal pueden enfrentarse a retos a la hora de producir gráficos causales precisos debido a problemas con los datos en aplicaciones del mundo real. Esta aplicación proporciona una interfaz fácil de usar que permite la edición interactiva y la revisión de los gráficos causales.
The Bottom Line
- PyRCA está diseñado para abordar los puntos débiles asociados con los flujos de trabajo actuales de la industria para las operaciones de TI.
- Proporciona interfaces unificadas y fácilmente extensibles e implementaciones para una amplia gama de modelos RCA.
- Nos dedicamos a mejorar continuamente PyRCA y planeamos añadir compatibilidad con datos de registro y datos de seguimiento, así como incluir más modelos RCA en el benchmark.
- Aceptamos y fomentamos las contribuciones de la comunidad de código abierto.
Explore más
Salesforce AI le invita a profundizar en los conceptos tratados en esta entrada de blog (consulte los enlaces siguientes). Conéctese con nosotros en las redes sociales y en nuestro sitio web para obtener actualizaciones periódicas sobre éste y otros proyectos de investigación.
Acerca de los autores
Chenghao Liu es un científico aplicado senior en Salesforce AI Asia, que trabaja en la investigación de AIOps, incluyendo la previsión de series temporales, la detección de anomalías y el aprendizaje automático causal.
Wenzhuo Yang es investigador principal aplicado en Salesforce AI Asia y trabaja en la investigación de AIOps y aprendizaje automático aplicado, incluyendo aprendizaje automático causal, IA explicable y sistemas de recomendación.
Doyen Sahoo es director senior de Salesforce AI Asia. Doyen dirige varios proyectos relacionados con la IA para operaciones de TI o AIOps, trabajando tanto en investigación fundamental como aplicada.
Steven HOI es el director general de Salesforce Research Asia y supervisa las actividades de investigación y desarrollo de IA de Salesforce en APAC. Sus intereses de investigación incluyen el aprendizaje automático y una amplia gama de aplicaciones de IA.