Introducción

Este es el último artículo de la serie con la propuesta “Zabbix en… Un ensayo sobre Análisis Exploratorio de Datos” y, dando continuidad a nuestro inicial propósito, concluiremos los 3º y 4º momentos de una distribución de datos. ¡Asimetría y Curtosis!

Recuerda el primer y segundo artículo de la serie para estar al tanto de lo que estamos discutiendo aquí.

¡Buena lectura!

Los 4 momentos de una distribución de datos

Mientras que el 1º momento busca alcanzar las estimaciones de localización de una distribución de datos, el 2º momento se encarga de su variabilidad. En seguida, el 3º momento, llamado asimetría, nos permite entender las tendencias de los valores a mayores o menores. Por último, la curtosis nos permite saber si la distribución es propensa a outliers o no.

Los 4 momentos aquí estudiados no agotan las posibilidades de explorar la distribución de datos en cuestión y tampoco utilizamos todas las técnicas previstas en ciencia de datos. Lo que estamos intentando concluir ahora es el estudio inicial para aclarar un hecho, un escenario, trayendo visiones y auxiliando conclusiones para la toma de decisiones de los interesados.

En suma, los 4 momentos son: Estimación, variabilidad, asimetría y curtosis.

Asimetría

Tomando nuevamente nuestra aplicación web, para quienes somos del área de TIC es bien claro que existe una asimetría en los valores obtenidos (algunos pueden sorprenderse cuando descubran que una simetría también es posible), ya que el tiempo de respuesta normalmente es bien variado. Sería bueno si siempre fuera por debajo de 1s y en momentos de pico, no mucho más que eso, pero la realidad es que no tenemos total control sobre tales valores o incluso sobre el comportamiento de nuestra aplicación, y esto hace que el monitoreo sea necesario y que nuestros ojos atentos necesiten captar cualquier alteración en su comportamiento.

¡Ok! Sabemos que la asimetría en los tiempos de respuesta de una aplicación web existe (en la mayoría de los casos). Entonces, ¿qué es lo que hace que este asunto sea tan especial? Una de las respuestas posibles es: necesitamos entender si los valores que causaron tal asimetría son de hecho muy variados, si fueron mucho mayores que lo normal o, incluso, si los tiempos de respuestas fueron buenos en la mayor parte del tiempo. Todavía podemos querer saber si la asimetría fue moderada, lo que sugiere que los valores no son tan discrepantes, o incluso, si fueron discrepantes, sugiriendo una asimetría fuerte. Traduciéndolo en términos de TIC: ¿nuestra aplicación web respondió bien o mal en la mayor parte del tiempo?

Nuevamente, no agotamos las posibilidades de estudio y uso de la asimetría.

La clave skewness

A partir de la versión 6.0 de Zabbix, tenemos la clave para Calculated item llamada skewness.

Su instrucción de uso es la siguiente:

skewness(/host/key,1h) # the skewness for the last hour until now

Veamos cómo la fórmula podría ser adaptada a nuestra aplicación web.

skewness(//net.tcp.service.perf[http,»{HOST.CONN}»,»{$NGINX.STUB_STATUS.PORT}»],1h:now/h)

Estamos, por lo tanto, buscando la asimetría de los tiempos de respuesta de la aplicación web referentes a la hora anterior.

La asimetría puede ser negativa (o hacia la izquierda), cero (datos simétricos), positiva (hacia la derecha) o indefinida.

En la asimetría negativa, la «cola» del gráfico de nuestra distribución apunta hacia la izquierda del centro, lo que sugiere que los valores en la distribución tienden a crecer en dirección a la media. También es posible afirmar que en la hora anterior, hemos tenido más valores mayores que menores; o sea, un diagnóstico malo para nuestro servicio en cuestión, en lo que se refiere a tiempos de respuesta de una aplicación web.

En el gráfico anterior, el valor central (la media) muestra un espejo de «cola» a la derecha y a la izquierda, lo que sugiere que los datos pueden no ser necesariamente iguales, pero distribuidos a lo largo del período de forma síncrona. Esto puede ser bueno para nuestra aplicación web, pero no debe ser el único indicador analizado.

En la asimetría positiva, la «cola» apunta hacia la derecha de la media y los valores claramente están disminuyendo. Esto puede significar que existe una tendencia en la caída de los tiempos de respuesta con respecto a la media o, incluso, que la mayoría de los tiempos de respuesta fueron menores que la media de aquel período, lo que es un excelente diagnóstico para nuestra aplicación web.

Mapa de valores para asimetría

En su template o host, usted puede crear el siguiente mapa de valores, para entender e interpretar mejor el resultado de la fórmula:

Si así lo desea, el mapa también podría ser el siguiente:

“is greater than or equals”                                 0.1              à Mais tempos bons, se comparados à média

“equals”                                                               0               à Tempos de resposta simétricos ou bem distribuídos em bons e ruins

“is less than or equals”                                       0                à Mais tempos ruins, se comparados à média

Coeficiente de asimetría de Pearson

El coeficiente de asimetría de Pearson es un indicador muy interesante: considerando que existe asimetría, nos dice si esta es fuerte o tan solo moderada.

Para calcularla, existe una fórmula que actualmente, no está implementada en una clave Zabbix, pero que puede ser fácilmente alcanzada con un Calculated item y otras funciones disponibles. Veamos:

(3*(avg-median))/stddevpop

En Zabbix necesitamos tener:

  • Un ítem para la media de solicitudes por minuto durante una hora
    • Key: resp.time.previous.hour
      • Formula: trendavg(//net.tcp.service.perf[http,»{HOST.CONN}»,»{$NGINX.STUB_STATUS.PORT}»],1h:now/h)
    • Un ítem para calcular la mediana
      • Key: response.time.previous.hour
        • Formula: (last(//p51.previous.hour)+last(//p50.previous.hour))/2
      • Un ítem para calcular la desviación estándar
        • Key:
          • Formula: response.time.previous.hour stddevpop(//net.tcp.service.perf[http,»{HOST.CONN}»,»{$NGINX.STUB_STATUS.PORT}»],1h:now/h)

Por fin, el Calculated item para el coeficiente de Pearson:

  • Key: coefficient.requests.previous.hour
    • Formula:
      ((last(//trendavg.requests.per.minute)-
      last(//median.access.previous.hour))*3)
      /
      last(//stddevpop.requests.previous.hour)

Para finalizar, debes crear un mapa de valores para el coeficiente:

Curtosis

La curtosis es el 4º momento de una distribución y puede indicar si existe propensión a valores extremos.

En Zabbix, la curtosis puede ser implementada con la siguiente fórmula:

kurtosis(/host/key,1h)

Un valor negativo de curtosis nos dice que la distribución muestra valores atípicos menos extremados, o que produjo pocos outliers. Ya un valor positivo de curtosis nos dice que la distribución muestra más valores atípicos extremos o que produjo muchos outliers. Todo gira alrededor de la media de la distribución de datos. Ya un valor neutro, o cero, nos dice que la distribución es considerada simétrica.

Para nuestro escenario web, tenemos:

kurtosis(//net.tcp.service.perf[http,»{HOST.CONN}»,»{$NGINX.STUB_STATUS.PORT}»],1h:now/h)

Dashboard Explicativo

Por la imagen anterior, sabemos que la asimetría es negativa o hacia la izquierda. Esto sugiere que, considerando la media de la hora anterior de los tiempos de respuesta de la aplicación web, hubo más valores mayores que la media, en vez de valores menores.

Sin embargo, a pesar de una distribución asimétrica, es moderada, por su coeficiente de asimetría. Esto puede significar que los valores son bien cercanos o que simplemente no hay una asimetría fuerte, extrema.

Con respecto a la curtosis, vemos que hay una propensión a picos, puesto que es positiva o leptocúrtica. En estadística, sabemos que los valores están concentrados cerca de la media y hay más probabilidad de que se produzcan outliers. Es un punto de atención cuando se trata del desempeño de un servicio crítico.

Evaluando otras métricas

Para confrontar y validar nuestra interpretación, o tan solo para visualizar los valores obtenidos, podemos tomar un simple gráfico en Zabbix y ajustar el desplazamiento de tiempo. Veamos:

En la edición del gráfico, ajústalo como se muestra abajo:

De esta forma, aparecerán tan solo los datos de la hora anterior, la hora llena. En este caso, de las 11:00 a las 11:59.

El gráfico en Zabbix nos permite ver el 50º percentil también. No mostramos la media en el gráfico porque no sería bien representada visualmente por haber sido obtenida tan solo 1 vez y no habría, por lo tanto, una línea visualmente interesante como la del 50º percentil. Sin embargo, note que los valores de la media y del 50º percentil están bien cercanos, dándonos una idea de la posición de los valores con respecto a esa medida.

Conclusión (parcial)

Asimetría y curtosis, respectivamente el 3º y 4º momentos de una distribución, nos ayudan a entender el comportamiento de los ambientes y nos permiten tener insights sobre nuestra aplicación web en cuestión. En la mayoría de las casos, la asimetría existirá. Es normal y esperado. Pero saber que es positiva o negativa, nos permite entender si hubo menos o más tiempos de respuesta por debajo de la media, y el coeficiente de asimetría, incluso, nos revela si esta es fuerte o tan solo moderada. Mientras tanto, la curtosis nos ayuda a entender si existe propensión a picos, algo que puede causar un alerta con respecto al desempeño del servicio o la aplicación (sí, pondríamos algunas triggers para lograrlo).

Conclusión

La disciplina de Ciencia de Datos puede fácilmente aplicada con Zabbix, principalmente a partir de la versión 6.0, con el uso de nuevas funciones como skewness (asimetría) y kurtosis (curtosis). Muchos otros indicadores pueden ser alcanzados con Calculated items o también con funciones más antiguas como percentile, forecast, timeleft.

Una de las ventajas de usar el propio Zabbix para realizar el análisis exploratorio de los datos es que la base es única, puesto que los datos ya están allí y muchas veces alimentados en tiempo real. Es algo fantástico, puesto que no necesitamos introducirlos o exportarlos para que posteriormente sean consumidos por otro software. Está todo a mano.

En los artículos de esta serie, tomamos como base algunos datos referentes a la hora anterior, la hora completa, pero nada hemos hecho con respecto a la hora actual. Si aplicáramos los conceptos estudiados en los datos en tiempo real, tendríamos otros resultados “vivos”, incluso para apoyar la toma de decisiones, ya que no estudiaremos tan solo datos históricos, sino que tendríamos la oportunidad de cambiar el curso de los acontecimientos.

Dashboards en Zabbix están mejorando significativamente. A partir de la versión 6.4, además de los widgets nativos, tenemos la posibilidad de crear los nuestros. No obstante, existe un cuidado que debe ser tomado con respecto al análisis exploratorio de datos y el perfil del administrador Zabbix mediano: ¡mostrar más datos que lo necesario! Sí, puede ser peligroso. Si no prestamos atención al detalle de mostrar tan solo lo que es útil, seremos infelices llenos de datos, pero sin ninguna información. Ahí es donde entra el término Análisis Explicativa de Datos, con técnicas de Storytelling. El mundo perfecto.

Espero poder contribuir con más análisis en el futuro. Ha sido un placer escribir esta pequeña serie.

¡Buen estudio!

Subscribe
Notify of
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x