Plantilla de Post-Mortem para Incidentes de Go
Referencia densa para post-mortems sin culpa sobre interrupciones de servicios de Go.
Busca en todas las páginas de la documentación
Referencia densa para post-mortems sin culpa sobre interrupciones de servicios de Go.
Copia las secciones en tu documento de incidente.
Recopila evidencia de tiempo de ejecución específica de Go para que los seguimientos sean accionables, no solo narrativos.
| Campo | Valor |
|---|---|
| ID del Incidente | <INC-1234> |
| Título | <Breve descripción orientada al cliente> |
| SEV | <1 / 2 / 3> |
| Fecha (UTC) | <AAAA-MM-DD> |
| Duración | <inicio - fin> |
| Autor | <nombre> |
| Estado | <Borrador / Final> |
| Pregunta | Tu respuesta |
|---|---|
| Impacto en el cliente | <quién, qué se rompió, magnitud del error/latencia> |
| Causa raíz (una línea) | <causa técnica en lenguaje claro> |
| Disparador | <despliegue, tráfico, dependencia, configuración> |
| Corrección enviada | <reversión, parche, escala, flag> |
| Riesgo de recurrencia | <bajo/medio/alto hasta que se completen los seguimientos> |
| Hora (UTC) | Evento | Actor |
|---|---|---|
<t0> | Alerta activada: <nombre de la alerta> | PagerDuty |
<t1> | El responsable de guardia reconoció | <nombre> |
<t2> | Mitigación: <reversión/escala> | <nombre> |
<t3> | Causa raíz identificada | <nombre> |
<t4> | Incidente resuelto | <nombre> |
<t5> | Post-mortem programado | <nombre> |
| Ítem | Valor |
|---|---|
| Versión de Go | <runtime.Version() / etiqueta de imagen> |
| SHA de Compilación | <git sha de /healthz o CI> |
GOMAXPROCS | <entorno o automaxprocs> |
GOMEMLIMIT | <valor o no establecido> |
GOGC | <predeterminado 100 o anulación> |
| Límite de memoria del contenedor | <límite de K8s> |
| Recuento de réplicas | <en el pico> |
| Enlace a métricas de GC / heap | <URL del panel> |
| Artefacto | ¿Recopilado? | Ubicación |
|---|---|---|
| Perfil de CPU (20-30s) | <S/N> | <ruta o enlace> |
Perfil de Heap (inuse + alloc) | <S/N> | <ruta> |
Volcado de Goroutines debug=2 | <S/N> | <ruta> |
Gráfico de sql.DB.Stats() | <S/N> | <enlace> |
| Ejemplos de ID de rastreo | <S/N> | <enlace> |
| Diferencia de despliegue / diferencia de configuración | <S/N> | <enlace> |
| Registros de stack de pánico | <S/N> | <enlace> |
| # | ¿Por qué? |
|---|---|
| 1 | <síntoma> porque <causa inmediata> |
| 2 | Porque <causa más profunda> |
| 3 | Porque <brecha en el proceso o diseño> |
| 4 | Porque <falta de salvaguarda> |
| 5 | Porque <brecha organizacional/técnica raíz> |
| Categoría | Factor |
|---|---|
| Código | <ej. falta de deadline de ctx> |
| Configuración | <ej. MaxOpenConns demasiado alto x réplicas> |
| Observabilidad | <ej. sin alerta de WaitCount> |
| Proceso | <ej. despliegue durante congelación> |
| Dependencia | <ej. failover de DB> |
<ej. runbook de reversión en menos de 5 minutos><ej. perfiles guardados antes del reinicio><ej. token de pprof expirado><ej. sin GOMEMLIMIT en el nuevo servicio>| ID | Acción | Propietario | Prioridad | Vencimiento |
|---|---|---|---|---|
| 1 | <corrección de código> | <equipo> | P0 | <fecha> |
| 2 | <alerta> | <equipo> | P1 | <fecha> |
| 3 | <actualización de runbook> | <equipo> | P2 | <fecha> |
| 4 | <escenario de game day> | <equipo> | P2 | <fecha> |
| Familia de síntomas | Acción típica |
|---|---|
| OOMKilled | Establecer GOMEMLIMIT, corregir fuga, ajustar límite |
| GC / latencia | Reducir ruta de acceso caliente de asignación, canary GOGC |
| Agotamiento de pool | Redimensionar MaxOpenConns, agregar alerta WaitCount |
| Fuga de Goroutine | Cancelación de ctx, CI de goleak, perfil de fuga en staging |
| Pánico | Auditoría de interfaz nula, agregar prueba con -race |
De dos a cuatro páginas incluyendo tablas.
La profundidad importa en la línea de tiempo y los seguimientos, no en la longitud de la prosa.
Enfócate en sistemas y salvaguardas.
La conducta sensible a RRHH está fuera del alcance del documento de ingeniería.
Documenta las hipótesis descartadas, las brechas de evidencia y la monitorización añadida para detectar la próxima ocurrencia.
Sí, para las definiciones de SEV.
Marca claramente lo visible para el cliente frente a lo interno en el resumen ejecutivo.
El propietario del servicio y el EM para P0/P1.
Rastrea en el mismo sistema que el trabajo de ingeniería normal.
La política del equipo varía.
Regla común: cualquier SEV-1/2 o quema de presupuesto de SLO por encima del umbral.
Sí.
Los perfiles previos al rollback demuestran la regresión; los posteriores confirman la corrección.
Almacenamiento de objetos con prefijo de ID de incidente.
Enlaza desde la tabla de evidencia; no pegues binarios en el wiki.
Siempre registra runtime.Version().
El comportamiento de GC difiere entre lanzamientos, especialmente 1.26 Green Tea.
Usa la misma estructura de línea de tiempo.
Redacta detalles sensibles; involucra al equipo de seguridad por separado.
Versiones de Stack: Esta página fue escrita para Go 1.26.x (predeterminado Green Tea GC, go fix modernizers - verifica el parche en la compilación), chi (última versión - verifica en la compilación), gin (última versión - verifica en la compilación), echo (última versión - verifica en la compilación), google.golang.org/grpc (última versión - verifica en la compilación), sigs.k8s.io/controller-runtime (última versión - verifica en la compilación), kubebuilder (última versión - verifica en la compilación), tinygo (última versión - verifica los objetivos de la placa en la compilación), wazero (última versión - verifica en la compilación), y golangci-lint (última versión - verifica el conjunto de linters en la compilación).
Revisado por Chris St. John·Última actualización: 18 jul 2026