Simple Science

Ciencia de vanguardia explicada de forma sencilla

# Informática# Ingeniería del software# Aprendizaje automático

Simplificando el Análisis de Fallos en Microservicios con Aprendizaje Automático

Usando aprendizaje automático para acelerar el diagnóstico de fallos en microservicios.

― 5 minilectura


Rápido seguimiento deRápido seguimiento defallos en microserviciosinformación de machine learning.Automatiza el análisis de fallos con
Tabla de contenidos

Kubernetes es un sistema que se usa para manejar software llamado microservicios que corren en contenedores. Estos contenedores pueden romperse o fallar, y cuando eso pasa, puede ser complicado averiguar por qué. Este artículo habla sobre cómo hacer ese proceso más rápido y fácil usando Aprendizaje automático, que es una tecnología que puede aprender de los Datos.

El Problema del Análisis Manual

Cuando una prueba en un microservicio falla, los desarrolladores pasan un montón de tiempo tratando de descubrir qué salió mal. Generalmente revisan logs, que son Registros de eventos que sucedieron en el sistema. Esto puede tomar hasta dos horas solo por un fallo. Con el número de microservicios y equipos creciendo, se vuelve aún más complicado y toma más tiempo para los desarrolladores revisar todos los logs.

Automatizando la Clasificación de Fallos

Para mejorar esto, investigamos cómo automatizar el proceso de averiguar por qué fallan las pruebas. Usando técnicas de aprendizaje automático, podemos clasificar las razones de fallos más rápido y ahorrar tiempo a los desarrolladores. La idea es usar patrones de fallos pasados y sus logs para entrenar un modelo de computadora que prediga la razón de un nuevo fallo.

Recolección de Información

Para empezar, hablamos con desarrolladores que tienen experiencia lidiando con fallos. Compartieron sus métodos y los tipos de logs que revisan. Esto nos ayudó a encontrar las piezas más importantes de información de los logs que podrían ayudar a entender mejor los fallos. Descubrimos que ciertas secciones de logs eran más útiles que otras.

Limpieza de Datos

Una vez que juntamos los datos, necesitábamos limpiarlos. Esto significa eliminar cualquier cosa que no fuera útil para nuestro análisis, como entradas incorrectas o irrelevantes. También nos aseguramos de que todo el texto estuviera en minúsculas y que las cadenas largas de datos fueran simplificadas. Este paso fue crucial para un procesamiento efectivo.

Extracción de Características

Después de limpiar los datos, los transformamos en una forma que las computadoras pudieran entender mejor. Para esto, usamos un método llamado TF-IDF. Este método ayuda a resaltar las palabras más importantes en los logs relacionadas con fallos. Funciona bien para logs ya que muchas palabras relevantes suelen aparecer solo una o dos veces.

Construyendo Modelos de Predicción

Con los datos limpios y procesados, entrenamos varios modelos de aprendizaje automático. Estos modelos aprenden de los datos de entrenamiento y luego pueden predecir las razones de fallos en nuevos datos. Elegimos diferentes algoritmos para ver cuál funciona mejor. Los algoritmos que probamos incluyen Máquinas de Vectores de Soporte, K-Vecinos Más Cercanos, Bosque Aleatorio, Aumento de Gradiente y Perceptrón Multicapa.

Evaluando los Algoritmos

Después de entrenar los modelos, evaluamos qué tan bien funcionaron comparando su precisión y el tiempo que tomaron para entrenar y predecir. Descubrimos que el algoritmo de Bosque Aleatorio fue el que mejor funcionó en general. Proporcionó predicciones precisas mientras tomaba menos tiempo para entrenarse en comparación con algunos de los otros modelos.

Retroalimentación de Desarrolladores

Una vez que tuvimos un modelo funcional, compartimos los resultados con los desarrolladores. Ellos encontraron que la clasificación de fallos les ayudó a entender qué salió mal. Sin embargo, también querían más información, como fallos pasados similares y sus resultados, para hacer que las predicciones fueran aún más útiles. Esta retroalimentación es valiosa para mejorar el sistema en el futuro.

Próximos Pasos

Para aumentar la efectividad de nuestros modelos, planeamos refinarlos aún más. Una de las sugerencias es explorar cómo hacer que los modelos sean más comprensibles. Los desarrolladores quieren saber cómo se hacen las predicciones, así que hacer más claro el razonamiento detrás de los modelos ayudará a construir confianza en sus resultados.

Direcciones de Investigación Futuras

En estudios futuros, nuestro objetivo es aumentar la complejidad de los datos que usamos. Actualmente, combinamos logs de diferentes servicios en un solo conjunto, lo que limita nuestro análisis. Nuestro objetivo es organizar mejor los logs manteniéndolos separados por cada servicio. Esto nos permitirá aplicar técnicas más avanzadas como el aprendizaje profundo, que puede analizar datos en más detalle.

Conclusión

El trabajo realizado aquí se centra en hacer el proceso de identificar razones de fallos en microservicios más rápido y eficiente. Usando aprendizaje automático para analizar logs, podemos reducir el tiempo que los desarrolladores pasan en tareas manuales. Las ideas recogidas de los desarrolladores y el rendimiento de los nuevos modelos muestran potencial para mejorar este proceso. En el futuro, esperamos hacer los modelos más precisos y comprensibles, lo que llevará a mejores resultados para los desarrolladores que manejan microservicios.

Más de autores

Artículos similares