Falsas alertas de carga en contenedores LXC: el load average es el del host
Los avisos de monitorización y seguridad eran «súper pesados». Antes de tocar nada medí una semana entera. El 82 % de los avisos de Zabbix salían de un solo trigger que en un contenedor no mide lo que parece, y Wazuh mandaba miles de sesiones rutinarias.
- Zabbix
- LXC
- Wazuh
Medir antes de tocar
- Zabbix: 178 avisos en 7 días, y cada uno llegaba dos veces (correo y Discord, los dos desde la gravedad más baja).
- El 82 % era «Load average per CPU above 3 for 15m», abriéndose y cerrándose en varios contenedores a la vez.
- Wazuh: 9.517 alertas en 7 días hacia Discord, casi todas de nivel 3: aperturas y cierres de sesión de mis propias automatizaciones, SSH correctos y comprobaciones rutinarias.
Por qué saltaba la carga
Dentro de un contenedor LXC, /proc/loadavg enseña la carga del servidor entero, salvo que lxcfs se haya montado para virtualizarla. Leyendo a la vez el host y tres contenedores, salían los mismos números.
El trigger dividía esa carga entre las 2 CPU de cada contenedor. Durante la comprobación mensual del RAID, el host llegaba a una carga de 50, así que cada contenedor «estaba» a 25 por CPU y saltaban ocho a la vez.
# en el host y dentro de un contenedor, al mismo tiempo
cat /proc/loadavg
4.08 8.77 35.28 ...
4.08 8.77 35.28 ...
Los cambios
- Trigger de carga desactivado en los contenedores; solo queda en el hipervisor, donde mide algo real. La CPU de cada contenedor se sigue vigilando por uso.
- Correo solo para gravedad alta; Discord desde media; la sala del móvil, solo lo alto.
- Wazuh a Discord desde nivel 7 (unos 106 a la semana) y correo desde nivel 10 (unos 15). Lo que deja de llegar sigue en el panel.
- Un host fantasma de un contenedor ya retirado, desactivado (no borrado).