TPTito Pinardo Gutiérrez
← Volver al rack
English
1U · ZABBIXZabbix 7 LTS · PSK · 4 canales En producción

Posición 16 de 25 en el rack · En producción

Unidad 1U · Observabilidad

Zabbix · métricas y avisos

De 178 avisos dobles a solo lo grave

Cada contenedor y el propio servidor llevan un agente que manda sus métricas cifradas con una clave propia: CPU, memoria, discos, RAID, ZFS, salud SMART, contenedores Docker. Zabbix decide qué es un problema, avisa por el canal que toca según la gravedad y avisa también cuando se arregla.

Cómo está aislado
Contenedor sin privilegios, SSH parado y enmascarado, entrada rechazada salvo desde los agentes y la puerta interna. Su API solo escucha hacia dentro.
Qué no puede hacer
Los agentes no aceptan órdenes remotas ni tienen acceso al socket de Docker: unos colectores de solo lectura dejan los datos en JSON.
Avisos
Un aviso por incidencia y su recuperación, sin repetir cada hora. Por gravedad: Discord desde media, correo y Element solo lo alto.
  • 82 %de los avisos venían de un solo trigger mal planteado
  • 1 PSKpor agente, guardada cifrada
  • 1 comandopara registrar un contenedor nuevo
  • 90 díasde eventos y tendencias

Su código, en abierto Versión pública del repositorio: sin IPs ni secretos.

La monitorización por dentro

Cada máquina manda sus métricas; aquí se decide qué es un problema y a quién se avisa. Elige un recorrido.

Hermesde visita en la unidad

Pulsa una pieza o elige un recorrido. Si vienes de una habilidad, ya están encendidas las piezas donde la uso.

      Un disco empieza a fallar
      1. Colectores de solo lectura — Un colector ve un atributo SMART que empeora.
      2. Agente de Zabbix — El agente lo manda.
      3. Cifrado con clave propia — Cifrado con su clave.
      4. Servidor Zabbix — El servidor lo recibe.
      5. Reglas de problema — Un trigger lo convierte en problema.
      6. Reparto por gravedad — Por su gravedad, va al chat.
      7. Sala de alertas (Matrix) — A la sala de alertas, cifrado.
      8. Yo — Me llega al móvil.
      9. Aviso de recuperación — Cuando se arregla, llega el aviso de recuperación.
      Un contenedor nuevo entra en la flota
      1. Script de registro — Lanzo el script de registro con el nombre del contenedor.
      2. API de Zabbix — Por el hipervisor, crea el host en la API.
      3. Servidor Zabbix — El servidor ya lo conoce.
      4. Claves en el vault — La clave nueva va al vault cifrado.
      5. Agente de Zabbix — Ansible instala el agente con esa clave.
      6. Cortafuegos del servidor — Su dirección se añade al cortafuegos del servidor.
      7. Servidor Zabbix — Y empiezan a llegar datos.
      Cómo se apagó el ruido
      1. Reglas de problema — Antes de tocar nada, medí una semana de avisos: 178, cada uno dos veces.
      2. Reparto por gravedad — Todo desde gravedad «aviso», por correo y por Discord a la vez.
      3. Correo — El correo pasa a solo lo alto.
      4. Canales de Discord — Discord, desde media.
      5. Yo — Y lo leo sin agobio.
      6. Reglas de problema — El trigger que causaba el 82 % se desactiva donde no medía nada real.
      De Zabbix a esta web
      1. Historial — El historial dice qué agentes informaron cada hora.
      2. Hermes — Hermes lo lee para responder.
      3. Esta web — Y esta web publica la disponibilidad como cobertura: horas con datos entre horas esperadas.
      Abro el panel
      1. Yo — Desde casa o la VPN.
      2. Puerta interna — Puerta interna con doble factor.
      3. Servidor Zabbix — Y después el login de Zabbix.
      4. Historial — Para mirar el historial.
      1. Yo

        El que recibe los avisos y los tiene que creer.

      2. Canales de Discord

        Un canal por gravedad y otro para las recuperaciones.

      3. Sala de alertas (Matrix)

        Solo lo de gravedad alta, cifrado de extremo a extremo.

      4. Router

        Se vigila por ping y HTTPS, sin credenciales de administración.

        • MikroTik
      5. Puerta interna

        El panel, solo desde casa o la VPN con doble factor.

      6. Hermes

        Lee una instantánea del estado para responder preguntas.

      7. Agente de Zabbix

        En modo activo: es el agente quien manda los datos. La escucha pasiva solo en loopback y con la CPU limitada al 10 %.

        • Zabbix
      8. Cifrado con clave propia

        Cada agente tiene su clave precompartida. Sin ella, el servidor no acepta sus datos.

        • Zabbix
        • Linux / SSH hardening
      9. Colectores de solo lectura

        Scripts que miran ZFS, RAID, SMART sin despertar discos dormidos y la salud de Docker, y dejan un JSON que el agente lee.

        • Zabbix
      10. Sin ejecución remota

        Las órdenes remotas del agente están prohibidas: comprometer el servidor de monitorización no da control sobre los demás.

        • Linux / SSH hardening
      11. Servidor Zabbix

        Recibe, guarda y evalúa. Versión LTS.

        • Zabbix
      12. Reglas de problema

        Cuándo una métrica es un problema y cuándo deja de serlo. Aquí estaba casi todo el ruido.

        • Zabbix
      13. Historial

        14 días de detalle, 90 de tendencias y eventos.

        • Zabbix
      14. API de Zabbix

        Solo accesible desde dentro del contenedor. El registro de hosts nuevos pasa por el hipervisor.

        • Zabbix
      15. Reparto por gravedad

        Cada gravedad va a su canal. Lo leve no llega al móvil.

        • Zabbix
      16. Correo

        Solo gravedad alta, con TLS verificado.

        • Zabbix
      17. Chat

        Discord desde gravedad media; Element solo lo alto.

        • Zabbix
      18. Aviso de recuperación

        Cada problema avisa también cuando se arregla. Sin eso, no se sabe si sigue.

        • Zabbix
      19. Script de registro

        Da de alta un contenedor nuevo en Zabbix y Wazuh a la vez, con clave nueva, en un solo comando.

        • Ansible
      20. Claves en el vault

        El script escribe la clave del agente directamente en el vault cifrado de Ansible.

        • Ansible
      21. Cortafuegos del servidor

        Solo acepta agentes de direcciones conocidas. Un contenedor nuevo hay que añadirlo también aquí.

        • Linux / SSH hardening
      22. Esta web

        Los LEDs y la disponibilidad del laboratorio salen de aquí, como agregados.

      Lo que uso de mi árbol

      Pulsa una habilidad: se encienden en el mapa las piezas donde la uso y te cuento para qué.

      Wazuh
      Comparte el script de registro: un contenedor nuevo entra en las dos herramientas a la vez.
      Zabbix
      Servidor y agentes activos con PSK, colectores de ZFS, RAID, SMART y Docker, triggers ajustados y avisos por gravedad con recuperación.
      Linux / SSH hardening
      Contenedor sin privilegios ni SSH, entrada rechazada, sin ejecución remota y sin acceso al socket de Docker.
      MikroTik
      El router se vigila por ping y HTTPS, sin credenciales de administración.
      VLANs
      Los agentes de todos los segmentos informan al mismo servidor, que solo acepta direcciones conocidas.
      WireGuard
      Desde la VPN se llega al panel como desde casa, detrás de la puerta interna.
      Ansible
      Instala los agentes con su clave desde el vault; el script de registro la escribe ahí.

      Bitácora de incidencias

      Averías reales. Lee el síntoma, elige la causa que creas y mira cómo se arregló.

      1. #1

        Ocho contenedores en alerta a la vez

        05-10-2026 · ruido

        Cada pocos días, ocho contenedores avisaban a la vez de «carga por CPU por encima de 3 durante 15 minutos». Ninguno estaba haciendo nada.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        En estos contenedores, /proc/loadavg enseña la carga del servidor. Durante la comprobación mensual del RAID el hipervisor llegaba a 50, y dividido entre las 2 CPU de cada contenedor, todos «estaban» a 25.
        Solución
        Desactivar ese trigger en los contenedores y dejarlo solo en el hipervisor, donde mide algo real. La CPU de cada contenedor se sigue vigilando por uso.
        Lección
        Un aviso que salta por algo que no se puede medir así enseña a ignorar los avisos. Comprobar qué mide de verdad la métrica en ese entorno.
      2. #2

        Latencia de disco «demasiado alta»

        08-09-2026 · discos

        Avisos constantes de latencia de lectura y escritura por encima de 20 ms en uno de los discos del sistema.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        SMART limpio y sin errores en el kernel. Es uno de los dos discos mecánicos del RAID del sistema, con una carga real: 15-28 ms es lo esperable.
        Solución
        Subir el umbral a 50 ms para ese disco y su pareja del espejo, no para todos.
        Lección
        Los umbrales por defecto son para un disco genérico. Se ajustan con datos del disco concreto, y para los dos miembros del espejo a la vez.
      3. #3

        Agentes que no daban señales de vida

        16-09-2026 · registro

        Tras registrar varios contenedores nuevos, solo dos empezaron a mandar datos. Los otros se quedaban en «intentando conectar», sin ningún error.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        Los dos que funcionaban reutilizaban direcciones que ya estaban en la lista del cortafuegos del servidor. Los nuevos se descartaban en silencio.
        Solución
        Añadir las direcciones al cortafuegos y llevar ese paso al propio registro: un contenedor nuevo ya no puede quedarse fuera por olvido.
        Lección
        Un fallo que pasa dos veces el mismo día no es mala suerte: es un paso que falta en el procedimiento.

      Contado entero en un artículo:

      Cómo se construyó

      1. 06-09-2026

        Instalación aislada

        • Zabbix y Wazuh en contenedores propios sin privilegios ni SSH.
        • Agentes con clave propia en toda la flota, sin órdenes remotas.
        • Canales de aviso por gravedad.
      2. 16-09-2026

        Registro en un comando

        • Script que da de alta un contenedor en Zabbix y Wazuh y guarda la clave en el vault.
        • Cortafuegos del servidor incluido en el registro.
      3. Septiembre y octubre de 2026

        Menos ruido

        • Umbrales de disco ajustados al disco real.
        • Una semana de avisos medida antes de cambiar nada.
        • Correo solo para lo alto y el trigger engañoso, fuera.

      Decisiones (y por qué)

      • Quién inicia la conexión

        El agente, en modo activo

        Así el servidor no necesita llegar a cada máquina: solo las máquinas al servidor. Una superficie menos.

      • Cómo se mira Docker

        Colectores de solo lectura, sin socket

        Dar el socket de Docker al usuario de monitorización es darle el servidor. Un script con permisos mínimos deja el estado en un fichero.

      • Cómo se decide qué avisar

        Midiendo primero

        Bajar umbrales a ojo esconde problemas reales. Contar qué llegaba, cuánto y desde dónde dijo qué sobraba.

      Lo que aprendí

      • Un aviso que no se cree es peor que ninguno: se mide y se ajusta.
      • Comprobar qué significa una métrica dentro de un contenedor.
      • Lo que falla dos veces se mete en el procedimiento.

      Lo siguiente

      • Repetir la medición de avisos tras unas semanas para confirmar el efecto.
      • Vigilar también que cada servicio responde a sus usuarios, no solo que su agente informa.

      ¿Hablamos?

      Puedo contar cualquiera de estas decisiones en detalle en una entrevista.

      Descargar CV Contactar ← Volver al rack

      Reconstrucción a partir de mi documentación: sin direcciones, nombres de equipos ni credenciales.