# 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 ```