Ruido de registro silencioso con Python y aprendizaje automático

Los trabajos de integración continua (CI) pueden generar grandes volúmenes de datos. Cuando falla un trabajo, descubrir qué salió mal puede ser un proceso tedioso que implica analizar los registros para descubrir la causa raíz, que a menudo se encuentra en una fracción de la producción total del trabajo. Para facilitar la separación de los datos más relevantes del resto, el Cerrar sesión el modelo de aprendizaje automático se entrena utilizando ejecuciones de procesos exitosas anteriores para extraer anomalías de los registros de ejecución fallidos.

Este principio también se puede aplicar a otros casos de uso, como la extracción de anomalías de Diario u otros archivos de registro regulares de todo el sistema.

Índice

Uso del aprendizaje automático para reducir el ruido

Un archivo de registro típico contiene muchos eventos nominales ("líneas de base") junto con algunas excepciones relevantes para el desarrollador. Las líneas base pueden contener elementos aleatorios como marcas de tiempo o identificadores únicos que son difíciles de detectar y eliminar. Para eliminar eventos base, podemos usar un k-Algoritmo para reconocer el modelo de los vecinos más cercanos (k-NN).

Los eventos de registro deben convertirse a valores numéricos para k-Regresión NN. Uso de la herramienta de extracción de características genéricas HashingVectorizador le permite aplicar el proceso a cualquier tipo de registro. Aplica hash a cada palabra y codifica cada evento en una matriz dispersa. Para reducir aún más el espacio de búsqueda, la tokenización elimina palabras aleatorias conocidas, como fechas o direcciones IP.

Una vez que el modelo ha sido entrenado, el k- La investigación de NN nos dice la distancia de cada nuevo evento desde la línea de base.

Esta Cuaderno de Júpiter muestra el proceso y representa gráficamente los vectores dispersos de la matriz.

Presentación de Logreduce

El software Python de Loreduce implementa este proceso de manera transparente. El objetivo inicial de Logreduce era ayudar CI Zuul análisis de errores de trabajo utilizando la base de datos de compilación y ahora está integrado en el archivo fábrica de software Proceso de registros de trabajo de Development Forge.

En su forma más simple, Loreduce compara archivos o directorios y elimina líneas similares. Logreduce crea un patrón para cada archivo de origen y devuelve cualquier línea de destino cuyas distancias sean mayores que un umbral definido utilizando la siguiente sintaxis: distancia | nombre de archivo: número de línea: contenido de línea.

$ logreduce diff /var/log/audit/audit.log.1 /var/log/audit/audit.log
INFO  logreduce.Classifier - Training took 21.982s at 0.364MB/s (1.314kl/s) (8.000 MB - 28.884 kilo-lines)
0.244 | audit.log:19963:        type=USER_AUTH acct="root" exe="/usr/bin/su" hostname=managesf.sftests.com
INFO  logreduce.Classifier - Pruebas took 18.297s at 0.306MB/s (1.094kl/s) (5.607 MB - 20.015 kilo-lines)
99.99% reduction (from 20015 lines to 1

El uso más avanzado de Loreduce puede entrenar un modelo fuera de línea para ser reutilizado. Se pueden usar muchas variaciones de las líneas base para adaptarse k-Árbol de búsqueda NN.

$ logreduce dir-train audit.clf /var/log/audit/audit.log.*
INFO  logreduce.Classifier - Training took 80.883s at 0.396MB/s (1.397kl/s) (32.001 MB - 112.977 kilo-lines)
DEBUG logreduce.Classifier - audit.clf: written
$ logreduce dir-run audit.clf /var/log/audit/audit.log

Logreduce también implementa interfaces para descubrir líneas de base para intervalos de tiempo de Journald (días/semanas/meses) e historiales de creación de trabajos de Zuul CI. También puede generar informes HTML que agrupan las anomalías encontradas en varios archivos en una interfaz sencilla.

Gestión de línea de base

La clave para usar k-NN La regresión para la detección de anomalías consiste en tener una base de datos de buenas líneas base conocidas, que el modelo utiliza para detectar líneas que se desvían demasiado. Este método se basa en líneas base que contienen todos los eventos nominales, ya que todo lo que no se encuentre en la línea base se informará como anómalo.

Los trabajos de CI son grandes objetivos para k-Regresión NN porque los resultados del trabajo a menudo son deterministas y las ejecuciones anteriores se pueden usar automáticamente como líneas de base. Logreduce tiene roles de trabajo de Zuul que se pueden usar como parte de una tarea posterior al trabajo fallida para emitir un informe conciso (en lugar de registros de trabajo completos). Este principio se puede aplicar a otros casos siempre que las líneas de base se puedan construir con anticipación. Por ejemplo, un sistema nominal Informe S.O.S. se puede utilizar para encontrar problemas en una distribución defectuosa.

Servicio de clasificación de anomalías

La próxima versión de Loreduce presenta un modo de servidor para descargar el procesamiento de registros a un servicio externo donde los informes se pueden analizar más a fondo. También admite la importación de informes y solicitudes existentes para analizar una compilación de Zuul. Los servicios realizan análisis de forma asíncrona y cuentan con una interfaz web para ajustar puntuaciones y eliminar falsos positivos.

Los informes escaneados se pueden almacenar como un conjunto de datos independiente con archivos de registro de destino y puntajes para filas anormales registradas en un archivo JSON plano.

hoja de ruta del proyecto

Logreduce ya se está utilizando con eficacia, pero hay muchas oportunidades para mejorar la herramienta. Los planes para el futuro incluyen:

  • Resuelva muchas anomalías anotadas que se encuentran en los archivos de registro y produzca un conjunto de datos de dominio público para futuras investigaciones. La detección de anomalías en los archivos de registro es un tema desafiante y tener un conjunto de datos común para probar nuevos modelos ayudaría a identificar nuevas soluciones.
  • Reutilización de las anomalías observadas con el modelo para refinar las distancias informadas. Por ejemplo, cuando los usuarios marcan líneas como falsos positivos estableciendo su distancia en cero, el modelo podría reducir la puntuación de esas líneas en informes futuros.
  • Huella digital de anomalías archivadas para detectar cuando un nuevo informe contiene una anomalía ya conocida. Por lo tanto, en lugar de informar el contenido de la anomalía, el servicio puede notificar al usuario que el trabajo ha encontrado un problema conocido. Cuando se resuelve el problema, el servicio puede reiniciar automáticamente el trabajo.
  • Compatibilidad con múltiples interfaces de seguimiento básico para objetivos como informes SOS, compilaciones de Jenkins, Travis CI y más.

Si está interesado en participar en este proyecto, póngase en contacto con nosotros en # clasificación de registros Canal IRC de Freenode. ¡Los comentarios siempre son apreciados!


Presentará a Tristán Cacqueray Reduzca el ruido de registro mediante el aprendizaje automático al Cumbre OpenStack, del 13 al 15 de noviembre en Berlín.

Artículos de interés

Subir