TPTito Pinardo Gutiérrez
← Artículos
English

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).