Recordemos que el Elastic Stack se basa en la base de datos no relacional Elasticsearch, la interfaz web Kibana y recolectores y procesadores de datos (el más famoso Logstash, varios Beats, APM y otros). Una de las buenas adiciones a toda la pila de productos enumerados es el análisis de datos mediante algoritmos de aprendizaje automático. En el artículo entendemos cuáles son estos algoritmos. Por favor bajo gato.
El aprendizaje automático es una característica paga del shareware Elastic Stack y está incluida en el X-Pack. Para empezar a utilizarlo basta con activar la prueba de 30 días tras la instalación. Una vez que expire el período de prueba, puede solicitar soporte para extenderlo o comprar una suscripción. El coste de una suscripción no se calcula en función del volumen de datos, sino del número de nodos utilizados. No, el volumen de datos, por supuesto, afecta la cantidad de nodos necesarios, pero aún así este enfoque de concesión de licencias es más humano en relación con el presupuesto de la empresa. Si no es necesaria una alta productividad, puede ahorrar dinero.
ML en Elastic Stack está escrito en C++ y se ejecuta fuera de la JVM, en la que se ejecuta Elasticsearch. Es decir, el proceso (por cierto, se llama autodetección) consume todo lo que la JVM no traga. En un stand de demostración esto no es tan crítico, pero en un entorno de producción es importante asignar nodos separados para las tareas de ML.
Los algoritmos de aprendizaje automático se dividen en dos categorías:
Para realizar el análisis, el algoritmo de aprendizaje automático utiliza datos almacenados en índices de Elasticsearch. Puede crear tareas para análisis tanto desde la interfaz de Kibana como a través de la API. Si haces esto a través de Kibana, entonces no necesitas saber algunas cosas. Por ejemplo, índices adicionales que utiliza el algoritmo durante su funcionamiento.
Índices adicionales utilizados en el proceso de análisis..ml-state — información sobre modelos estadísticos (configuraciones de análisis);
.ml-anomalies-* — resultados de algoritmos de ML;
.ml-notifications: configuración de notificaciones basadas en los resultados del análisis.
La estructura de datos en la base de datos Elasticsearch consta de índices y documentos almacenados en ellos. En comparación con una base de datos relacional, un índice se puede comparar con un esquema de base de datos y un documento con un registro en una tabla. Esta comparación es condicional y se proporciona para simplificar la comprensión de material adicional para aquellos que solo han oído hablar de Elasticsearch.
La misma funcionalidad está disponible a través de la API que a través de la interfaz web, por lo que para mayor claridad y comprensión de los conceptos, mostraremos cómo configurarla a través de Kibana. En el menú de la izquierda hay una sección de Aprendizaje automático donde puedes crear un nuevo trabajo. En la interfaz de Kibana se parece a la imagen de abajo. Ahora analizaremos cada tipo de tarea y mostraremos los tipos de análisis que se pueden construir aquí.
Métrica única: análisis de una métrica, Métrica múltiple: análisis de dos o más métricas. En ambos casos, cada métrica se analiza en un entorno aislado, es decir. el algoritmo no tiene en cuenta el comportamiento de las métricas analizadas en paralelo, como podría parecer en el caso de Multi Metric. Para realizar cálculos teniendo en cuenta la correlación de varias métricas, puede utilizar el análisis de población. Y Advanced está afinando los algoritmos con opciones adicionales para determinadas tareas.
Métrica única
Analizar los cambios en una sola métrica es lo más sencillo que se puede hacer aquí. Después de hacer clic en Crear trabajo, el algoritmo buscará anomalías.
En el campo Agregación puede elegir un método para buscar anomalías. Por ejemplo, cuando Min los valores por debajo de los valores típicos se considerarán anómalos. Comer Máx., Media alta, Baja, Media, Distinta y otros. Se pueden encontrar descripciones de todas las funciones.
En el campo Campo Indica el campo numérico del documento sobre el que realizaremos el análisis.
En el campo
La duración de los datos recopilados es un factor clave que afecta la eficacia del análisis. Durante el análisis, el algoritmo identifica intervalos repetidos, calcula intervalos de confianza (líneas de base) e identifica anomalías: desviaciones atípicas del comportamiento habitual de la métrica. Sólo por ejemplo:
Líneas de base con un pequeño dato:
Cuando el algoritmo tiene algo de qué aprender, la línea de base se ve así:
Después de iniciar la tarea, el algoritmo determina las desviaciones anómalas de la norma y las clasifica según la probabilidad de anomalía (el color de la etiqueta correspondiente se indica entre paréntesis):
Advertencia (azul): menos de 25
Menor (amarillo): 25-50
Mayor (naranja): 50-75
Crítico (rojo): 75-100
El siguiente gráfico muestra un ejemplo de las anomalías encontradas.
Aquí puedes ver el número 94, que indica la probabilidad de una anomalía. Está claro que como el valor es cercano a 100 significa que tenemos una anomalía. La columna debajo del gráfico muestra la probabilidad peyorativamente pequeña del 0.000063634% de que el valor de la métrica aparezca allí.
Además de buscar anomalías, puede ejecutar pronósticos en Kibana. Esto se hace de forma sencilla y desde la misma vista con anomalías - botón Pronóstico en la esquina superior derecha.
La previsión se realiza con un máximo de 8 semanas de antelación. Incluso si realmente lo desea, ya no es posible por diseño.
En algunas situaciones, el pronóstico será muy útil, por ejemplo, al monitorear la carga de usuarios en la infraestructura.
Multimétrico
Pasemos a la siguiente característica de ML en Elastic Stack: analizar varias métricas en un lote. Pero esto no significa que se vaya a analizar la dependencia de una métrica de otra. Esto es lo mismo que Métrica única, pero con múltiples métricas en una pantalla para comparar fácilmente el impacto de una en otra. Hablaremos de analizar la dependencia de una métrica de otra en la sección Población.
Después de hacer clic en el cuadrado con Multi Metric, aparecerá una ventana con la configuración. Veámoslos con más detalle.
Primero debe seleccionar los campos para el análisis y la agregación de datos sobre ellos. Las opciones de agregación aquí son las mismas que para Métrica única (Máx., Media alta, Baja, Media, Distinta y otros). Además, si lo desea, los datos se dividen en uno de los campos (campo Dividir datos). En el ejemplo, hicimos esto por campo OrigenAeropuertoID. Observe que el gráfico de métricas de la derecha ahora se presenta como varios gráficos.
Campo Campos clave (influencers) Afecta directamente a las anomalías detectadas. De forma predeterminada, siempre habrá al menos un valor aquí y puede agregar otros adicionales. El algoritmo tendrá en cuenta la influencia de estos campos al analizar y mostrará los valores más "influyentes".
Después del lanzamiento, aparecerá algo como esto en la interfaz de Kibana.
Este es el llamado mapa de calor de anomalías para cada valor de campo OrigenAeropuertoID, que indicamos en Dividir datos. Al igual que con la Métrica única, el color indica el nivel de desviación anormal. Es conveniente hacer un análisis similar, por ejemplo, en estaciones de trabajo para rastrear aquellas con un número de autorizaciones sospechosamente elevado, etc. ya escribimos
Debajo del mapa de calor hay una lista de anomalías; desde cada una, puede cambiar a la vista de Métrica única para un análisis detallado.
Población
Para buscar anomalías entre las correlaciones entre diferentes métricas, el Elastic Stack cuenta con un análisis de población especializado. Es con su ayuda que se pueden buscar valores anormales en el rendimiento de un servidor en comparación con otros cuando, por ejemplo, aumenta el número de solicitudes al sistema de destino.
En esta ilustración, el campo Población indica el valor con el que se relacionarán las métricas analizadas. En este caso es el nombre del proceso. Como resultado, veremos cómo la carga del procesador de cada proceso se influyó entre sí.
Tenga en cuenta que el gráfico de los datos analizados difiere de los casos con Métrica única y Métrica múltiple. Esto se hizo en Kibana por diseño para mejorar la percepción de la distribución de valores de los datos analizados.
El gráfico muestra que el proceso se comportó de forma anormal. estrés (por cierto, generado por una utilidad especial) en el servidor poipu, quien influyó (o resultó ser un influencer) en la aparición de esta anomalía.
Avanzado
Análisis con ajuste fino. Con el análisis avanzado, aparecen configuraciones adicionales en Kibana. Después de hacer clic en el mosaico Avanzado en el menú de creación, aparece esta ventana con pestañas. Pestaña Detalles del trabajo Lo omitimos a propósito, hay configuraciones básicas que no están directamente relacionadas con la configuración del análisis.
В nombre_campo_recuento_resumen Opcionalmente, puede especificar el nombre de un campo de los documentos que contienen valores agregados. En este ejemplo, el número de eventos por minuto. EN
Aquí hay un bloque adicional de configuraciones para configurar el detector de anomalías para una tarea específica. Planeamos analizar casos de uso específicos (especialmente los de seguridad) en los siguientes artículos. Por ejemplo,
En el campo función Puede seleccionar una función específica para buscar anomalías. Excepto raras, hay un par de funciones más interesantes:
В nombre del campo indica el campo del documento sobre el que se realizará el análisis. Por_nombre_campo se puede utilizar para separar los resultados del análisis para cada valor individual del campo del documento especificado aquí. si llenas nombre_sobre_campo obtienes el análisis de población que discutimos anteriormente. Si especifica un valor en nombre_campo_partición, luego, para este campo del documento, se calcularán líneas de base separadas para cada valor (el valor puede ser, por ejemplo, el nombre del servidor o el proceso en el servidor). EN excluir_frecuente poder elegir todos o ninguna, lo que significará excluir (o incluir) valores de campos de documentos que aparecen con frecuencia.
En este artículo, intentamos dar una idea lo más sucinta posible sobre las capacidades del aprendizaje automático en Elastic Stack; todavía quedan muchos detalles detrás de escena. Cuéntanos en los comentarios qué casos lograste resolver usando Elastic Stack y para qué tareas lo usas. Para contactarnos, puede utilizar mensajes personales en Habré o
Fuente: habr.com