Análise de causa raiz de incidentes com base em correlações entre séries temporais de métricas de infraestrutura de TI

Introdução

Uma das tarefas dos sistemas de monitoramento de TI é a coleta, armazenamento e análise de várias métricas que caracterizam o estado de vários elementos da infraestrutura de TI (carga da CPU, RAM livre, espaço livre em disco, etc.) e o estado de vários negócios processos. A fim de aplicar o extenso aparato matemático de análise estatística, muitas vezes é mais conveniente apresentar esses dados na forma de séries temporais ordenadas das variáveis ​​correspondentes. Uma boa ferramenta para processamento de séries temporais em Python é uma combinação de três módulos: pandas, scipy e statsmodels ( pandas.pydata.org , scipy.stats , statsmodels.org), que fornecem uma ampla gama de classes e funções para construir séries temporais, para avaliar muitos modelos estatísticos diferentes, bem como para realizar testes estatísticos e examinar dados estatísticos. De todo o freak show matemático contido nesses módulos, especificamente neste artigo, algoritmos serão descritos, em particular a análise de correlação de séries temporais de métricas de infraestrutura de TI, que usamos para análise de causa raiz na plataforma AIOps monq.





, – , ( ) , – . – , , . , - , , (“correlation does not imply causation”).





, - , . - (): (root cause analysis) ( , “” - ). , .





, - () , .. , ( 5 , ..). , ,   : , 5 , - . , , . 1, pandas - , resample('5min').mean 5- , fillna(method='ffill') ( ) :





import pandas as pd

data=pd.read_csv('TimeSeriesExample.txt',parsedates=[0])

timeSeries=pd.Series(data['KEHealth'].values, index=data['Timestamp'])

timeSeriesReg=timeSeries.resample('5min').mean().fillna(method='ffill')

tsCollection.append(timeSeriesReg) 
      
      



1. .  





Monq “” - . , . , 2.





2. “ ” .  





. pandas , (dataframe) corr(), , ( ):





import matplotlib.pyplot as plt

allKeDF=pd.concat(tsCollection, axis=1)

corrMatrix=allKeDF.corr()

pallet=plt.getcmap('jet')

img=plt.imshow(corrMatrix, cmap=pallet, vmin=-1, vmax=1, aspect='auto')

plt.colorbar(img)
      
      



3. 150 . 





3 150 , . , “ “, . , - ( nan ). , - . , , , . : ,   r>0.7, 65 (0.29% ), r<-0.7 4 (0.02%). : , , . , , r>0.95.





4. - 5- 10-. 





4 , , - 5- 10-. , , , 5, μ=0, σ=0.11. 5- 20- σ=0.16, , , . , , .





5. 5- 10- .





6. .





6, - 7. , , , . ( ) t- , t=|r|√(n-2)/(1-r2), t- t t(α,k) k=n-2, n - . n ( ) . 7 t- α=0.05 . t<t, . t>t, . t scipy:





import scipy as sp
tCrit=sp.stats.t.ppf(1-alpha/2, ndf)
      
      



7. .





, -, : 1) - (root cause analysis) 2) , - . , - - (): , , , - , . , - - . , - , - ( ) , , - , . , - , : 3) . 





, - , , , , . - , , () .   -. 





, - ,   , . , - , .  , - .





monq , . , ( ), , . , , , , . 





- , , , ( r>0.7), 8. , , . 





8. , -38374, .





, -, - . - (, , ..) - . , : r>0.95





9 - , 3200 . 0.95 7470, 2310. 10, t- (c α=0.001 ). , t- , t- 3 . t- α=0.01 27. -, , , , , . 





9. - . 





10. , . 





, , , () , , . - , (), . , Mdist=||1||-Mcorr , ||1|| - , Mcorr... No módulo scipy, você pode construir um dendrograma da matriz de correlação em várias linhas:





import scipy.cluster.hierarchy as hac

z = hac.linkage(1-corrMatrix, method='complete')

hac.dendrogram(z, colorthreshold=3, leaf_rotation=90., labels=allKeDF.columns)

plt.title('       KE', fontsize=12)

plt.ylabel(' ',fontsize=10)

plt.xlabel('KE',fontsize=10)

plt.show()
      
      



A Figura 11 mostra um dendrograma obtido a partir da matriz de correlação da série temporal da métrica de saúde de 150 unidades de configuração da Figura 3, em que o algoritmo de agrupamento hierárquico em cores diferentes destacou os clusters KE com o comportamento correlacionado das métricas, de fato, dividiu todo o conjunto de sistemas KE em grupos relacionados (subsistemas) ... Na ausência de um sistema PCM, tal partição já revela alguma estrutura do sistema e pode ser útil, por exemplo, ao pesquisar as causas raiz de incidentes.





Figura 11. Dendrograma da matriz de correlação de série temporal da métrica de saúde para as 150 UCs mais voláteis do sistema. 








All Articles