Agent-almanac write-incident-runbook
git clone https://github.com/pjt222/agent-almanac
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/es/skills/write-incident-runbook" ~/.claude/skills/pjt222-agent-almanac-write-incident-runbook-b898ec && rm -rf "$T"
i18n/es/skills/write-incident-runbook/SKILL.mdEscribir Manual de Incidentes
Crea manuales accionables que guíen a los equipos de respuesta a través del diagnóstico y la resolución de incidentes.
Cuándo Usar
- Documentar procedimientos de respuesta para alertas o incidentes recurrentes
- Estandarizar la respuesta a incidentes entre los miembros de la rotación de guardia
- Reducir el tiempo medio de resolución (MTTR) con pasos de diagnóstico claros
- Crear materiales de formación para nuevos miembros del equipo en el manejo de incidentes
- Establecer rutas de escalada y protocolos de comunicación
- Migrar el conocimiento tribal a documentación escrita
- Vincular alertas a procedimientos de resolución (anotaciones de alerta)
Entradas
- Requerido: Nombre/descripción del incidente o alerta
- Requerido: Datos históricos de incidentes y patrones de resolución
- Opcional: Consultas de diagnóstico (Prometheus, logs, trazas)
- Opcional: Contactos de escalada y canales de comunicación
- Opcional: Post-mortems de incidentes anteriores
Procedimiento
Paso 1: Elegir la Estructura de Plantilla del Manual
Consulta Ejemplos Extendidos para archivos de plantilla completos.
Selecciona una plantilla apropiada según el tipo y la complejidad del incidente.
Estructura básica de plantilla de manual:
# [Alert/Incident Name] Runbook ## Overview | Severity | Symptoms ## Diagnostic Steps | Resolution Steps ## Escalation | Communication | Prevention | Related
Plantilla avanzada de manual SRE (extracto):
# [Service Name] - [Incident Type] Runbook ## Metadata - Service, Owner, Severity, On-Call, Last Updated ## Diagnostic Phase ### Quick Health Check (< 5 min): Dashboard, error rate, deployments ### Detailed Investigation (5-20 min): Metrics, logs, traces, failure patterns # ... (see EXAMPLES.md for complete template)
Componentes clave de la plantilla:
- Metadatos: Propiedad del servicio, gravedad, rotación de guardia
- Fase de diagnóstico: Verificaciones rápidas → investigación detallada → patrones de fallo
- Fase de resolución: Mitigación inmediata → corrección de causa raíz → verificación
- Escalada: Criterios y rutas de contacto
- Comunicación: Plantillas internas/externas
- Prevención: Acciones a corto/largo plazo
Esperado: La plantilla seleccionada coincide con la complejidad del incidente, las secciones son apropiadas para el tipo de servicio.
En caso de fallo:
- Comenzar con la plantilla básica, iterar basándose en los patrones del incidente
- Revisar ejemplos de la industria (libros SRE de Google, manuales de proveedores)
- Adaptar la plantilla basándose en los comentarios del equipo después del primer uso
Paso 2: Documentar los Procedimientos de Diagnóstico
Consulta Ejemplos Extendidos para consultas de diagnóstico completas y árboles de decisión.
Crea procedimientos de investigación paso a paso con consultas específicas.
Lista de verificación de diagnóstico de seis pasos:
-
Verificar la salud del servicio: Verificaciones del endpoint de salud y métricas de tiempo de actividad
curl -I https://api.example.com/health # Expected: HTTP 200 OKup{job="api-service"} # Expected: 1 for all instances -
Verificar la tasa de errores: Porcentaje de error actual y desglose por endpoint
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) * 100 # Expected: < 1% -
Analizar los logs: Errores recientes y mensajes de error principales desde Loki
{job="api-service"} |= "error" | json | level="error" -
Verificar la utilización de recursos: Estado de CPU, memoria y pool de conexiones
avg(rate(container_cpu_usage_seconds_total{pod=~"api-service.*"}[5m])) * 100 # Expected: < 70% -
Revisar los cambios recientes: Despliegues, commits de git, cambios de infraestructura
-
Examinar las dependencias: Salud del servicio descendente, latencia de base de datos/API
Árbol de decisión de patrones de fallo (extracto):
- ¿Servicio caído? → Verificar todos los pods/instancias
- ¿Tasa de error elevada? → Verificar tipos de error específicos (5xx, gateway, base de datos, timeouts)
- ¿Cuándo comenzó? → Después del despliegue (rollback), gradual (fuga de recursos), repentino (tráfico/dependencia)
Esperado: Los procedimientos de diagnóstico son específicos, incluyen valores esperados vs actuales, guían al equipo de respuesta a través de la investigación.
En caso de fallo:
- Probar las consultas en el sistema de monitoreo real antes de documentarlas
- Incluir capturas de pantalla de dashboards para referencia visual
- Agregar una sección de "Errores comunes" para pasos frecuentemente omitidos
- Iterar basándose en los comentarios de los equipos de respuesta a incidentes
Paso 3: Definir los Procedimientos de Resolución
Consulta Ejemplos Extendidos para las 5 opciones de resolución con comandos completos y procedimientos de reversión.
Documenta la remediación paso a paso con opciones de reversión.
Cinco opciones de resolución (resumen breve):
-
Revertir el despliegue (más rápido): Para errores post-despliegue
kubectl rollout undo deployment/api-serviceVerificar → Monitorear → Confirmar resolución (tasa de error < 1%, latencia normal, sin alertas)
-
Escalar recursos: Para alta CPU/memoria, agotamiento del pool de conexiones
kubectl scale deployment/api-service --replicas=$((current * 3/2)) -
Reiniciar el servicio: Para fugas de memoria, conexiones bloqueadas, corrupción de caché
kubectl rollout restart deployment/api-service -
Feature Flag / Circuit Breaker: Para errores de características específicas o fallos de dependencias externas
kubectl set env deployment/api-service FEATURE_NAME=false -
Remediación de base de datos: Para conexiones de base de datos, consultas lentas, agotamiento del pool
-- Kill long-running queries, restart connection pool, increase pool size
Lista de verificación de verificación universal:
- Tasa de error < 1%
- Latencia P99 < umbral
- Rendimiento en la línea base
- Uso de recursos saludable (CPU < 70%, Memoria < 80%)
- Dependencias saludables
- Pruebas orientadas al usuario pasan
- Sin alertas activas
Procedimiento de reversión: Si la resolución empeora la situación → pausar/cancelar → revertir → reevaluar
Esperado: Los pasos de resolución son claros, incluyen verificaciones de verificación, proporcionan opciones de reversión para cada acción.
En caso de fallo:
- Agregar pasos más detallados para procedimientos complejos
- Incluir capturas de pantalla o diagramas para procesos de múltiples pasos
- Documentar las salidas de comandos (esperadas vs actuales)
- Crear un manual separado para procedimientos de resolución complejos
Paso 4: Establecer las Rutas de Escalada
Consulta Ejemplos Extendidos para niveles de escalada completos y plantilla de directorio de contactos.
Define cuándo y cómo escalar los incidentes.
Cuándo escalar inmediatamente:
- Interrupción orientada al cliente > 15 minutos
- Presupuesto de error de SLO > 10% agotado
- Pérdida/corrupción de datos o sospecha de brecha de seguridad
- No se puede identificar la causa raíz en 20 minutos
- Los intentos de mitigación fallan o empeoran la situación
Cinco niveles de escalada:
- Guardia primario (respuesta en 5 min): Desplegar correcciones, rollback, escalar (hasta 30 min solo)
- Guardia secundario (automático después de 15 min): Soporte adicional de investigación
- Líder de equipo (decisiones arquitectónicas): Cambios de base de datos, escalada de proveedor, incidentes > 1 hora
- Comandante de incidente (coordinación entre equipos): Múltiples equipos, comunicaciones con clientes, incidentes > 2 horas
- Ejecutivo (nivel C): Gran impacto (>50% usuarios), incumplimiento de SLA, medios/PR, interrupciones > 4 horas
Proceso de escalada:
- Notificar al destinatario con: estado actual, impacto, acciones tomadas, ayuda necesaria, vínculo al dashboard
- Traspaso si es necesario: compartir cronología, acciones, acceso, permanecer disponible
- No guardar silencio: actualizar cada 15 min, hacer preguntas, proporcionar retroalimentación
Directorio de contactos: Mantener una tabla con rol, Slack, teléfono, PagerDuty para:
- Equipos de Plataforma/Base de datos/Seguridad/Red
- Comandante de incidente
- Proveedores externos (AWS, proveedor de base de datos, proveedor de CDN)
Esperado: Criterios claros para la escalada, información de contacto fácilmente accesible, rutas de escalada alineadas con la estructura organizacional.
En caso de fallo:
- Validar que la información de contacto esté actualizada (probar trimestralmente)
- Agregar árbol de decisión para cuándo escalar
- Incluir ejemplos de mensajes de escalada
- Documentar las expectativas de tiempo de respuesta para cada nivel
Paso 5: Crear Plantillas de Comunicación
Consulta Ejemplos Extendidos para todas las plantillas internas y externas con formato completo.
Proporciona mensajes pre-escritos para actualizaciones de incidentes.
Plantillas internas (Slack #incident-response):
-
Declaración inicial:
🚨 INCIDENT: [Title] | Severity: [Critical/High/Medium] Impact: [users/services] | Owner: @username | Dashboard: [link] Quick Summary: [1-2 sentences] | Next update: 15 min -
Actualización de progreso (cada 15-30 min):
📊 UPDATE #N | Status: [Investigating/Mitigating/Monitoring] Actions: [what we tried and outcomes] Theory: [what we think is happening] Next: [planned actions] -
Mitigación completada:
✅ MITIGATION | Metrics: Error [before→after], Latency [before→after] Root Cause: [brief or "investigating"] | Monitoring 30min before resolved -
Resolución:
🎉 RESOLVED | Duration: [time] | Root Cause + Impact + Follow-up actions -
Falsa alarma: Sin impacto, sin seguimiento necesario
Plantillas externas (página de estado):
- Inicial: Investigando, hora de inicio, próxima actualización en 15 min
- Progreso: Causa identificada (amigable para el cliente), implementando corrección, resolución estimada
- Resolución: Hora de resolución, causa raíz (simple), duración, medidas de prevención
Plantilla de correo electrónico para clientes: Cronología, descripción del impacto, resolución, prevención, compensación (si aplica)
Esperado: Las plantillas ahorran tiempo durante los incidentes, garantizan comunicación consistente, reducen la carga cognitiva en los equipos de respuesta.
En caso de fallo:
- Personalizar las plantillas para que coincidan con el estilo de comunicación de la empresa
- Pre-completar las plantillas con tipos de incidentes comunes
- Crear un flujo de trabajo/bot de Slack para completar las plantillas automáticamente
- Revisar las plantillas durante las retrospectivas de incidentes
Paso 6: Vincular el Manual al Monitoreo
Consulta Ejemplos Extendidos para la configuración completa de alertas de Prometheus y el JSON del dashboard de Grafana.
Integra el manual con alertas y dashboards.
Agregar vínculos de manual a las alertas de Prometheus:
- alert: HighErrorRate annotations: runbook_url: "https://wiki.example.com/runbooks/high-error-rate" dashboard_url: "https://grafana.example.com/d/service-overview" incident_channel: "#incident-platform"
Incrustar vínculos de diagnóstico rápido en el manual:
- Dashboard de Resumen del Servicio
- Tasa de Error Última 1h (vínculo directo de Prometheus)
- Logs de Error Recientes (Loki/Grafana Explore)
- Despliegues Recientes (GitHub/CI)
- Incidentes de PagerDuty
Crear panel de dashboard de Grafana con vínculos de manual (panel markdown que lista todos los manuales de incidentes con información de guardia y escalada)
Esperado: Los equipos de respuesta pueden acceder a los manuales directamente desde las alertas o dashboards, las consultas de diagnóstico están pre-completadas, acceso con un clic a las herramientas relevantes.
En caso de fallo:
- Verificar que las URL de los manuales sean accesibles sin VPN/inicio de sesión
- Usar acortadores de URL para vínculos complejos de Grafana/Prometheus
- Probar los vínculos trimestralmente para asegurarse de que no se rompan
- Crear marcadores del navegador para los manuales de uso frecuente
Validación
- El manual sigue una estructura de plantilla consistente
- Los procedimientos de diagnóstico incluyen consultas específicas y valores esperados
- Los pasos de resolución son accionables con comandos claros
- Los criterios de escalada y los contactos están actualizados
- Se proporcionan plantillas de comunicación para audiencias internas y externas
- El manual está vinculado desde las alertas de monitoreo y los dashboards
- El manual se probó durante una simulación de incidente o un incidente real
- Los comentarios de los equipos de respuesta se incorporan al manual
- El historial de revisiones se rastrea con fechas y autores
- El manual es accesible sin autenticación (o en caché sin conexión)
Errores Comunes
- Demasiado genérico: Los manuales con pasos vagos como "verificar los logs" sin consultas específicas no son accionables. Ser específico.
- Información desactualizada: Los manuales que hacen referencia a sistemas o comandos antiguos se vuelven inútiles. Revisar trimestralmente.
- Sin pasos de verificación: La resolución sin verificación lleva a falsos positivos. Siempre incluir "cómo confirmar que está arreglado."
- Procedimientos de reversión faltantes: Cada acción debe tener un plan de reversión. No atrapar a los equipos de respuesta en un estado peor.
- Asumir conocimiento: Los manuales solo para expertos excluyen a los ingenieros junior. Escribir para la persona menos experimentada en rotación.
- Sin propietario: Los manuales sin propietarios se vuelven obsoletos. Asignar equipo/persona responsable de las actualizaciones.
- Oculto detrás de autenticación: Los manuales inaccesibles durante problemas de VPN/SSO son inútiles durante una crisis. Guardar copias en caché o usar una wiki pública.
Habilidades Relacionadas
- Vincular manuales a anotaciones de alerta para acceso inmediato durante incidentesconfigure-alerting-rules
- Incrustar vínculos de manuales en dashboards y paneles de diagnósticobuild-grafana-dashboards
- Incluir consultas de diagnóstico de Prometheus en los procedimientos del manualsetup-prometheus-monitoring
- Referenciar el impacto en el SLO en la clasificación de gravedad del incidentedefine-slo-sli-sla