Plan2026/08-decision-incidentes.md

244 lines
11 KiB
Markdown
Raw Permalink Normal View History

2026-03-14 19:33:00 +00:00
# Decision: Capa de gestion de incidentes y comunicacion (punto 5)
## Contexto
El equipo gestiona incidencias via Zammad (ticketing) y comunicacion directa (telefono, email). Las alertas de infraestructura se envian a Telegram. No hay herramienta de comunicacion interna del equipo ni gestion formal de guardias. La documentacion operativa esta dispersa en ficheros, cabezas, y CLAUDE.md por servidor.
2 subcapas:
- 5.1 Ticketing, alertas y comunicacion
- 5.2 Documentacion operativa
---
## 5.1 Ticketing, alertas y comunicacion
### Lo que ya existe
| Herramienta | Estado | Funcion |
|-------------|--------|---------|
| **Zammad** | En produccion | Ticketing de soporte, gestion de incidencias de clientes |
| **Telegram** | En uso | Canal de alertas criticas (personal) |
| **Email** | En uso | Alertas informativas, comunicacion con clientes |
| **Telefono** | En uso | Escalado urgente ("atiende este ticket") |
### Opciones evaluadas (futuro)
| Herramienta | Que hace | Recursos | Estado |
|-------------|----------|----------|--------|
| **Mattermost** | Chat de equipo con canales tematicos + webhooks | 512 MB RAM | **Futuro** (mes 3+) |
| **Grafana OnCall** | Gestion de ciclo de vida de alertas (asignar, resolver, escalar, guardias) | Integrado en Grafana | **Futuro** (mes 3+) |
| **PagerDuty/Opsgenie** | Escalado alertas SaaS | SaaS | Descartado (coste, dependencia) |
### DECISION 5.1 (confirmada)
#### Dia 1: Zammad + Telegram (lo que ya funciona)
- **Zammad** sigue como centro de ticketing
- **Telegram** sigue como canal de alertas criticas
- **Email** para alertas informativas
Integraciones nuevas con el stack:
| Integracion | Que aporta | Prioridad |
|-------------|-----------|-----------|
| **Zammad SSO Authentik** | Misma cuenta para todo (SAML/OIDC nativo) | Semana 1 |
| **Alertmanager → Telegram** | Alertas de infraestructura al movil | Semana 1 |
| **Wazuh → Telegram** | Alertas de seguridad al movil | Semana 1 |
| **Alertmanager → Zammad** | Alerta critica no atendida en 15min → crea ticket automaticamente | Mes 2 |
| **Wazuh → Zammad** | Incidente seguridad → ticket prioridad critica | Mes 2 |
| **Panel diagnostico → Zammad** | Cliente adjunta informe al abrir ticket | Mes 3+ |
| **Netbox → Zammad** | Tecnico ve contexto del cliente en el ticket | Mes 3+ |
#### Futuro (mes 3-6): Mattermost
Chat interno del equipo como **panel de notificaciones centralizado**:
| Canal | Que recibe |
|-------|-----------|
| #alertas-criticas | Alertmanager → webhook (solo critical/warning) |
| #seguridad | Wazuh → webhook (FIM, rootkits, anomalias) |
| #backups | Semaphore → webhook (GC/verify fallidos) |
| #infra-general | Deploys, mantenimientos, cambios |
| #tickets | Zammad → webhook (tickets nuevos/escalados) |
Valor: historial buscable, contexto compartido, incorporacion de tecnicos nuevos.
No es para chatear entre el equipo (para eso ya hay canales). Es donde el stack vuelca sus eventos y el equipo tiene visibilidad compartida.
SSO con Authentik (OIDC nativo). Contenedor Docker, 512 MB RAM.
**Cuando desplegar**: cuando el stack base este rodando y el equipo tenga soltura. No antes del mes 3.
#### Futuro (mes 6+): Grafana OnCall
Gestion de ciclo de vida de alertas con rotacion de guardias:
- Alertas activas visibles, resueltas desaparecen
- Asignacion: "yo la miro"
- Escalado automatico: si nadie responde en X min → siguiente tecnico
- Rotacion de guardias (on-call schedule)
- Integrado en Grafana (mismo panel)
- Notifica por Telegram/Mattermost/SMS/llamada
**Cuando desplegar**: cuando el equipo crezca y haya guardias formales. No antes del mes 6.
```
Flujo futuro completo:
Alertmanager detecta problema
├──► Grafana OnCall (gestionar: asignar, resolver, escalar)
├──► Mattermost #alertas (ver: contexto compartido)
└──► Telegram (backup: al movil del que esta de guardia)
```
---
## 5.2 Documentacion operativa
### El problema
- Documentacion dispersa: CLAUDE.md por servidor, ficheros sueltos, conocimiento en cabezas
- Si un tecnico se va, se va su conocimiento
- Si llega un tecnico nuevo, no tiene donde aprender
- Los runbooks (que hacer cuando X pasa) no existen formalmente
- A 100+ servidores, "preguntale a David" no escala
### Opciones evaluadas
| Herramienta | Tipo | Editor | SSO | Recursos | Estado |
|-------------|------|--------|-----|----------|--------|
| **Outline** | Wiki moderna (tipo Notion) | Markdown visual, tiempo real | OIDC nativo | ~1 GB RAM | **ELEGIDA** |
| **Bookstack** | Wiki clasica | WYSIWYG + markdown | OIDC/SAML | 512 MB | Descartada (menos moderna) |
| **MkDocs + Git** | Docs como codigo | Ficheros .md en Forgejo | No aplica | 0 | Complementario (docs tecnicas con codigo) |
| **Confluence** | Wiki empresarial | WYSIWYG | SAML | SaaS/pesado | Descartada (SaaS/coste) |
### DECISION 5.2 (confirmada)
#### Outline para conocimiento operativo
Wiki moderna self-hosted. Interfaz tipo Notion, edicion colaborativa en tiempo real, busqueda full-text, permisos por coleccion.
Estructura propuesta:
```
📁 Runbooks
├── Servidor nuevo: checklist completo
├── Cliente nuevo PBS: paso a paso
├── Incidente de seguridad: protocolo
├── Disco lleno: procedimiento
├── Restore de backup: guia
├── Failover WG Hub: pasos
└── Rotar credenciales: procedimiento
📁 Arquitectura
├── Stack completo (diagramas)
├── Redes WG (topologia IPv6)
├── DNS (esquema PowerDNS + Technitium)
├── Decisiones tecnicas (resumen de estos documentos)
└── Mapa de servicios y VMs
📁 Onboarding
├── Primer dia del tecnico
├── Accesos (SSH bastion, WG, paneles)
├── Herramientas del stack
├── Como usar Semaphore
└── Contactos y escalado
📁 Clientes (acceso restringido)
├── ACME: infra, contactos, particularidades
├── BETA: infra, contactos
└── Plantilla cliente nuevo
```
Permisos:
- Tecnicos: leen y editan todo
- Comerciales: solo ven Clientes + Onboarding
- Clientes: no acceden (su info esta en Zammad + panel diagnostico)
SSO con Authentik desde el dia 1.
#### Forgejo para documentacion tecnica con codigo
Los docs que van pegados al codigo siguen en Forgejo (README.md, comentarios en playbooks, configs documentadas). No duplicar en Outline.
| Tipo de documentacion | Donde |
|-----------------------|-------|
| Runbooks, procedimientos, onboarding | **Outline** |
| Playbooks Ansible, configs, scripts | **Forgejo** (en el repo) |
| Diagramas de arquitectura | **Outline** |
| Decisiones tecnicas (estos documentos) | **Outline** (migrar cuando este listo) |
| API docs, integraciones | **Forgejo** (con el codigo) |
#### Recursos
| Componente | RAM |
|-----------|-----|
| Outline app | ~512 MB |
| PostgreSQL (puede compartir con otros) | ~256 MB |
| Redis (puede compartir con otros) | ~64 MB |
| **Total** | ~800 MB - 1 GB |
Contenedor Docker en VM Servicios.
#### Prioridades despliegue documentacion
| Prioridad | Que | Esfuerzo |
|-----------|-----|----------|
| **Semana 2** | Desplegar Outline con SSO Authentik | 2h |
| **Semana 2** | Crear estructura de colecciones (vacia) | 1h |
| **Mes 1** | Escribir runbooks criticos (servidor nuevo, incidente seguridad, restore) | 1 dia |
| **Mes 1** | Migrar decisiones tecnicas (estos docs) a Outline | 2h |
| **Mes 2** | Documentar onboarding de tecnicos | 4h |
| **Mes 2** | Documentar particularidades por cliente | Progresivo |
---
## Resumen Capa 5 completa (DECISIONES FINALES)
```
┌─────────────────────────────────────────────────────┐
│ CAPA 5: GESTION DE INCIDENTES │
├─────────────────────────────────────────────────────┤
│ │
│ 5.1 TICKETING Y ALERTAS (confirmada) │
│ ┌───────────────────────────────────┐ │
│ │ Zammad (ya en produccion) │ │
│ │ - Ticketing soporte │ │
│ │ - SSO Authentik │ │
│ │ - Integracion Alertmanager/Wazuh │ │
│ │ │ │
│ │ Telegram (alertas criticas) │ │
│ │ - Alertmanager → bot │ │
│ │ - Wazuh → bot │ │
│ │ │ │
│ │ Futuro (mes 3+): │ │
│ │ - Mattermost (notificaciones │ │
│ │ centralizadas del equipo) │ │
│ │ Futuro (mes 6+): │ │
│ │ - Grafana OnCall (guardias, │ │
│ │ escalado, ciclo de vida) │ │
│ └───────────────────────────────────┘ │
│ │
│ 5.2 DOCUMENTACION (confirmada) │
│ ┌───────────────────────────────────┐ │
│ │ Outline (wiki tipo Notion) │ │
│ │ - Runbooks, arquitectura, │ │
│ │ onboarding, clientes │ │
│ │ - Edicion colaborativa real-time │ │
│ │ - SSO Authentik │ │
│ │ - Permisos por coleccion │ │
│ │ │ │
│ │ Forgejo (docs con codigo) │ │
│ │ - README, configs, playbooks │ │
│ │ - Versionado con git │ │
│ └───────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
Recursos Capa 5:
- Zammad: ya existente
- Outline: ~1 GB RAM (contenedor Docker en VM Servicios)
- Mattermost (futuro): 512 MB RAM
- Grafana OnCall (futuro): integrado en Grafana, 0 extra
```