| Campo | Valor |
|---|---|
| ID del Runbook | RB-03 |
| Alcance | Fallo de cache Redis — auth graph y session cache de UMS |
| Responsable | Plataforma / Equipo de Guardia |
| Última Revisión | 2026-05-15 |
| Modo | Síntoma | Causa Probable |
|---|---|---|
| Redis pod crash | Auth latency spikes, cache miss 100% | OOM kill, pod eviction |
| Redis network partition | Connection timeouts en app logs | Network policy change, k8s DNS |
| Redis data corruption | Auth errors inesperados, graph stale | RDB restore from bad snapshot |
| Sentinel failover in progress | Fallos intermitentes, gap de 5-30 s | Primary failover election |
# Ver estado del pod Redis
kubectl get pods -n ums-prod -l app=redis
# Ver logs de Redis
kubectl logs -n ums-prod deploy/redis-master --tail=100
# Testear conectividad desde app pod
kubectl exec -n ums-prod deploy/ums-auth-api -- redis-cli -h redis-master -p 6379 PING
# Ver uso de memoria de Redis
kubectl exec -n ums-prod deploy/redis-master -- redis-cli INFO memory | grep used_memory_human
# Ver clientes conectados
kubectl exec -n ums-prod deploy/redis-master -- redis-cli CLIENT LIST | wc -l
# Ver ratio de cache hit
kubectl exec -n ums-prod deploy/redis-master -- redis-cli INFO stats \
| grep -E "keyspace_hits|keyspace_misses"
# Delete pod para forzar restart (Deployment recreará)
kubectl delete pod -n ums-prod -l app=redis-master
# Esperar a que pod esté ready
kubectl wait pod -n ums-prod -l app=redis-master --for=condition=Ready --timeout=120s
# Verificar replicación (si Sentinel / cluster)
kubectl exec -n ums-prod deploy/redis-master -- redis-cli INFO replication
El repositorio de auth graph de UMS caeback a queries de DB cuando Redis no está disponible (circuit breaker pattern).
# Habilitar flag de modo degradado para skip cache reads
kubectl patch configmap ums-feature-flags -n ums-prod \
--type merge \
-p '{"data":{"REDIS_CACHE_ENABLED":"false"}}'
# Restart pods para recoger flag
kubectl rollout restart deployment/ums-auth-api -n ums-prod
# Monitorear pool de conexión DB — esperar mayor utilización
kubectl exec -n ums-prod deploy/ums-db-pod -- psql -c \
"SELECT count(*) FROM pg_stat_activity WHERE datname='ums_prod';"
Nota: DB fallback es seguro pero aumenta carga de DB ~3x. Notificar a DBA si outage de Redis excede 30 minutos.
# Flush solo keys de auth graph (pattern match)
kubectl exec -n ums-prod deploy/redis-master -- redis-cli \
--scan --pattern "auth:graph:*" | xargs redis-cli DEL
# Full flush (último recurso — todas las caches cold start)
kubectl exec -n ums-prod deploy/redis-master -- redis-cli FLUSHDB ASYNC
# Re-habilitar Redis cache
kubectl patch configmap ums-feature-flags -n ums-prod \
--type merge \
-p '{"data":{"REDIS_CACHE_ENABLED":"true"}}'
kubectl rollout restart deployment/ums-auth-api -n ums-prod
# Verificar que ratio de hit está recuperándose (debe alcanzar > 80% dentro de 10 min)
watch -n 30 "kubectl exec -n ums-prod deploy/redis-master -- redis-cli INFO stats \
| grep -E 'keyspace_hits|keyspace_misses'"
Para tenants críticos, pre-warm el cache de auth graph:
# Trigger projection warm-up via admin API
curl -X POST https://ums.internal/admin/cache/warm-up \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tenants": ["tenant-1", "tenant-2"]}'
PING retorna PONG desde app podREDIS_CACHE_ENABLED seteado a true| Volver al Índice de Operaciones | Volver al Índice Maestro |