Détection des défaillances au moyen de la détection des valeurs aberrantes - Modèles de résilience multi-AZ avancés

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Détection des défaillances au moyen de la détection des valeurs aberrantes

Une lacune par rapport à l'approche précédente peut survenir lorsque vous constatez des taux d'erreur élevés dans plusieurs zones de disponibilité qui se produisent pour unnon corréléraison. Imaginez un scénario dans lequel des instances EC2 sont déployées dans trois zones de disponibilité et où votre seuil d'alarme de disponibilité est de 99 %. Ensuite, une altération d'une seule zone de disponibilité se produit, isolant de nombreuses instances et faisant chuter la disponibilité dans cette zone à 55 %. Dans le même temps, mais dans une zone de disponibilité différente, une seule instance EC2 épuise tout le stockage de son volume EBS et ne peut plus écrire de fichiers journaux. Cela l'amène à renvoyer des erreurs, mais il passe tout de même avec succès les contrôles de santé de l'équilibreur de charge, car ceux-ci ne déclenchent pas l'écriture d'un fichier journal. Cela entraîne une baisse de la disponibilité à 98 % dans cette zone de disponibilité. Dans ce cas, votre alarme d'impact sur une zone de disponibilité unique ne s'activerait pas car vous constatez un impact sur la disponibilité dans plusieurs zones de disponibilité. Toutefois, vous pouvez tout de même atténuer la quasi-totalité de l'impact en évacuant la zone de disponibilité endommagée.

Dans certains types de charges de travail, vous pouvez rencontrer des erreurs de manière constante dans toutes les zones de disponibilité où la métrique de disponibilité précédente peut ne pas être utile. PrendreAWS Lambdapar exemple.AWSpermet aux clients de créer leur propre code à exécuter dans la fonction Lambda. Pour utiliser le service, vous devez télécharger votre code dans un fichier ZIP, y compris les dépendances, et définir le point d'entrée de la fonction. Mais parfois, les clients se trompent sur ce point. Par exemple, ils peuvent oublier une dépendance critique dans le fichier ZIP ou mal saisir le nom de la méthode dans la définition de la fonction Lambda. Cela entraîne l'échec de l'appel de la fonction et une erreur se produit.AWS Lambdavoit ce genre d'erreurs tout le temps, mais cela ne signifie pas que quelque chose n'est pas nécessairement mauvais pour la santé. Toutefois, une altération de la zone de disponibilité peut également provoquer l'apparition de ces erreurs.

Pour trouver un signal dans ce type de bruit, vous pouvez utiliser la détection des valeurs aberrantes afin de déterminer s'il existe un biais statistiquement significatif dans le nombre d'erreurs entre les zones de disponibilité. Bien que nous détections des erreurs dans plusieurs zones de disponibilité, s'il y avait réellement une défaillance dans l'une d'entre elles, nous nous attendrions à voir un taux d'erreur beaucoup plus élevé dans cette zone de disponibilité que dans les autres zones de disponibilité, voire même bien inférieur. Mais combien plus haut ou plus bas ?

Pour effectuer cette analyse, vous pouvez notamment utiliser unchi carré(x.2) test visant à détecter des différences statistiquement significatives dans les taux d'erreur entre les zones de disponibilité (il existede nombreux algorithmes différents pour détecter les valeurs aberrantes). Voyons comment fonctionne le test du Khi deux.

Un test du Khi deux évalue la probabilité qu'une certaine distribution des résultats se produise. Dans ce cas, nous nous intéressons à la distribution des erreurs sur un ensemble défini de AZ. Pour cet exemple, pour faciliter le calcul, considérez quatre zones de disponibilité.

Tout d'abord, établissezhypothèse nulle, qui définit ce que vous pensez être le résultat par défaut. Dans ce test, l'hypothèse nulle est que vous vous attendez à ce que les erreurs soient réparties uniformément dans chaque zone de disponibilité. Ensuite, générez lehypothèse alternative, c'est-à-dire que les erreurs ne sont pas réparties de manière uniforme, ce qui indique une altération de la zone de disponibilité. Vous pouvez désormais tester ces hypothèses à l'aide des données issues de vos métriques. À cette fin, vous allez échantillonner vos mesures pendant une période de cinq minutes. Supposons que vous obteniez 1 000 points de données publiés dans cette fenêtre, dans laquelle vous voyez 100 erreurs au total. Vous vous attendez à ce qu'avec une distribution uniforme, les erreurs se produisent 25 % du temps dans chacune des quatre zones de disponibilité. Supposons que le tableau suivant montre ce à quoi vous vous attendiez par rapport à ce que vous avez réellement vu.

Tableau 1 : Erreurs attendues par rapport aux erreurs réelles observées

AZ Expected Réel
use1-az1 25 20
use1-az2 25 20
use1-az3 25 25
use1-az4 25 35

Vous voyez donc que la distribution n'est pas uniforme en réalité. Toutefois, vous pensez peut-être que cela s'est produit en raison d'un certain niveau de hasard dans les points de données que vous avez échantillonnés. Il existe un certain niveau de probabilité que ce type de distribution se produise dans l'ensemble d'échantillons tout en supposant que l'hypothèse nulle est vraie. Cela conduit à la question suivante : quelle est la probabilité d'obtenir un résultat au moins aussi extrême ? Si cette probabilité est inférieure à un seuil défini, vous rejetez l'hypothèse nulle. Êtrestatistiquement significatif, cette probabilité doit être inférieure ou égale à 5 %.1

1Craparo, Robert M. (2007). « Niveau de signification ». Dans Salkind, Neil J. Encyclopédie des mesures et des statistiques 3. Thousand Oaks, Californie : Publications SAGE. p. 889 à 891. ISBN 1-412-91611-9.

Comment calculez-vous la probabilité d'un tel résultat ? Vous utilisez lex.2statistique qui fournit des distributions très bien étudiées et qui peut être utilisée pour déterminer la probabilité d'obtenir un résultat aussi extrême ou plus extrême à l'aide de cette formule.

Formules pour Ei, OUi, et X2

Pour notre exemple, cela se traduit par :

Formules pour Ei, OUi, et X2en utilisant notre exemple, ce qui donne une réponse de 6.

Alors, qu'est-ce que6moyenne en termes de probabilité ? Vous devez examiner une distribution du Khi deux avec le degré de liberté approprié. La figure suivante montre plusieurs distributions du Khi deux pour différents degrés de liberté.

Graphique montrant les distributions du Khi deux pour différents degrés de liberté

Distributions du Khi deux pour différents degrés de liberté

Le degré de liberté est calculé comme étant inférieur d'un au nombre de choix du test. Dans ce cas, étant donné qu'il existe quatre zones de disponibilité, le degré de liberté est de trois. Ensuite, vous voulez connaître l'aire sous la courbe (l'intégrale) pourx ≥ 6sur lek = 3intrigue. Vous pouvez également utiliser un tableau précalculé avec les valeurs couramment utilisées pour obtenir une approximation de cette valeur.

Tableau 2 : Valeurs critiques du Khi deux

Degrés de liberté Probabilité inférieure à la valeur critique
0,75 0,90 0,95 0,99 0,999
1 1,323 2 706 3 841 6 635 10 828
2 2,73 4 605 5,991 9,210 13 816
3 4.108 6 251 7 815 11 345 16 h 26
4 5 385 7 779 9,48 13, 27 18 467

Pour trois degrés de liberté, la valeur du Khi deux de six se situe entre les colonnes de probabilité de 0,75 et 0,9. Cela signifie qu'il y a plus de 10 % de chances que cette distribution se produise, ce qui n'est pas inférieur au seuil de 5 %. Par conséquent, vous acceptezhypothèse nulleet déterminez qu'il y apasune différence statistiquement significative des taux d'erreur entre les zones de disponibilité.

L'exécution d'un test de statistiques au Khi deux n'est pas prise en charge de manière native dansCloudWatchmathématiques métriques. Vous devrez donc collecter les mesures d'erreur applicables auprès deCloudWatchet exécutez le test dans un environnement informatique tel que Lambda. Vous pouvez décider d'effectuer ce test au niveau d'un contrôleur/d'une action MVC ou d'un microservice individuel, ou au niveau de la zone de disponibilité. Vous devez vous demander si une altération de la zone de disponibilité affecterait chaque contrôleur/action ou microservice de la même manière, ou si une défaillance du DNS pourrait avoir un impact sur un service à faible débit et non sur un service à haut débit, ce qui pourrait masquer l'impact une fois agrégé. Dans les deux cas, sélectionnez les dimensions appropriées pour créer la requête. Le niveau de granularité aura également un impact sur le résultatCloudWatchles alarmes que vous créez.

Collectez la métrique du nombre d'erreurs pour chaque zone de disponibilité et chaque contrôleur/action dans une fenêtre de temps spécifiée. Tout d'abord, calculez le résultat du test du Khi deux comme étant vrai (il y avait un biais statistiquement significatif) ou faux (il n'y en avait pas, c'est-à-dire que l'hypothèse nulle est vraie). Si le résultat est faux, publiez un point de données de 0 dans votre flux de mesures pour obtenir des résultats au Khi deux pour chaque zone de disponibilité. Si le résultat est vrai, publiez un point de données de 1 pour la zone de disponibilité avec les erreurs les plus éloignées de la valeur attendue et un 0 pour les autres (voirAnnexe B — Exemple de calcul du Khi deuxpour un exemple de code pouvant être utilisé dans une fonction Lambda). Vous pouvez suivre la même approche que pour les alarmes de disponibilité précédentes en créant un 3 d'affiléeCloudWatchalarme métrique et un 3 sur 5CloudWatchalarme métrique basée sur les points de données produits par la fonction Lambda. Comme dans les exemples précédents, cette approche peut être modifiée pour utiliser plus ou moins de points de données dans une fenêtre plus ou moins longue.

Ajoutez ensuite ces alarmes à l'alarme de disponibilité de votre zone de disponibilité existante pour la combinaison Contrôleur/Action, comme illustré dans la figure suivante.

Schéma illustrant l'intégration du test statistique du Khi deux aux alarmes composites

Intégration du test statistique du Khi deux aux alarmes composites

Comme indiqué précédemment, lorsque vous intégrez de nouvelles fonctionnalités à votre charge de travail, il vous suffit de créer les fonctionnalités appropriéesCloudWatchdes alarmes métriques spécifiques à cette nouvelle fonctionnalité et mettant à jour le niveau suivant de la hiérarchie des alarmes composite pour inclure ces alarmes. Le reste de la structure d'alarme reste statique.