introduction
L'une des tâches des systèmes de surveillance informatique est la collecte, le stockage et l'analyse de diverses métriques caractérisant à la fois l'état de divers éléments de l'infrastructure informatique (charge CPU, RAM libre, espace disque libre, etc.), et l'état de diverses activités. processus. Afin d'appliquer le vaste appareil mathématique d'analyse statistique, il est souvent plus pratique de présenter ces données sous la forme de séries chronologiques ordonnées des variables correspondantes. Un bon outil pour le traitement des séries chronologiques en Python est une combinaison de trois modules: pandas, scipy et statsmodels ( pandas.pydata.org , scipy.stats , statsmodels.org), qui fournissent un large éventail de classes et de fonctions pour la construction de séries chronologiques, pour l'évaluation de nombreux modèles statistiques différents, ainsi que pour la réalisation de tests statistiques et l'examen de données statistiques. De tous les freaks mathématiques contenus dans ces modules, en particulier dans cet article, des algorithmes seront décrits, en particulier l'analyse de corrélation de séries chronologiques de métriques d'infrastructure informatique, que nous utilisons pour l'analyse des causes profondes de la plate-forme 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... Dans le module scipy, vous pouvez construire un dendrogramme à partir de la matrice de corrélation en plusieurs lignes:
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()
La figure 11 montre un dendrogramme obtenu à partir de la matrice de corrélation de la série chronologique de la métrique de santé de 150 unités de configuration de la figure 3, dans lequel l'algorithme de clustering hiérarchique de différentes couleurs a mis en évidence les clusters KE avec le comportement corrélé des métriques, en fait, divisé l'ensemble des systèmes KE en groupes apparentés (sous-systèmes) ... En l'absence de système PCM, une telle partition révèle déjà une certaine structure du système et peut être utile, par exemple, lors de la recherche des causes profondes des incidents.
Figure 11. Dendrogramme de la matrice de corrélation des séries chronologiques de métriques de santé pour les 150 UC les plus volatiles du système.