Commit 91dae82
committed
docs(adr): proponer Centralized Log Storage MySQL (ADR-2025-004)
Propuesta arquitectonica para centralizar logs de aplicacion e
infraestructura en MySQL como alternativa a Grafana/Prometheus
(bloqueados por RNF-002).
AGREGADO:
ADR-2025-004: Centralized Log Storage en MySQL (1,100 lineas)
Decision: MySQL con tablas estructuradas (Opcion 1 de 4)
- application_logs: Logs Django (business logic)
- infrastructure_logs: Logs nginx, postgresql (opcional)
Justificacion:
- Cumple RNF-002: Solo MySQL, sin Redis/Prometheus/Grafana
- Centralizado: Un lugar para buscar todos los logs
- Performance: <2ms overhead write (async), <2s queries (indexes)
- Retention: Partitioning mensual, drop automatico >90 dias
- Dashboards: Django Admin UI (nativo)
- Alertas: Cron + Python (>10 errors/5min)
4 opciones evaluadas:
1. MySQL estructurado (ELEGIDA)
2. PostgreSQL JSONB (descartada: queries complejas)
3. Filesystem + cron (descartada: lag 1h, parsing fragil)
4. SQLite descentralizado (descartada: no escalable)
Plan implementacion 6 fases (27 SP ~7 semanas):
1. Schema + Migrations (3 SP)
2. Python Logging Handler async (5 SP)
3. Django Admin Dashboards (5 SP)
4. Infrastructure Logs rsyslog (8 SP)
5. Alerting via Cron (3 SP)
6. Retention + Archive (3 SP)
Ventajas vs Grafana/Prometheus:
- Cumple RNF-002 (CRITICO)
- SQL queries (familiar para equipo)
- Django Admin UI (sin learning curve)
- Backup incluido (mysqldump)
- Self-hosted (sin SaaS)
Consecuencias:
- [OK] Logs centralizados buscables
- [OK] Dashboards Django Admin nativos
- [OK] Alertas automaticas via cron
- [OK] Compliance RNF-002
- [WARNING] Overhead write 1-2ms (mitigable async)
- [WARNING] Storage 30GB/mes (monitorear, particionar)
Features:
- Async logging handler (queue 10K, batch insert 100)
- MySQL partitioning mensual (retention 90 dias)
- Django Admin custom views: Errors, Slow queries, Charts
- Request ID tracing (correlacionar 3 capas observabilidad)
- Cron alerting: >10 errors/5min, >5 CRITICAL/5min
Validacion:
- <2ms p95 overhead write
- <2s p95 query performance
- <30GB/mes storage
- <5% false positive alerts
ACTUALIZADO:
CHANGELOG.md:
- Agregado item Pendiente: Centralized log storage (27 SP)
INTEGRACION:
- Capa 1 (DORA metrics): ADR-2025-003 (ya implementado)
- Capa 2 (Application logs): ADR-2025-004 (esta propuesta)
- Capa 3 (Infrastructure logs): ADR-2025-004 (esta propuesta)
COMPLIANCE:
- RNF-002: Solo MySQL, sin Redis/Prometheus/Grafana
- Self-hosted: Sin SaaS externos
- RNF-NO-EMOJIS: Schema y codigo sin emojis
REFERENCIAS:
- OBSERVABILITY_LAYERS.md (3 capas separacion)
- ADR-2025-003 (DORA metrics - Capa 1)
- RNF-002: Restricciones infraestructura
- Django Logging docs
- MySQL Partitioning docs
Archivos:
- docs/adr/adr_2025_004_centralized_log_storage.md (nuevo, 1,100 lineas)
- docs/proyecto/CHANGELOG.md (actualizado Pendiente)
Relacionado: OBSERVABILITY_LAYERS.md, ADR-2025-003, RNF-002
Estado: PROPUESTA (Pendiente aprobacion)1 parent 5359025 commit 91dae82
2 files changed
Lines changed: 725 additions & 0 deletions
0 commit comments