Detección de anomalías en la monitorización: guía práctica

En un post anterior, introdujimos el concepto de la detección de anomalías como un grupo de técnicas utilizadas para identificar comportamientos inusuales que no cumplen con el patrón de datos esperado. En este artículo descubriremos cómo podemos aplicar la detección de anomalías en la monitorización.

¿Por dónde empezar?

Consideramos que la detección de anomalías es una alternativa al umbral estático en la monitorización, por lo que recomendamos identificar primero las áreas de tu entorno con:

  • Un gran número de alertas, la mayoría no accionables
  • Redefinición frecuente de umbrales y alertas
  • Medición de métricas como latencia, rendimiento, errores, etc. en las que ningún umbral parece funcionar correctamente.

Elegir métricas

Elegir una métrica o un grupo de métricas con las que queremos trabajar no es una tarea sencilla. No existe una guía universal que pueda aplicarse a todos los problemas.

Sin embargo, una vez que hayas identificado la parte del entorno que quieres analizar con la detección de anomalías, hay algunas recomendaciones prácticas que debes conocer para iniciar el proceso correctamente:

  • Tómate tu tiempo para entender el problema: podrías encontrar un KPI con un mal comportamiento, pero no te precipites a definir las métricas en cuestión. En su lugar, revisa el problema y asegúrate de que no haya una solución de reglas estáticas. En otras palabras, ten en cuenta que la única posibilidad es un procedimiento estadístico.
  • Toma medidas con comportamiento regular en etapas normales y comportamiento inusual en etapas problemáticas. Si tienes métricas con un comportamiento inusual en una etapa normal, probablemente necesites revisar la definición del problema una vez más.
  • Toma menos métricas: es fácil aplicar la detección de anomalías en una métrica para un problema, y luego aplicarla a un grupo de métricas para un problema.

Define tu kit de herramientas

Revisa tus herramientas de monitorización y comprueba si algunas ofrecen una solución de detección de anomalías. Si este es el caso, deberías documentar la solución.

Las herramientas que ofrecen detección de anomalías se basan en algoritmos que son implementaciones de diferentes modelos estadísticos. Necesitas documentarlo: ¿Qué modelo se implementa? ¿Cómo funciona el algoritmo? ¿Qué características deben tener tus datos?

Ten en cuenta que muchas herramientas establecen una diferencia entre la detección de anomalías en la monitorización y la detección de valores atípicos, por lo que es una buena idea tener modelos y algoritmos claros para cada caso.

Si tienes un entorno cloud o mixto, debes comprobar qué tipo de servicios ofrece tu proveedor de cloud. Microsoft Azure, por ejemplo, ofrece la implementación de dos algoritmos llamados Support Vector Machine (SVM) y Principal Component Analysis (PCA).

Con el fin de ofrecer una visión más general, realizamos una prueba para este post en la que imaginamos una herramienta de monitorización sin solución de detección de anomalías y sin servicio de cloud.

Si tu situación es similar a ésta, el primer paso es definir una arquitectura para la detección de anomalías en la monitorización.

Por lo tanto, tienes que obtener una herramienta para recibir, almacenar y procesar eficientemente todos los datos de series temporales sobre las métricas con las que necesitas trabajar. Tiene que ser una herramienta con un fuerte módulo de visualización porque la detección de anomalías en la monitorización es una actividad exigente.

Elegir una herramienta

Para elegir una herramienta necesitas:

  • Compatibilidad: una herramienta que incluya una compatibilidad probada con la herramienta de monitorización que estás utilizando para recopilar los datos de series temporales
  • Fácil instalación y configuración
  • Escalabilidad: incluso si sólo estás probando la detección de anomalías, deberías pensar en el nivel de escalabilidad de la solución. Ten en cuenta que la arquitectura tiene que gestionar diferentes problemas, diferentes métricas y una gran cantidad de datos sensibles.
  • Herramienta en uso: puede ser una buena idea elegir una herramienta que ya hayas usado antes y con la que te sientas cómodo.

Para nuestra prueba elegimos instalar y configurar Graphite y Grafana porque:

  • La herramienta de monitorización que estamos utilizando para recoger los datos aparece en la lista de herramientas compatibles con Graphite
  • Hemos utilizado Graphite y Grafana en otros proyectos con buenos resultados

La escalabilidad no fue un factor clave en nuestra prueba, así que instalamos Graphite con su base de datos regular en un servidor muy simple y sin un esquema de redundancia.

También puedes explorar otras herramientas como RRDtool, Circonus, etc. Otras opciones válidas pueden ser un servicio web de análisis de datos de series temporales en Rexit, AppDynamic, anomalías, etc.

Además de ofrecer una solución para la contención y graficación de datos de series temporales, estas empresas también ofrecen soluciones de detección de anomalías en la monitorización. Es por ello que es necesario examinar los modelos y algoritmos implementados para comprender todas nuestras posibilidades de detección de anomalías en el proyecto de monitorización.

En nuestra prueba utilizamos paquetes R y servicios de Anomaly para completar nuestro kit de herramientas.

Modelos y técnicas

Ahora que tenemos un problema para resolver nuestra arquitectura implementada y un conjunto de herramientas claro con métricas definidas, es el momento de profundizar en los modelos asociados a la detección de anomalías.

Como dijimos en nuestro primer artículo, la detección de anomalías siempre funciona en dos frentes:

  • definición del comportamiento esperado o “normal”
  • detección o análisis patrones de comportamientos inusuales

Definir el comportamiento esperado implica que tenemos que ser capaces de hacer una predicción y este proceso de predicción requiere un modelo estadístico.

Ésta es una de las razones por las que la detección de anomalías en la monitorización podría ser difícil de implementar. Comprender los modelos asociados a la detección de anomalías a veces parece algo que sólo el personal especializado en estadística o en investigación operativa puede llevar a cabo.

Sin embargo, los esfuerzos de DevOps y de los analistas de monitorización son necesarios para establecer una correcta aplicación de cada modelo y poder obtener un resultado más interesante.

Los modelos se implementan mediante algoritmos. Si compruebas las opciones de detección de anomalías en tus herramientas, encontrarás los algoritmos que están siendo utilizados. Sin embargo, es interesante para entender todo el proceso y saber qué algoritmo y qué modelo se pueden utilizar.

Por último, antes de aplicar cualquier algoritmo, te recomendamos:

  • Empezar con lo más simple: la verdad es que no se puede encontrar un par modelo-algoritmo que funcione en todos los casos. Nuestra recomendación aquí es probar el modelo y el algoritmo más simple. Si no obtienes resultados satisfactorios con el primero que pruebes, entonces puedes pasar a pares más complicados.
  • Evalúa los datos: una tarea principal y no siempre fácil para los analistas es verificar si los datos de series temporales satisfacen las condiciones del modelo y del algoritmo, por lo que es importante no omitir este paso.
  • Aléjate de las soluciones generales: no caigas en la trampa de las soluciones generales, ya que las que garantizan buenos resultados en todos los casos, suelen fallar en la mayoría de las situaciones.

No dudes en compartir tu experiencia en la detección de anomalías en la monitorización.

 

Shares