Gerenciamento de incidentes para equipes de alta velocidade
Autópsia dos incidentes
Praticamos autópsias sem culpa na Atlassian para garantir que entendemos e remediamos a causa-raiz de cada incidente com um nível de gravidade de 2 ou mais. Aqui está uma versão resumida da nossa documentação interna que descreve como nós executamos as autópsias na Atlassian.
Obtenha o manual em formato impresso ou PDF
Quantidade limitada de versões impressas do Manual de gerenciamento de incidentes com envio grátis ou baixe a versão em PDF.
Campo | Instruções | Exemplo |
Resumo do incidente | Resuma o incidente em algumas frases. Inclua a gravidade, o porquê e por quanto tempo durou. | Entre O evento foi detectado pelo Este incidente |
Precedentes | Descreva as circunstâncias que levaram a este incidente, por exemplo, mudanças anteriores que introduziram bugs latentes. | Às |
Falha | Descreva o que não funcionou como esperado. Anexe capturas de tela de gráficos relevantes ou dados mostrando a falha. | |
Impacto | Descreva o que os clientes internos e externos viram durante o incidente. Inclua quantos casos de suporte foram criados. | Durante Isto afetou |
Detecção | Como e quando a Atlassian detectou o incidente? Como o tempo de detecção poderia ser melhorado? Como exercício mental, como você reduziria o tempo pela metade? | O incidente foi detectado quando o |
Resposta | Quem respondeu, quando e como? Houve algum atraso ou barreira à nossa resposta? | Depois de ser chamado às 14:34 UTC, o engenheiro de KITT ficou online às 14:38 na sala de chat do incidente. Porém, o engenheiro de plantão não tinha experiência suficiente no escalonador automático Escalator, então mais um alerta foi enviado às 14:50 e trouxe o engenheiro sênior de KITT na sala às 14:58. |
Recuperação | Descreva como e quando o serviço foi restaurado. Como você chegou ao ponto onde sabia como mitigar o impacto? Perguntas adicionais para fazer, dependendo do cenário: Como o tempo da mitigação poderia ser melhorado? Como exercício mental, como você reduziria o tempo pela metade? | A recuperação foi uma resposta tripla:
|
Linha do tempo | Forneça uma linha do tempo precisa sobre o incidente, em ordem cronológica, com carimbos de data/hora e fusos horários. Inclua quaisquer precedentes; o início do impacto; o tempo de detecção; os escalonamentos, as decisões e mudanças e o final do impacto. | Todos os horários estão em UTC. 11:48 - Atualização do K8S 1.9 do plano de controle finalizada12:46 - Atualização do Goliath para V1.9 concluída, incluindo o escalonador automático de cluster e a instância do agendador BuildEng 14:20 - O Build Engineering relata um problema ao KITT afetado 14:27 - O KITT afetado começa a investigar as falhas de uma instância específica do EC2 (ip-203-153-8-204) 14:42 - O KITT afetado isola o nó específico 14:49 - O BuildEng relata o problema como afetando mais do que apenas um nó. 86 instâncias do problema mostram que as falhas são mais sistêmicas 15:00 - O KITT afetado sugere alternar para o agendador padrão 15:34 - O BuildEng relata que 300 módulos falharam 16:00 - O BuildEng elimina todos os builds com falha com relatórios OutOfCpu 16:13 - O BuildEng relata que as falhas são recorrentes de forma consistente com novos builds e não são apenas temporárias. 16:30 - O KITT reconhece as falhas como um incidente e as executa com um incidente. 16:36 - O KITT desativa o escalonador automático Escalator para evitar que ele remova computações para aliviar o problema. 16:40 - O KITT confirma que o ASG está estável, que a carga de cluster está normal e que o impacto ao cliente foi resolvido. |
Os cinco porquês | Use a técnica de identificação da causa-raiz. Comece com o impacto e pergunte por que isso aconteceu e por que teve o impacto que teve. Continue perguntando por que até chegar à causa-raiz. Documente seus "porquês" em forma de lista aqui ou em um diagrama anexo ao item. |
|
Causa-raiz | Qual era a causa-raiz? É isto que precisa mudar para impedir a recorrência desta classe de incidentes. | Um bug na manipulação do pool de conexões do |
Verificação do backlog | Existe alguma coisa no seu backlog que poderia ter evitado ou reduzido muito o impacto do incidente? Caso afirmativo, por que não foi feito? Uma avaliação honesta aqui ajuda a esclarecer as decisões passadas sobre prioridade e risco. | Não especificamente. As melhorias aos tipos de fluxo eram tarefas contínuas que tinham rituais estabelecidos (ex. adicionar tipos de fluxo ao modificar/criar um arquivo). Os chamados para corrigir os testes de integração foram realizados, mas não foram bem-sucedidos quando tentados |
Recorrência | Este incidente (com a mesma causa-raiz) já ocorreu antes? Caso afirmativo, por que ele ocorreu de novo? | Esta mesma causa-raiz resultou em incidentes HOT-13432, HOT-14932 e HOT-19452. |
Lições aprendidas | O que aprendemos? Discuta o que deu certo, o que poderia ter sido melhor e onde tivemos sorte de encontrar oportunidades de melhoria. |
|
Ações corretivas | O que a gente vai fazer para garantir que esta classe de incidentes não ocorra mais? Quem vai tomar as ações e quando? Crie links dos itens de "Ação prioritária" para itens que rastreiam cada ação. |
|
Cenário | Causa imediata e ação | Causa-raiz | Mitigação da causa-raiz |
Os serviços da equipe "Red Dawn" do Stride não tinham monitores Datadog e alertas de plantão para seus serviços ou eles não tinham a configuração correta. | Os membros da equipe não configuraram o monitoramento e alerta para os novos serviços. Configure-os para estes serviços. | Não existe um processo para propor novos serviços, o que inclui monitoramento e alertas. | Crie um processo para propor novos serviços e ensinar a equipe a segui-lo. |
O Stride inutilizável no IE11 devido a uma atualização do Fabric Editor que não funciona nesta versão do navegador. | Atualização de uma dependência. Reverta a atualização. | Falta de um teste de compatibilidade entre os navegadores. | Automatize o teste contínuo de compatibilidade entre os navegadores. |
Os logs de micros da UE não estavam alcançando o serviço de criação de log. | A função fornecida aos micros para enviar logs estava incorreta. Corrija a função. | Não temos como saber quando uma criação de log de um ambiente não está funcionando. | Adicione monitoramento e alertas nos logs ausentes para qualquer ambiente. |
Acionado por um incidente anterior do AWS, os nós Vertigo do Confluence esgotaram seu pool de conexão com a mídia, levando a um anexação intermitente e erros de mídia para os clientes. | Falha no AWS. Obtenha a autópsia do AWS. | Um bug na manipulação do pool de conexões do Confluence levou a conexões vazadas sob condição de falha, combinadas com uma falta de visibilidade no estado da conexão. | Corrija o bug e adicione um monitoramento que detectará situações futuras semelhantes antes que elas causem impacto. |
Categoria | Definição | O que você deve fazer sobre isto? |
Bug | Uma mudança de código feita pela Atlassian (este é um tipo específico de mudança) | Teste. Canary. Execute implementações incrementais e as assista. Use sinalizadores de recurso. Converse com o seu engenheiro de qualidade. |
Alterações | Uma mudança feita pela Atlassian (além do código) | Melhore a forma que você realiza as mudanças, por exemplo, suas revisões de mudança ou processos de gerenciamento de mudanças. Tudo que pareça com "bug" também se aplica. |
Escale | Falha em escalonar (p. ex., cega a restrições de recurso ou falta de planejamento da capacidade) | 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? |
Arquitetura | Desalinhamento do projeto com as condições operacionais | Revise o seu projeto. Você precisa mudar de plataforma? |
Dependência | Falha no serviço de terceiros (sem ser da Atlassian) | Você está gerenciando o risco de falha de um terceiro? Nós fizemos decisões de negócios de aceitar um risco ou precisamos criar mitigações? Consulte "Causas-raiz com dependências" abaixo. |
Desconhecido | Indeterminável (a ação é aumentar a capacidade de diagnóstico) | Melhore a observabilidade do seu sistema adicionando criação de logs, monitoramento, depuração e coisas similares. |
Categoria | Perguntas a fazer | Exemplos |
Investigar este incidente | "O que aconteceu para causar este incidente e por quê?" Determinar a causa-raiz é seu principal objetivo. | análise de logs, diagramação do caminho da solicitação, revisão de despejos da pilha |
Mitigar este incidente | "Quais ações imediatas nós tomamos para resolver e gerenciar este evento específico?" | retrocedendo, escolhendo com cuidado, empurrando configurações, comunicando-se com os usuários afetados |
Reparar o dano deste incidente | "Como nós resolvemos danos imediatos ou colaterais deste incidente?" | restaurando dados, corrigindo máquinas, removendo novas rotas de tráfego |
Detectar futuros incidentes | "Como podemos reduzir o tempo para detectar de forma precisa uma falha semelhante?" | monitoramento, alertas, verificações plausíveis na entrada e saída |
Mitigar futuros incidentes | "Como nós podemos reduzir a gravidade e/ou duração de futuros incidentes como este?" "Como podemos reduzir a porcentagem de usuários afetados por esta classe de falhas da próxima vez que acontecer?" | degradação graciosa; eliminação de resultados não críticos; falha aberta; aumentando as práticas atuais com painéis ou guias; mudanças no processo do incidente |
Evitar futuros incidentes | "Como podemos prevenir a recorrência deste tipo de falha?" | melhorias na estabilidade da base de código, testes unitários mais completos, validação das entradas e robustez a condições de erro, provisionamento de mudanças |
Nós também usamos o conselho de Lueder e Beyer sobre como anunciar as ações das nossas autópsias.
Anunciando as ações da autópsia:
O vocabulário correto para a ação da autópsia pode fazer a diferença entre uma conclusão fácil e um atraso indefinido devido à falta de viabilidade ou procrastinação. Uma ação de autópsia bem trabalhada deve ter estas propriedades:
Acionável: formule cada ação como uma frase começando com um verbo. A ação deve gerar um resultado útil, não um processo. Por exemplo, "Enumerar a lista de dependências críticas" é uma boa ação, enquanto "Investigar dependências" não é.
Específica: defina o escopo de cada ação da forma mais restrita possível, esclarecendo o que está incluso no trabalho e o que não está.
Delimitada: formule cada ação para indicar como dizer quando terminar, em oposição a deixar a ação em aberto ou em andamento.
De... | Para... |
Investigar o monitoramento deste cenário. | (Acionável) Adicionar alerta para todos os casos em que este serviço retornar > 1% de erro. |
Corrigir o problema que causou a falha. | (Específica) Lidar com segurança com o código postal inválido na entrada do formulário de endereço do usuário. |
Certifique-se de que o engenheiro verifique se o esquema do banco de dados pode ser analisado antes da atualização. | (Delimitada) Adicionar uma verificação anterior ao envio para as mudanças no esquema. |
Configuração de um on-call schedule com o Opsgenie
Neste tutorial, aprenda a configurar um on-call schedule, aplicar regras de substituição, configurar notificações de plantão e muito mais. Tudo no Opsgenie.
Leia este tutorialAprenda a comunicação de incidentes com o Statuspage
Neste tutorial, você vai ver como usar templates de incidentes para se comunicar com eficácia durante interrupções. Adaptável a muitos tipos de interrupção de serviço.
Leia este tutorial