Incidentmanagement voor razendsnelle teams
Incident-postmortems
Bij Atlassian voeren we postmortems uit zonder een schuldige aan te wijzen om ervoor te zorgen dat we begrijpen wat de belangrijkste oorzaak van ieder incident met een niveau 2 of hoger is en dat we deze kunnen oplossen. Hier volgt een beknopte versie van onze interne documentatie waarin wordt beschreven hoe we postmortems uitvoeren bij Atlassian.
Krijg ons handboek fysiek of in pdf
We hebben een beperkt aanbod van gedrukte versies van ons Handboek incidentmanagement die we gratis verzenden. Of download een pdf-versie.
Veld | Instructies | Voorbeeld |
Incidentoverzicht | Vat het incident in een paar zinnen samen. Vermeld de ernst van het incident, de reden en hoe lang de impact gevoeld werd. | Tussen De gebeurtenis is gedetecteerd door Dit |
Voorbereiding | Beschrijf de omstandigheden die tot het incident hebben geleid, bijvoorbeeld eerdere wijzigingen die verborgen bugs naar boven brachten. | Om |
Storing | Beschrijf wat er niet zoals verwacht functioneerde. Voeg schermafbeeldingen toe van relevante grafieken of gegevens waarin de fout wordt aangetoond. | |
Impact | Beschrijf wat interne en externe klanten tijdens het incident zagen. Vermeld hoeveel support cases er zijn aangemaakt. | Dit betrof Er werden |
Detectie: | Hoe en wanneer ontdekte Atlassian het incident? Hoe kan het incident sneller ontdekt worden? Hoe zou jij de tijd bijvoorbeeld gehalveerd hebben? | Het incident werd ontdekt toen het |
Reactie | Wie reageerde er en wanneer en hoe? Waren er vertragingen of obstakels in onze reactie? | Nadat de KITT-technicus om 14:34 uur UTC op de hoogte was gesteld, kwam deze om 14:38 uur online in de chatruimte voor incidenten. Deze dienstdoende technicus had echter onvoldoende achtergrondinformatie over de Escalator autoscaler. Om 14:50 uur is daarom nog een melding verzonden en om 14:58 uur was er een senior technicus online in de chatruimte. |
Herstel | Beschrijf hoe en wanneer de service hersteld was. Op welke manier bereikte je het punt dat je wist hoe je het probleem moest oplossen? Aanvullende vragen om te stellen, afhankelijk van het scenario: Hoe kan de tijd om iets op te lossen worden verminderd? Hoe zou jij de tijd bijvoorbeeld gehalveerd hebben? | Herstel was een drieledige reactie:
|
Tijdlijn | Geef een uitgebreide incidenttijdlijn, in chronologische volgorde, voorzien van een tijdstempel met tijdzone(s). Voeg alle lead-ups, begin van impact, detectietijd, escalaties, beslissingen en wijzigingen, en einde van impact toe. | Alle tijden zijn in UTC. 11:48 uur - K8S 1.9 upgrade van besturingsvlak voltooid12:46 uur - Goliath upgrade naar V1.9 voltooid, inclusief cluster-autoscaler en de BuildEng scheduler-instantie 14:20 uur - Build Engineering meldt een probleem aan de KITT Disturbed 14:27 uur - KITT Disturbed begint fouten te onderzoeken op een specifieke EC2-instantie (ip-203-153-8-204) 14:42 uur - KITT Disturbed zet de specifieke node af 14:49 uur - BuildEng meldt dat het probleem meer dan 1 node betreft. 86 instanties van het probleem laten zien dat fouten meer systematisch zijn 15:00 uur - KITT Disturbed stelt voor over te schakelen naar de standaard scheduler 15:34 uur - BuildEng meldt dat 300 pods niet werken 16:00 uur - BuildEng verwijdert alle mislukte versies met OutOfCpu-rapporten 16:13 uur - BuildEng meldt dat de fouten consequent weer optreden in nieuwe versies en niet alleen maar tijdelijk waren. 16:30 uur - KITT herkent de fouten als een incident en voert ze als incident uit. 16:36 uur - KITT schakelt de Escalator autoscaler uit om te voorkomen dat de autoscaler berekening verwijdert om het probleem te verhelpen. 16:40 uur - KITT bevestigt dat ASG stabiel is, dat de cluster load normaal is en de impact op de klant is opgelost. |
Vijf waaroms | Gebruik de identificatietechniek voor hoofdoorzaken. Begin bij de impact en vraag waarom het is gebeurd en waarom het deze impact heeft. Blijf je afvragen waarom totdat je de hoofdoorzaak hebt achterhaald. Noteer de 'waaroms' hier of in een diagram in de bijlage van de issue in een lijst. |
|
Hoofdoorzaak | Wat was de hoofdoorzaak? Dit is wat er moet veranderen om ervoor te zorgen dat dergelijke incidenten nog een keer voorkomen. | Een bug in |
Backlog controleren | Is er iets in de backlog dat dit had kunnen voorkomen of de impact enorm had kunnen verminderen? Zo ja, waarom is dit dan niet gebeurd? Hier helpt een eerlijke assessment om eerdere beslissingen omtrent prioriteit en risico's te verduidelijken. | Niet specifiek. Verbeteringen aan flow typing waren bekende lopende taken waar standaardprocedures voor waren opgesteld (oftewel voeg flow types toe als je een bestand wijzigt/maakt). Er zijn tickets voor het herstellen van integratietests gemaakt, maar ze waren niet succesvol toen ze werden gebruikt |
Herhaling | Is dit incident (met dezelfde hoofdoorzaak) eerder voorgekomen? Zo ja, waarom is het dan weer voorgekomen? | Dezelfde hoofdoorzaak resulteerde in incidenten HOT-13432, HOT-14932 en HOT-19452. |
Geleerde lessen | Wat hebben we geleerd? Bespreek wat er goed ging, wat er beter had gekund en waar we geluk mee hebben gehad om verbeterpunten te vinden. |
|
Corrigerende maatregelen | Wat gaan we doen om ervoor te zorgen dat dergelijke incidenten niet nog een keer voorkomen? Wie voert de maatregelen uit en wanneer? Maak 'Actie met prioriteit' issue-links naar issues die elkaar volgen. |
|
Scenario | Directe oorzaak en actie | Hoofdoorzaak | Hoofdoorzaak |
Stride "Red Dawn" squad's services had geen Datadog-monitors en oproepbare meldingen voor hun services, of ze waren niet correct geconfigureerd. | Teamleden hebben monitoring en meldingen voor nieuwe services niet geconfigureerd. Configureer het voor deze apparaten. | Er is geen proces voor het instellen van nieuwe services, wat onder andere monitoring en meldingen omvat. | Creëer een proces voor het instellen van nieuwe services en leer het team dit proces te volgen. |
Stride onbruikbaar op IE11 door een upgrade naar Fabric Editor die niet werkt op deze browserversie. | Een upgrade van een afhankelijkheid. Maak de upgrade ongedaan. | Gebrek aan compatibiliteitstests tussen browsers. | Automatiseer continue compatibiliteitstests tussen browsers. |
Logbestanden van Micros EU bereikten de logservice niet. | De rol die aan micro's was toegewezen om logbestanden te verzenden, was incorrect. Corrigeer de rollen. | We kunnen niet zien wanneer loggen vanuit een omgeving niet werkt. | Voeg monitoring en meldingen toe aan ontbrekende logbestanden voor alle omgevingen. |
Getriggerd door een eerder AWS incident hebben Confluence Vertigo-knooppunten hun connectiepool naar Media uitgeput, wat geleid heeft tot onderlinge bevestiging en mediafouten voor klanten. | AWS fout. Haal de AWS postmortem op. | Een bug in de verwerking van Confluence connectiepool heeft geleid tot gelekte connecties onder foutcondities, gecombineerd met een gebrek aan zichtbaarheid in verbindingsstatus. | Los de bug op en voeg monitoring toe die vergelijkbare toekomstige situaties detecteert voordat ze een impact hebben. |
Categorie | Definitie | Wat moet je doen? |
Insect | Een wijziging van code gemaakt door Atlassian (dit is een speciaal soort wijziging) | Test. Speel proefkonijn. Rol stapsgewijs uit en houd in de gaten wat er gebeurt. Gebruik markeringsfuncties. Overleg met de kwaliteitsspecialist. |
Wijziging | Een door Atlassian doorgevoerde wijziging (anders dan coderen) | Verbeter de manier waarop je wijzigingen doorvoert, zoals de wijzigingsbeoordelingen of processen voor wijzigingsmanagement. Alles naast 'bug' is hier ook van toepassing. |
Schalen | Niet kunnen schalen (zoals blind voor beperkte beschikbaarheid van resources, of gebrek aan capaciteitsplanning) | 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? |
Architectuur | Ontwerp verkeerde uitlijning met operationele omstandigheden | Bekijk je ontwerp kritisch. Moet je platformen wijzigen? |
Afhankelijkheid | Servicefout van derden (niet van Atlassian) | Beheer je de risico's van fouten door derden? Hebben we het zakelijke besluit genomen om een risico te accepteren, of moeten we oplossingen bedenken? Zie 'Hoofdoorzaken met afhankelijkheden' hieronder. |
Onbekend | Ondefinieerbaar (actie moet kans om te diagnosticeren vergroten) | Verbeter de observeerbaarheid van het systeem door loggen, monitoren, debuggen en vergelijkbare zaken toe te voegen. |
Categorie | Te stellen vraag | Voorbeelden |
Onderzoek dit incident | 'Wat heeft dit incident veroorzaakt en waarom?' De hoofdoorzaak achterhalen is het ultieme doel. | Analyse van logbestanden, diagram maken van het verzoektraject, problemen bekijken |
Los dit incident op | 'Welke maatregelen hebben we onmiddellijk genomen om deze specifieke gebeurtenis op te lossen en te managen?' | Terugdraaien, meest geschikte kiezen, configuraties pushen, communiceren met betrokken gebruikers |
Herstel schade van dit incident | 'Hoe hebben we directe of indirecte schade als gevolg van dit incident hersteld?' | Gegevens herstellen, machines repareren, omleidingen verwijderen |
Ontdek toekomstige incidenten | 'Hoe kunnen we meer tijd vrijmaken om op een accurate manier een vergelijkbare fout te detecteren?' | Monitoren, melden, controle van de juistheid van input/output |
Los toekomstige incidenten op | 'Hoe kunnen we de ernst en/of duur van toekomstige incidenten als deze verhogen?' 'Hoe kunnen we de volgende keer dat het gebeurt het percentage gebruikers dat last heeft van deze fout verminderen?' | Respectvolle afbraak; niet-kritieke resultaten laten vallen; openlijk falen; huidige praktijken aanvullen met dashboards of playbooks; incidentproces wijzigen |
Voorkom toekomstige incidenten | 'Hoe kunnen we voorkomen dat een dergelijke fout nog een keer voorkomt?' | Stabiliteitsverbeteringen in de codebasis, grondigere unittests, invoervalidatie en robuustheid voor foutcondities, wijzigingen op het gebied van provisioning |
We gebruiken ook het advies van Lueder en Beyer over hoe we onze postmortem-acties onder woorden moeten brengen.
Postmortem-acties onder woorden brengen:
De juiste woorden voor een postmortem-actie kunnen het verschil betekenen tussen een eenvoudige afronding en oneindige vertraging als gevolg van niet-haalbaarheid of uitstelling. Een goed doordachte postmortem-actie moet aan de volgende voorwaarden voldoen:
Concreet: Breng iedere actie onder woorden als een zin die met een werkwoord begint. De actie moet resulteren in een bruikbaar resultaat, niet in een proces. 'Som de lijst met kritieke afhankelijkheden op' is bijvoorbeeld een goede actie, terwijl 'Onderzoek afhankelijkheden' dat niet is.
Specifiek: Definieer de omvang van iedere actie zo nauwkeurig mogelijk, en maak duidelijk wat wel en niet onderdeel is van het werk.
Begrensd: Stel iedere actie dusdanig op dat er verteld wordt wanneer het gereed is, in plaats van de actie open te laten of voort te laten slepen.
Van... | Tot... |
Onderzoek monitoring voor dit scenario. | (Concreet) Voeg meldingen toe voor alle gevallen waarin deze service >1% fouten retourneert. |
Los het probleem op dat de onderbreking veroorzaakte. | (Specifiek) Ga zorgvuldig om met postcode in gebruikersadres van input. |
Zorg ervoor dat de technicus controleert of het databaseschema geparseerd kan worden voordat er wordt bijgewerkt. | (Begrensd) Voeg een automatische controle voorafgaand aan verzending toe voor schemawijzigingen. |
Een op afroep-rooster opstellen met Opsgenie
In deze tutorial leer je hoe je een op afroep-rooster instelt, overschrijfregels toepast, op afroep-meldingen configureert en meer, allemaal binnen Opsgenie.
Lees deze tutorialOntdek incidentcommunicatie met Statuspage
In deze tutorial laten we je zien hoe je incidentsjablonen kunt gebruiken om effectief te communiceren tijdens storingen. Aanpasbaar voor de vele soorten serviceonderbrekingen.
Lees deze tutorial