244 lines
11 KiB
Markdown
244 lines
11 KiB
Markdown
|
|
# 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
|
||
|
|
```
|