Gestion des incidents pour les équipes haute vélocité
Post-mortems des incidents
Chez Atlassian, nous pratiquons les post-mortems sans reproche pour veiller à comprendre et à corriger la cause profonde de chaque incident dont le niveau de gravité est 2 ou plus. Voici une version résumée de notre documentation interne décrivant la façon dont nous réalisons les post-mortems chez Atlassian.
Obtenir le manuel en version imprimée ou au format PDF
Nous disposons d'un nombre limité de versions imprimées de notre manuel de gestion des incidents que nous fournissons gratuitement. Vous pouvez également télécharger la version PDF.
Champ | Instructions | Exemple |
Résumé de l'incident | Résumez l'incident en quelques phrases. Incluez sa gravité, les raisons et la durée de l'impact. | Entre L'événement a été détecté par Cet incident de niveau |
Prémices | Décrivez les circonstances qui ont entraîné l'incident, par exemple, changements antérieurs qui a introduit des bugs latents. | À |
Panne | Décrivez ce qui n'a pas fonctionné comme prévu. Joignez des captures d'écran des données ou des graphiques pertinents sur la panne. | |
Impact | Décrivez ce que les clients internes et externes ont vu lors de l'incident. Incluez le nombre de cas de support créés. | Pour Ceci a affecté |
Détection | Comment et quand Atlassian a-t-il détecté l'incident ? Comment le temps de détection pourrait-il être amélioré ? À titre d'exercice de réflexion, comment réduiriez-vous ce temps de moitié ? | L'incident a été détecté lorsque le |
Réponse | Qui a répondu, quand et comment ? Y a-t-il eu des retards ou des obstacles à notre réponse ? | Après avoir été appelé à 14 h 34 (UTC), l'ingénieur KITT s'est connecté à 14 h 38 dans le groupe de discussion sur l'incident. Cependant, l'ingénieur d'astreinte n'avait pas suffisamment d'informations sur la mise à l'échelle automatique d'Escalator ; une autre alerte a donc été envoyée à 14 h 50 et un ingénieur KITT de haut niveau a rejoint le groupe à 14 h 58. |
Récupération | Décrivez comment et quand le service a été rétabli. Comment en êtes-vous arrivé au stade où vous avez compris comment réduire l'impact ? Questions supplémentaires à poser en fonction du scénario : Comment améliorer le temps d'atténuation ? À titre d'exercice de réflexion, comment réduiriez-vous ce temps de moitié ? | La reprise était une réponse à trois volets :
|
Chronologie | Fournissez une chronologie détaillée des incidents horodatée avec les fuseaux horaires. Indiquez toutes les prémices ; début de l'impact ; temps de détection ; remontées, décisions et changements ; et fin de l'impact. | Toutes les heures correspondent au fuseau UTC. 11 h 48 - Mise à niveau K8S 1.9 du plan de contrôle terminée12 h 46 - Fin de la mise à niveau de Goliath vers la V1.9, y compris la mise à l'échelle automatique du cluster et l'instance du planificateur BuildEng 14 h 20 - Build Engineering signale un problème au KITT Disturbed 14 h 27 - KITT Disturbed commence à enquêter sur les pannes d'une instance EC2 spécifique (ip-203-153-8-204) 14 h 42 - KITT Disturbed isole le nœud spécifique 14 h 49 - BuildEng signale que le problème affecte plusieurs nœuds. 86 instances du problème montrent que les pannes sont plus systémiques 15 h 00 - KITT Disturbed suggère de passer au planificateur standard 15 h 34 - BuildEng signale la panne de 300 pods 16 h 00 - BuildEng arrête tous les builds défaillants avec des rapports OutOfCpu 16 h 13 - BuildEng signale que les pannes sont récurrentes avec les nouvelles versions et ne sont pas seulement transitoires. 16 h 30 - KITT reconnaît les pannes comme un incident et les gère en tant que tel. 16 h 36 - KITT désactive la mise à l'échelle automatique d'Escalator pour l'empêcher de retirer de la capacité de calcul afin de résoudre le problème. 16 h 40 - KITT confirme qu'ASG est stable, la charge du cluster est normale et l'impact sur le client est résolu. |
Cinq pourquoi | Utilisez la technique d'identification de la cause profonde. Commencez par l'impact et cherchez pourquoi l'incident s'est produit et pourquoi il a eu cet impact. Continuez à chercher pourquoi jusqu'à ce que vous arriviez à la cause profonde. Documentez vos « pourquoi » sous forme de liste ici ou dans un diagramme joint au ticket. |
|
Cause profonde | Quelle était la cause profonde ? C'est ce qui doit changer pour empêcher que cette classe d'incident ne se reproduise. | Un bug dans la gestion du pool de connexions |
Vérification du backlog | Un élément de votre backlog aurait-il pu empêcher l'incident ou réduire son impact ? Si oui, pourquoi n'a-t-il pas été exécuté ? Ici, une évaluation honnête aide à clarifier les décisions passées en matière de priorité et de risque. | Pas spécifiquement. Les améliorations apportées au typage des flux étaient des tâches en cours connues pour lesquelles des rituels étaient en place (par exemple, ajouter des types de flux lorsque vous changez/créez un fichier). Des tickets de réparation des tests d'intégration ont été créés, mais n'ont pas eu les résultats attendus |
Récurrence | Cet incident (ou un autre incident avec la même cause profonde) s'est-il déjà produit auparavant ? Le cas échéant, pourquoi s'est-il de nouveau produit ? | La même cause profonde a provoqué les incidents HOT-13432, HOT-14932 et HOT-19452. |
Enseignements | Qu'en avons-nous appris ? Discutez de ce qui s'est bien passé, de ce qui aurait pu aller mieux et des possibilités d'amélioration que nous avons eu la chance de trouver. |
|
Actions correctives | Qu'allons-nous faire pour nous assurer que cette classe d'incident ne se reproduise plus ? Qui va prendre les mesures et quand ? Créer des liens de ticket « Action prioritaire » vers les tickets de suivi de chaque action. |
|
Scénario | Cause immédiate et action | Cause profonde | Atténuation des causes profondes |
Les services de l'équipe Stride « Red Dawn » ne disposaient pas de moniteurs Datadog et d'alertes d'astreinte pour leurs services, ou ils n'étaient pas correctement configurés. | Les membres de l'équipe n'ont pas configuré la surveillance et les alertes pour les nouveaux services. Configurez-les pour ces services. | Il n'existe pas de processus pour créer de nouveaux services, notamment de surveillance et d'alerte. | Créez un processus de mise en place de nouveaux services et apprenez à l'équipe à le suivre. |
Stride inutilisable sur IE11 en raison d'une mise à niveau vers Fabric Editor qui ne fonctionne pas sur cette version du navigateur. | La mise à niveau d'une dépendance. Annulez la mise à niveau. | Absence de test de compatibilité entre navigateurs. | Automatisez les tests de compatibilité entre navigateurs en continu. |
Les journaux de Micros EU ne parvenaient pas au service de journalisation. | Le rôle fourni aux micros pour envoyer des journaux était incorrect. Corrigez le rôle. | Nous ne pouvons pas savoir quand la journalisation depuis un environnement ne fonctionne pas. | Ajoutez la surveillance et les alertes sur les journaux manquants pour tous les environnements. |
Déclenchés par un incident AWS antérieur, les nœuds Confluence Vertigo ont épuisé leur pool de connexions à Media, entraînant des erreurs intermittentes de pièces jointes et de médias pour les clients. | Panne AWS. Récupérez le post-mortem AWS. | Un bug dans la gestion du pool de connexions Confluence a entraîné une fuite de connexions lors de la panne, ainsi qu'un manque de visibilité sur l'état des connexions. | Corrigez le bug et ajoutez une surveillance qui détectera les situations similaires futures avant qu'elles aient un impact. |
Catégorie | Définition | Que devriez-vous faire à ce sujet ? |
Bug | Un changement de code réalisé par Atlassian (il s'agit d'un type de changement spécifique) | Test. Canari. Effectuez des déploiements incrémentiels et surveillez-les. Utilisez des flags de fonctionnalité. Parlez à votre ingénieur de la qualité. |
Changement | Un changement apporté par Atlassian (autre qu'au code) | Améliorez la façon dont vous apportez les changements, par exemple, vos examens des changements ou vos processus de gestion des changements. Tout ce qui se rapproche d'un « bug » s'applique également ici. |
Évolutivité | Échec de la mise à l'échelle (p. ex., ignorance des contraintes liées aux ressources ou manque de planification des capacités) | What are your service's resource constraints? Are they monitored and alerted? If you don't have a capacity plan, make one. If you do have one, what new constraint do you need to factor in? |
Architecture | Mauvais alignement de la conception avec les conditions opérationnelles | Révisez votre conception. Devez-vous changer de plateforme ? |
Dépendance | Panne de service tiers (non fourni par Atlassian) | Gérez-vous les risques de panne tierce ? Avons-nous pris la décision métier d'accepter un risque ou devons-nous élaborer des mesures d'atténuation ? Reportez-vous à « Causes profondes avec dépendances » ci-dessous. |
Inconnu | Indéterminable (une action consiste à augmenter la capacité de diagnostic) | Améliorez l'observabilité de votre système en ajoutant des fonctionnalités de journalisation, de surveillance, de débogage et d'autres fonctions similaires. |
Catégorie | Question à poser | Exemples |
Examiner cet incident | « Qu'est-ce qui a provoqué cet incident et pourquoi ? » Déterminer les causes profondes est votre but ultime. | Analyses de journaux, schématisation du parcours de la requête, examen des heap dumps |
Atténuer cet incident | « Quelles actions immédiates avons-nous entreprises pour résoudre et gérer cet événement spécifique ? » | Annulation d'un changement, sélection, apport de changements à des configurations, communication avec les utilisateurs concernés |
Réparer les dommages causés par cet incident | « Comment réparer les dommages directs ou collatéraux causés par cet incident ? » | Restauration des données, réparation des machines, suppression des réacheminements du trafic |
Détecter les incidents futurs | « Comment réduire le délai nécessaire pour détecter précisément un incident similaire ? » | Surveillance, alerte, contrôles de vraisemblance sur les entrées/sorties |
Réduire le nombre d'incidents futurs | « Comment limiter la gravité et/ou la durée des incidents similaires futurs ? » « Comment réduire le pourcentage d'utilisateurs affectés par cette classe d'incident lors de la prochaine occurrence ? » | Dégradation progressive, abandon des résultats non critiques, authentification sans mot de passe, augmentation des pratiques actuelles avec des tableaux de bord ou des playbooks, changements apportés aux processus d'incident |
Prévenir les incidents futurs | « Comment éviter la récurrence de ce type d'incident ? » | Améliorations de la stabilité de la base de code, tests unitaires plus approfondis, validation des entrées et résistance aux erreurs, changements apportés au provisionnement |
Nous suivons aussi les conseils de Sue Lueder et de Betsy Beyer sur la manière de formuler nos actions post-mortems.
Formulation des actions post-mortems :
La formulation adaptée pour une action post-mortem peut faire la différence entre une exécution simple et un délai indéfini dû à une impossibilité ou à la procrastination. Une action post-mortem bien conçue devrait présenter ces propriétés :
Exploitable : indiquez chaque action sous forme de phrase commençant par un verbe. L'action doit donner un résultat utile, et non un processus. Par exemple, « Énumérez la liste des dépendances critiques » est une action adaptée, alors que « Examinez les dépendances » n'en est pas une.
Spécifique : définissez la portée de chaque action le plus précisément possible, en clarifiant ce qui est compris ou non dans le travail.
Limité : formulez chaque action pour expliquer comment indiquer qu'elle est finie, par opposition à laisser l'action ouverte ou en cours.
De… | À… |
Examinez la surveillance pour ce scénario. | (Exploitable) Ajoutez une alerte pour tous les cas où ce service renvoie plus de 1 % d'erreurs. |
Corrigez l'erreur qui a entraîné la panne. | (Spécifique) Gérez le code postal non valide dans le formulaire d'adresse de l'utilisateur en toute sécurité. |
Assurez-vous que l'ingénieur vérifie que le schéma de base de données peut être analysé avant la mise à jour. | (Limité) Ajoutez une vérification automatisée avant la soumission pour les changements de schéma. |
Configuration d'un planning d'astreinte grâce à Opsgenie
Ce tutoriel vous apprendra à configurer un planning d'astreinte, à appliquer des règles de remplacement, à configurer les notifications d'astreinte, etc. Et tout cela, sans quitter Opsgenie.
Lire ce tutorielDécouvrez la communication sur les incidents grâce à Statuspage
Dans ce tutoriel, nous allons vous montrer comment utiliser des modèles d'incident pour communiquer efficacement pendant les pannes. Vous pouvez les adapter à de nombreux types d'interruption de service.
Lire ce tutoriel