Introdução

Este é o último artigo da série proposta “Zabbix em… Um ensaio sobre Análise Exploratória de Dados” e, dando continuidade ao nosso inicial propósito, fecharemos os 3º e 4º momentos de uma distribuição de dados. Assimetria e Curtose! Uma boa leitura!  

Os 4 momentos de uma distribuição de dados

Enquanto o 1º momento procura alcançar as estimativas de localização de uma distribuição de dados, o 2º momento lida com sua variabilidade. Em seguida, o 3º momento, chamado assimetria, nos permite entender sobre tendências dos valores para maiores ou menores. Por último, a curtose nos permite saber se a distribuição é propensa a outliers o não. Os 4 momentos aqui estudados não esgotam as possibilidades de exploração da distribuição de dados em questão, tampouco utilizamos todas as técnicas previstas em ciência de dados. O que estamos nos propondo a encerrar agora é o estudo inicial para um esclarecimento sobre um fato, um cenário, provendo visões e auxiliando conclusões para tomada de decisões por parte dos interessados. Em resumo, os 4 momentos então são: Estimativa, variabilidade, assimetria e curtose.

Assimetria

Tomando novamente nossa aplicação web, para nós da área de TIC é bem claro que existe uma assimetria nos valores coletados (alguns podem ficar surpresos quando descobrirem que uma simetria também é possível), pois o tempo de resposta normalmente é bem variado. Bom seria se fosse sempre abaixo de 1s e em momentos de pico, não muito maior do que isso, porém, a realidade é que não temos total controle sobre tais valores ou ainda sobre o comportamento de nossa aplicação, o que torna o monitoramento necessário e nossos olhares atentos precisam captar qualquer alteração em seu comportamento. Ok! Sabemos que a assimetria nos tempos de resposta de uma aplicação web existe (na maioria dos casos). Então, o que torna esse tópico tão especial? Uma das respostas possíveis é: precisamos entender se os valores que causaram tal assimetria são de fato muito variados, se foram muito maiores do que o normal ou ainda, se em resumo, os tempos de respostas foram bons na maior parte do tempo. Ainda é possível queremos saber se a assimetria foi moderada, o que sugere que os valores não são tão discrepantes, ou ainda, se foram discrepantes, sugerindo uma assimetria forte. Traduzindo em termos de TIC: nossa aplicação web respondeu bem ou mal na maior parte do tempo? Novamente, não esgotamos as possibilidades de estudo e uso da assimetria.  

A chave skewness

A partir da versão 6.0 do Zabbix, temos a chave para Calculated item chamada skewness. Sua instrução de uso é assim: skewness(/host/key,1h) # the skewness for the last hour until now   Vejamos como a fórmula poderia se adequar à nossa aplicação web. skewness(//net.tcp.service.perf[http,”{HOST.CONN}”,”{$NGINX.STUB_STATUS.PORT}”],1h:now/h)   Assim, estamos buscando a assimetria dos tempos de resposta da aplicação web referentes à hora anterior. A assimetria pode ser negativa (ou à esquerda), zero (dados simétricos), positiva (à direita) ou indefinida. Na assimetria negativa a calda do gráfico de nossa distribuição está à esquerda do centro, o que sugere que os valores na distribuição tendem a crescer em direção à média. Também é possível afirmar que na hora anterior, tivemos mais valores maiores do que menores, o que é um diagnóstico ruim para nosso serviço em questão, no que se refere a tempos de resposta de uma aplicação web. No gráfico acima, o valor central (a média) tem um espelho de calda à direita e à esquerda, o que sugere que os dados podem não ser precisamente iguais, porém, estão distribuídos ao longo do período de forma síncrona. Isso pode ser bom para nossa aplicação web, mas não deve ser o único indicador a ser analisado. https://s3.amazonaws.com/media.unirede.net/Unirede/assim%C3%A9trica+positiva+-+blog+post.jpg Na assimetria positiva, a calda está à direita da média e os valores claramente estão diminuindo. Isso pode significar que existe tendência na queda dos tempos de resposta em relação à média, ou ainda, que a maioria dos tempos de resposta foram menores do que a média daquele período, o que é um excelente diagnóstico para nossa aplicação web.  

Mapa de valores para assimetria

https://s3.amazonaws.com/media.unirede.net/Unirede/assim%C3%A9trica+positiva+-+blog+post.jpg https://s3.amazonaws.com/media.unirede.net/Unirede/assim%C3%A9trica+positiva+-+blog+post.jpg   Se desejar, o mapa também poderia ser o seguinte: “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 assimetria de Pearson

O coeficiente de assimetria de Pearson é um indicador muito interessante: considerando que existe assimetria, ele nos diz se ela é forte ou apenas moderada. Para o cálculo, existe uma fórmula que atualmente, não está implementada em uma chave no Zabbix, mas pode ser facilmente alcançada com um Calculated item e outras funções disponíveis. Vejamos:   (3*(avg-median))/stddevpop   No Zabbix, precisamos ter:
  • Um item para a média de requisições por minuto durante uma hora
    • Key: resp.time.previous.hour
      • Formula: trendavg(//net.tcp.service.perf[http,”{HOST.CONN}”,”{$NGINX.STUB_STATUS.PORT}”],1h:now/h)
    • Um item para cálculo da mediana
      • Key: response.time.previous.hour
        • Formula: (last(//p51.previous.hour)+last(//p50.previous.hour))/2
      • Um item para cálculo do desvio-padrão
        • Key:
          • Formula: response.time.previous.hour stddevpop(//net.tcp.service.perf[http,”{HOST.CONN}”,”{$NGINX.STUB_STATUS.PORT}”],1h:now/h)
Por fim, o Calculated item para o 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, crie um mapa de valores para o coeficiente:

Curtose

A curtose é o 4º momento de uma distribuição e pode indicar se existe propensão a valores extremos. No Zabbix, a curtose pode ser implementada com a seguinte fórmula: kurtosis(/host/key,1h)   Um valor negativo de curtose nos diz que a distribuição não está propensa ou produziu poucos outliers. Já um valor positivo de curtose nos diz que a distribuição está propensa ou produziu muitos outliers. Tudo gira em torno da média da distribuição de dados. Já um valor neutro, ou zero, nos diz que a distribuição é considerada simétrica. Para nosso cenário web, temos: kurtosis(//net.tcp.service.perf[http,”{HOST.CONN}”,”{$NGINX.STUB_STATUS.PORT}”],1h:now/h)

Dashboard Explanatório

  Pela imagem acima, temos que a assimetria é negativa ou à esquerda, o que sugere que, considerando a média da hora anterior dos tempos de resposta da aplicação web, houve mais valores maiores do que a média, ao invés de valores menores. Contudo, apesar de assimétrica a distribuição, ela é moderada, pelo seu coeficiente de assimetria, o que pode significar que os valores são bem próximos ou simplesmente não há uma assimetria forte, extrema. Quanto à curtose, temos que há uma propensão a picos, pois é positiva ou leptocúrtica. Em estatística, temos que os valores estão concentrados próximos à média e há maior probabilidade de haver outliers. Esse é um ponto de atenção, quando se trata da performance de um serviço crítico.  

Avaliando outras métricas

Para confrontar e validar nossa interpretação, ou ainda, apenas para visualizar os valores coletados, podemos pegar um simples gráfico no Zabbix e ajustar o deslocamento de tempo. Vejamos. Na edição do gráfico, ajuste conforme abaixo:   Assim, serão exibidos apenas os dados da hora anterior, a hora cheia. Neste caso, das 11:00 às 11:59.   O gráfico no Zabbix nos permite visualizar o 50º percentil também. Não exibimos a média no gráfico pois ela não seria bem representada visualmente por ter sido coletada apenas 1 vez, logo, não haveria uma linha visualmente interessante como a do 50º percentil. Porém, perceba que os valores da média e do 50º percentil são bem próximos, o que nos dará uma ideia sobre a posição dos valores em relação à essa medida.  

Conclusão (parcial)

Assimetria e curtose, respectivamente o 3º e 4º momentos de uma distribuição, nos ajuda a compreender o comportamento dos ambientes e nos permite ter insights sobre nossa aplicação web em questão. Na maioria das vezes, a assimetria vai existir. Isso é normal e esperado. Já saber que ela é positiva ou negativa, nos permite entender se houve menos ou mais tempos de resposta abaixo da média e ainda, o coeficiente de assimetria nos revela se ela é forte ou apenas moderada. Enquanto isso, a curtose nos ajuda a entender se existe propensão a picos, o que pode causar um alerta em relação à performance do serviço ou aplicação (sim, poderíamos algumas triggers para isso).  

Conclusão

A disciplina de Ciência de Dados pode facilmente aplicada com o Zabbix, principalmente a partir da versão 6.0, com o uso de novas funções como skewness (assimetria) e kurtosis (curtose). Muitos outros indicadores podem ser alcançados com Calculated items ou ainda com funções mais antigas como percentile, forecast, timeleft. Uma das vantagens de se usar o próprio Zabbix para realizar a análise exploratória de dados é que a base é única, uma vez que os dados já estão nela e muitas vezes, alimentados em tempo real, o que fantástico, pois não precisaremos inseri-los ou exportá-los para posteriormente serem consumidos por outro software. Está tudo à mão. Nos artigos desta série, tomamos como base alguns dados referentes à hora anterior, a hora completa, mas nada fizemos em relação à hora atual. Se aplicássemos os conceitos estudados nos dados em tempo real, teríamos outros resultados “vivos”, inclusive para apoio à tomada de decisão, pois não estudaremos apenas dados históricos, mas sim, teríamos a oportunidade de mudar o curso dos acontecimentos. Dashboards no Zabbix estão melhorando significativamente. A partir da versão 6.4, além dos widgets nativos, existe ainda a possibilidade de criarmos os nossos próprios. Contudo, há um cuidado a ser tomado quanto à análise exploratória de dados e o perfil do administrador Zabbix mediano: exibir dados além do necessário! Sim, isso pode ser perigoso. Se não atentarmos ao detalhe de exibir apenas o que é útil, seremos infelizes fartados de dados, sem informação alguma. Daí, entra o termo Análise Explanatória de Dados, com técnicas de Storytelling. O mundo perfeito. Espero poder contribuir com mais análises no futuro e adorei ter escrito esta pequena série. Bons estudos!