Comprobaciones de capacidad y recuperación — 20 octubre 2026¶
Trabajo coordinado con tres agentes, separado del checkout donde Ramon mantiene Vera. Los cambios de Vera no se incluyen en estas publicaciones. Se conservan el hold de actualizaciones, RAM, servicios y calendarios existentes.
Monitor Docker: publicado e instalado¶
Commit d31ec4f, CI39382278806 correcta: tres pruebas con siete escenarios de
fallo, sintaxis Bash y revisión independiente. Los dobles sustituyen Docker y
HTTP; no se contacta al daemon durante las pruebas.
El script anterior ocultaba el fallo del PUT detrás del último echo. Una enumeración Docker fallida también podía convertirse en cero contenedores created. Ahora exige inventario e inspecciones completos antes de publicar; una ausencia en un inventario válido sigue contando como caída. Se rechazan fechas inválidas y listas vacías de imprescindibles. PUT mantiene el reemplazo del grupo y tiene límites de5s de conexión y20s totales.
Instalación selectiva en VM208 alrededor de08:48 CEST: sólo
/home/monxas/scripts/contenedores_caidos.sh, comparando hash e identidad del
original, sintaxis Bash nativa, copia privada y rename atómico. Se conservaron
1000:1000/0755. Backup y recibo:
/home/monxas/.local/state/docker-monitor-protective-xxp7fl83/.
- Hash anterior:
<REDACTED>. - Hash instalado:
<REDACTED>. - El ciclo natural08:48:45–08:48:48 CEST terminó con Result success y ExecMainStatus0; timer activo. No se forzó el timer ni el exportador.
Si falla una recogida permanecen las métricas anteriores en Pushgateway;
este cambio no incorpora una alerta de frescura ni prueba salud funcional de
las aplicaciones. Para recuperar, verificar primero el hash instalado y
restaurar before.sh conservando propietario y modo, sin ejecutar el monitor
como prueba manual.
Lista previa de contenedores NFS: corrección preparada¶
El colector anterior podía convertir errores de Docker en una lista vacía y sobrescribir la última fotografía de contenedores activos. La fuente corregida bufferiza el inventario completo y rechaza fallos de enumeración, inspección o estado desconocido. La fotografía se escribe en temporal privado del mismo directorio y sustituye el baseline sólo después de completar todas las lecturas. El chequeo sano propaga un fallo de snapshot con código1.
Trece pruebas aisladas cubren inventario parcial, inspección, escritura, rename y temporales fallidos, selección de activos y lista vacía válida. Revisión independiente correcta. No instalado en VM208: publicar la fuente no demuestra convergencia de este script.
No cambia la política de recuperación. Quedan pendientes el rebind que puede arrancar dormidos, errores de reparación no propagados, presupuesto temporal y coordinación con el hold. El snapshot no hace atómicas las lecturas de Docker ni garantiza durabilidad frente a SIGKILL o caída del host.
Balloon: rechazo de muestras incompletas¶
La fuente del ayudante manual exige ambos contadores oom_kill y pswpout: ya no convierte su ausencia en cero. La comprobación posterior exige contador OOM igual e incremento de swap entre0 y16384 páginas; rechaza descensos visibles. Seis pruebas aisladas y revisión independiente correctas, sin SSH ni cambios RAM.
No se ha ejecutado el ayudante ni aplicado recortes. La comparación de contadores no identifica el boot del invitado: un reinicio con valores iguales puede pasar inadvertido. No equivale a una prueba de estabilidad.
N‑1: inventario desconocido no es demanda cero¶
El cálculo anterior descartaba el código de salida de ha-manager status y
convertía un fallo de /cluster/resources en una lista vacía. Ambos casos
podían producir líneas N‑1 OK con demanda cero. La fuente valida ahora los
inventarios antes de acreditar margen: respuesta API válida, salida HA con
quórum y servicios legibles, IDs únicos y correspondencia de tipo, propietario
y recursos HA declarados. Una incoherencia produce AVISO sin margen numérico.
Quince pruebas aisladas incluyen el bloque N‑1 real extraído mediante AST, con procesos bloqueados. Cubren fallos API/HA, propietarios incoherentes, HA omitido y duplicados; preservan cero HA legítimo, exclusiones estrictas, reserva2048MiB y falta de medidas de memoria. No se modifica ninguna migración, configuración HA ni asignación de RAM.
Propagación: ansible/roles/proxmox_node/tasks/main.yml copia el helper a
/usr/local/bin/normalidad desde un rol sin tag never. La publicación puede
converger por Ansible-pull natural en ambos nodos. No se ha forzado pull,
instalado aparte ni ejecutado el comprobador completo. Aún no se ha acreditado
la convergencia del hash en runtime.
CI específica: capacity-recovery-tests.yml ejecuta los34 casos de N‑1,
balloon y snapshots con Python3.10 y3.12, sin contactar hosts ni Docker.
La CI y el estado instalado deben comprobarse por separado: una prueba de
fuente correcta no certifica margen actual ni estabilidad física.